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

Delphi Sources



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

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

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


Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
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, время: 20:59.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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