Главная страница
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.011 c
2-1300902450
Учусь
2011-03-23 20:47
2011.06.26
TWebBrowser и браузер по умолчанию


2-1300355834
nameziz
2011-03-17 12:57
2011.06.26
скачивание файлов http


15-1299856019
anton773
2011-03-11 18:06
2011.06.26
как сравнить время


3-1261134567
pavel_guzhanov
2009-12-18 14:09
2011.06.26
Удаление записей в access


2-1300783231
novichek
2011-03-22 11:40
2011.06.26
EXISTS или IN