Форум: "Прочее";
Текущий архив: 2011.06.26;
Скачать: [xml.tar.bz2];
ВнизЛюди обясните что в этом коде не так??? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c