|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Плавающий кораблик
Привет всем. помогите пожалуйста с программой.
Необходимо, чтобы кораблик(которым мы управляли с клавиатуры) плавал рядом с островом, не залазив на него.... Корабль то плавает, но я никак не могу заставить распознать остров, Код:
unit ShipShip; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ActnList, StdCtrls, ExtCtrls; type TForm1 = class(TForm) ActionList1: TActionList; MoveToUp: TAction; MoveToDown: TAction; MoveToLeft: TAction; MoveToRight: TAction; p: TImage; Ostr: TImage; procedure MoveToUpExecute(Sender: TObject); procedure MoveToDownExecute(Sender: TObject); procedure MoveToLeftExecute(Sender: TObject); procedure MoveToRightExecute(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.MoveToLeftExecute(Sender: TObject); begin if (P.Left<>0) then P.Left:=P.Left-1; end; procedure TForm1.MoveToRightExecute(Sender: TObject); begin if (P.Left<>Screen.Width-P.Width) then P.Left:=P.Left+1; end; procedure TForm1.MoveToUpExecute(Sender: TObject); begin if (P.Top<>0) then P.Top:=P.Top-1; end; procedure TForm1.MoveToDownExecute(Sender: TObject); begin if (P.Top<>Screen.Height-P.Height) then P.Top:=P.Top+1; end; end. заранее спасибо Последний раз редактировалось Spike, 20.03.2008 в 09:33. |
#2
|
|||
|
|||
Код:
var R, R1, R2: TRect; procedure TForm1.MoveToLeftExecute(Sender: TObject); begin R1:= p.ClientRect; OffsetRect(R1, p.Left-1, p.Top); R2:= Ostrov.ClientRect; OffsetRect(R2, Ostrov.Left, Ostrov.Top); if (P.Left<>0) and not IntersectRect(R, R1, R2) then P.Left:=P.Left-1; end; |
#3
|
|||
|
|||
Большое спасибо! я попробую!
|