Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.06.26;
Скачать: CL | DM;

Вниз

Люди обясните что в этом коде не так???   Найти похожие ветки 

 
Fergo ©   (2011-03-12 22:30) [0]


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls, Spin;

type
 TForm1 = class(TForm)
   Image1: TImage;
   Image2: TImage;
   Timer1: TTimer;
   procedure Timer1Timer(Sender: TObject);
   procedure FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
   procedure FormKeyUp(Sender: TObject; var Key: Word;
     Shift: TShiftState);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 speed: byte;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 speed:=5;
 if GetAsyncKeyState(37)<>0 then    //Left
   Begin
     Image1.Left:=Image1.Left-speed;
     if (Image1.Left+Image1.Width>=Image2.Left) and
    (Image1.Left<Image2.Left+Image2.Width) and
    (Image1.Top+Image1.Height>Image2.Top) and
    (Image1.Top<Image2.Top+Image2.Height) then
       begin
         if Image1.Left<>Image2.Left+Image2.Width then Image1.Left:=Image2.Left+Image2.Width;
       end;
   End;
 if GetAsyncKeyState(38)<>0 then    //Up
   Begin
     Image1.Top:=Image1.Top-speed;
    if (Image1.Left+Image1.Width>=Image2.Left) and
    (Image1.Left<Image2.Left+Image2.Width) and
    (Image1.Top+Image1.Height>Image2.Top) and
    (Image1.Top<Image2.Top+Image2.Height) then
       begin
         if Image1.Top<>Image2.Top+Image2.Height then Image1.Top:=Image2.Top+Image2.Height;
       end;

   End;
 if GetAsyncKeyState(39)<>0 then    //Right
   Begin
     Image1.Left:=Image1.Left+speed;
     if (Image1.Left+Image1.Width>=Image2.Left) and
    (Image1.Left<Image2.Left+Image2.Width) and
    (Image1.Top+Image1.Height>Image2.Top) and
    (Image1.Top<Image2.Top+Image2.Height) then
       begin
         if Image2.Left<>Image1.Left+Image1.Width then Image1.Left:=Image2.Left-Image1.Width;
       end;
   End;
 if GetAsyncKeyState(40)<>0 then    //Down
   Begin
     Image1.Top:=Image1.Top+speed;
     if (Image1.Left+Image1.Width>=Image2.Left) and
    (Image1.Left<Image2.Left+Image2.Width) and
    (Image1.Top+Image1.Height>Image2.Top) and
    (Image1.Top<Image2.Top+Image2.Height) then
       begin
         if Image2.Top<>Image1.Top+Image1.Height then Image1.Top:=Image2.Top-Image1.Height;
       end;

   End;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 Timer1.Enabled:=true;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 Timer1.Enabled:=false;
end;

end.


смысл такой.. пытаюсь изообразить столкновение двух компонент Image1 и Image2. Причем при столкновении с любой Speed компоненты должны быть рядышком... так вот, все работает нормально кроме того момента когда "подезжаешь к Image2 слева и потом нажимаеешь вверх или вниз... я не знаю почему именно с этой стороны код ведет себя не так как надо..


 
Fergo ©   (2011-03-12 22:40) [1]

а все сорьте. сам догнал....



Страницы: 1 вся ветка

Текущий архив: 2011.06.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
15-1297596752
KilkennyCat
2011-02-13 14:32
2011.06.26
Любителям собирать компьютеры


2-1300614132
snakeas
2011-03-20 12:42
2011.06.26
Не удается удалить картинку, созданную через jpg.savetofile()


2-1300287870
dvndvn
2011-03-16 18:04
2011.06.26
tray &amp; screen.cursor


3-1261465889
Lowlander
2009-12-22 10:11
2011.06.26
Перенос связанных таблиц Paradox на другой комп.


15-1299765057
Leon-Z
2011-03-10 16:50
2011.06.26
Алгоритмы.