Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.03.2008, 08:28
Spike Spike вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 2
Репутация: 10
Вопрос Плавающий кораблик

Привет всем. помогите пожалуйста с программой.
Необходимо, чтобы кораблик(которым мы управляли с клавиатуры) плавал рядом с островом, не залазив на него.... Корабль то плавает, но я никак не могу заставить распознать остров,


Код:
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  
Старый 20.03.2008, 12:40
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Код:
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  
Старый 21.03.2008, 14:11
Spike Spike вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 2
Репутация: 10
По умолчанию

Большое спасибо! я попробую!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter