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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.06.2014, 13:31
Alexandr_17_10 Alexandr_17_10 вне форума
Прохожий
 
Регистрация: 17.06.2014
Сообщения: 27
Версия Delphi: Delphi 7, XE6
Репутация: 10
По умолчанию Проблемы со столкновением

Вот функция столкновения
Код:
Function CollisionpnlStena(var Pers:TImage; var brImage2:TPanel):Boolean;
var val:boolean;
begin
  With pers do begin
    if  brImage2 <> nil then begin
      val:=((brImage2.Left >= Left) and (brImage2.Top >= Top) and
               (brImage2.Left <= Left+Width) and (brImage2.Top <= Top+Height))
              or (( brImage2.Left+brImage2.Width >= Left) and (brImage2.Top+brImage2.Height >= Top) and
                  ( brImage2.Left+brImage2.Width <= Left+Width) and (brImage2.Top+brImage2.Height <= Top+Height))
              or ((brImage2.Left >= Left) and (brImage2.Top+brImage2.Height >= Top) and
                  (brImage2.Left <= Left+Width) and (brImage2.Top+brImage2.Height <= Top+Height))
              or ((brImage2.Left+brImage2.Width >= Left) and (brImage2.Top >= Top) and
                  (brImage2.Left+brImage2.Width <= Left+Width) and (brImage2.Top <= Top+Height));
      if PPLRUD = 1 then
        Pers.Left:=brImage2.Left+brImage2.Width
      else if PPLRUD = 2 then
        Pers.Left:=brImage2.Left-Pers.Width
      else if PPLRUD = 3 then
        Pers.Top:=brImage2.Top+brImage2.Height
      else if PPLRUD = 4 then
        Pers.Top:=brImage2.Top-Pers.Height;
    end;
    result:=val;
  end;
end;
Где
PPLRUD Содержит в какую сторону движется персонаж или какие действия с ним происходят.
Вот создания панелей в качестве стен
Код:
setlength(Stens, 2);
stens[0]:=TPanel.Create(ScrollBox1);
  stens[0].Parent:=ScrollBox1;
  stens[0].Left:=190;
  stens[0].Width:=26;
  stens[0].Top:=0;
  stens[0].Height:=241;
  stens[0].Name:='pnlstens_0';

  stens[1]:=TPanel.Create(ScrollBox1);
  stens[1].Parent:=ScrollBox1;
  stens[1].Left:=405;
  stens[1].Width:=26;
  stens[1].Top:=0;
  stens[1].Height:=241;
  stens[1].Name:='pnlstens_1';
Вот собственно таймер для движения и отловли столконовения
Код:
procedure TFormMain.ZEPEMEWEHNE_PERSONAGESTimer(Sender: TObject);
var i:integer;
begin
  ZEPEMEWEHNE_PERSONAGES.Enabled:=FALSE;
  if PPLRUD=1 then begin
    Personages.Left:=Personages.Left-1;
  end else if PPLRUD=2 then begin
    Personages.Left:=Personages.Left+1;
  end else if PPLRUD=3 then begin
    Personages.Top:=Personages.Top-1;
  end else if PPLRUD=4 then begin
    Personages.Top:=Personages.Top+1;
  end;
  if Length(stens) > 0 then
    for i:= 0 to length(stens)-1 do
      if CollisionpnlStena(Personages, stens[i]) then
        PPLRUD:=0;
  ZEPEMEWEHNE_PERSONAGES.Enabled:=True;
end;
Но столкновение с панелями возникает раньше чем персонаж столкнулся с панелью. Оно возникает как только запускается таймер. При этом i в таймере = 0 это означает что начиная с 1 панели. Как исправить.
Ответить с цитированием
  #2  
Старый 17.06.2014, 17:03
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Похоже что CollisionpnlStena возвращает всегда истину поскольку в условиях сравнения наблюдаются вероятно повторяющиеся, накладывающиеся друг-на-друга параметры - где-то пары скобок не хватает, к сожалению без проверки точнее не видно
Ответить с цитированием
  #3  
Старый 17.06.2014, 20:16
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Есть более простой способ вычислить столкновение прямоугольников:
Код:
Var
  R: TRect;
...
 if IntersectRect(R, Image1.BoundsRect, Image2.BoundsRect)
 then ShowMessage('Collision')
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 18.06.2014, 08:21
Alexandr_17_10 Alexandr_17_10 вне форума
Прохожий
 
Регистрация: 17.06.2014
Сообщения: 27
Версия Delphi: Delphi 7, XE6
Репутация: 10
По умолчанию

для имаджей это столкновение работает для панелей нет
Ответить с цитированием
  #5  
Старый 18.06.2014, 09:42
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Это еще почему? Прямоугольник что в него ни запихай, форму от этого не изменит.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 18.06.2014, 15:43
Alexandr_17_10 Alexandr_17_10 вне форума
Прохожий
 
Регистрация: 17.06.2014
Сообщения: 27
Версия Delphi: Delphi 7, XE6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Это еще почему? Прямоугольник что в него ни запихай, форму от этого не изменит.
Я не про твой код а про свой.
Ответить с цитированием
  #7  
Старый 19.06.2014, 13:56
Alexandr_17_10 Alexandr_17_10 вне форума
Прохожий
 
Регистрация: 17.06.2014
Сообщения: 27
Версия Delphi: Delphi 7, XE6
Репутация: 10
По умолчанию

Ну и как на счет проблемы.
Код:
Var
  R: TRect;
...
 if IntersectRect(R, Image1.BoundsRect, Image2.BoundsRect)
 then ShowMessage('Collision')
Не получится потому что персонаж может находится по середине стены. Если его скорость +1 тогда нет а если скорость +5 px и стена расположена на 4, 0 px
Ответить с цитированием
  #8  
Старый 20.06.2014, 13:17
Alexandr_17_10 Alexandr_17_10 вне форума
Прохожий
 
Регистрация: 17.06.2014
Сообщения: 27
Версия Delphi: Delphi 7, XE6
Репутация: 10
По умолчанию

может кто поможет сделать функцию столкновения чтобы нормально работало.
Ответить с цитированием
  #9  
Старый 20.06.2014, 15:37
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Чтоб проверить нужен исходник, без него как понять что должно происходить, без оного всё вышеприведённое лишь кусок какого-то кода, не больше
Ответить с цитированием
  #10  
Старый 20.06.2014, 18:38
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Меняйте алгоритм движения.
Увеличение скорости движение уменьшает время его движения до конечной точки, но не дает способности мгновенно скакать в пространстве.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #11  
Старый 22.06.2014, 15:30
Alexandr_17_10 Alexandr_17_10 вне форума
Прохожий
 
Регистрация: 17.06.2014
Сообщения: 27
Версия Delphi: Delphi 7, XE6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Чтоб проверить нужен исходник, без него как понять что должно происходить, без оного всё вышеприведённое лишь кусок какого-то кода, не больше
Вот весь код
Код:
unit UnGMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, UnConsole;

type
  TFormMain = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Button1: TButton;
    ZEPEMEWEHNE_PERSONAGES: TTimer;
    TabSheet2: TTabSheet;
    Panel1: TPanel;
    CKPSTNE: TTimer;
    Button2: TButton;
    ScrollBox1: TScrollBox;
    Image1: TImage;
    Label1: TLabel;
    ProgressBar1: TProgressBar;
    Label2: TLabel;
    Label3: TLabel;
    Button3: TButton;
    TabSheet3: TTabSheet;
    procedure Button1Click(Sender: TObject);
    procedure ZEPEMEWEHNE_PERSONAGESTimer(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure CKPSTNETimer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure ZEPEOTPNCOBKA;

var
  FormMain: TFormMain;
  //Определение какая цель
  //0 - дойти до цели и ...
  //1 -
  TypeQELI:array of Integer;
  //Координаты до куда нужно дйойти
  XQELI,YQELI:Array of Integer;
  //определения что делать нужно для выполнения цели 0
  //0 - и перейти на следущий мир
  //1 - и перейти на следующий уровень
  //2 - и открыть дверь
  TypeQELI0TYPE:array of Integer;
  //Анимация открытия двери
  AnimOX, ANIMOY:Array of integer;
  //Ид двери

  //ИД УРОВНЯ
  IDLEVELS:Integer;
  //определения что делать нужно для выполнения цели 1

  //Персонаж
  Personages:TImage;
  //Враги
  AICOMP:Array of TImage;
  //Стены
  Stens, Dveri:array of TPanel;
  //На какой мы цели
  IDQELI:Integer;
  //Переменная для движение персонажа
  {0 - стоит
   1 - Влево
   2 - Вправо
   3 - Вверх
   4 - Вниз
  }
  PPLRUD:Integer;
  //Переменная для скрытия и появления панели игрока
  CKPSTNEINT:Integer;
  //Жизнь персонажа
  livePersonages:Integer;
  TransparentSprites:Boolean;
implementation

{$R *.dfm}

procedure ZEPEOTPNCOBKA;
BEGIN
  if TransparentSprites then
    Personages.Transparent:=true
  else
   Personages.Transparent:=false;
END;

function IsCrossImages(var Pers:TImage; var brImage2:TImage):boolean;
var val:boolean;
begin
  with Pers do begin
    if  brImage2 <> nil then begin
      val:=((brImage2.Left >= Left) and (brImage2.Top >= Top) and
               (brImage2.Left <= Left+Width) and (brImage2.Top <= Top+Height))
              or (( brImage2.Left+brImage2.Width >= Left) and (brImage2.Top+brImage2.Height >= Top) and
                  ( brImage2.Left+brImage2.Width <= Left+Width) and (brImage2.Top+brImage2.Height <= Top+Height))
              or ((brImage2.Left >= Left) and (brImage2.Top+brImage2.Height >= Top) and
                  (brImage2.Left <= Left+Width) and (brImage2.Top+brImage2.Height <= Top+Height))
              or ((brImage2.Left+brImage2.Width >= Left) and (brImage2.Top >= Top) and
                  (brImage2.Left+brImage2.Width <= Left+Width) and (brImage2.Top <= Top+Height));
      if PPLRUD = 1 then
        Pers.Left:=brImage2.Left+brImage2.Width
      else if PPLRUD = 2 then
        Pers.Left:=brImage2.Left-Pers.Width
      else if PPLRUD = 3 then
        Pers.Top:=brImage2.Top+brImage2.Height
      else if PPLRUD = 4 then
        Pers.Top:=brImage2.Top-Pers.Height;
    end;
    result:=val;
  end;
end;

Function CollisionpnlStena(var Pers:TImage; var brImage2:TPanel):Boolean;
var val:boolean;
begin
  With pers do begin
    if  brImage2 <> nil then begin
      val:=((brImage2.Left >= Left) and (brImage2.Top >= Top) and
               (brImage2.Left <= Left+Width) and (brImage2.Top <= Top+Height))
              or (( brImage2.Left+brImage2.Width >= Left) and (brImage2.Top+brImage2.Height >= Top) and
                  ( brImage2.Left+brImage2.Width <= Left+Width) and (brImage2.Top+brImage2.Height <= Top+Height))
              or ((brImage2.Left >= Left) and (brImage2.Top+brImage2.Height >= Top) and
                  (brImage2.Left <= Left+Width) and (brImage2.Top+brImage2.Height <= Top+Height))
              or ((brImage2.Left+brImage2.Width >= Left) and (brImage2.Top >= Top) and
                  (brImage2.Left+brImage2.Width <= Left+Width) and (brImage2.Top <= Top+Height));
      if PPLRUD = 1 then
        Pers.Left:=brImage2.Left+brImage2.Width
      else if PPLRUD = 2 then
        Pers.Left:=brImage2.Left-Pers.Width
      else if PPLRUD = 3 then
        Pers.Top:=brImage2.Top+brImage2.Height
      else if PPLRUD = 4 then
        Pers.Top:=brImage2.Top-Pers.Height;
    end;
    result:=val;
  end;
end;

procedure TFormMain.Button1Click(Sender: TObject);
begin
  SetLength(TypeQELI, 3);

  SetLength(XQELI,3);
  SetLength(YQELI,3);

  SetLength(TypeQELI0TYPE,3);

  SetLength(AICOMP,1);

  setLength(AnimOX, 2);
  setLength(AnimOY, 2);
  setlength(Stens, 2);
  setlength(Dveri, 2);
  TypeQELI[0]:=0;
  TypeQELI[1]:=0;
  TypeQELI[2]:=0;

  XQELI[0]:=0;
  YQELI[0]:=0;

  XQELI[1]:=0;
  YQELI[1]:=0;

  XQELI[2]:=0;
  YQELI[2]:=0;

  TypeQELI0TYPE[0]:=2;

  TypeQELI0TYPE[1]:=2;

  TypeQELI0TYPE[2]:=1;

  IDLEVELS:=0;

  FORMMain.BorderStyle:=bsNone;
  FORMMain.WindowState:=wsMaximized;

  PageControl1.Visible:=False;

  Personages:=TImage.Create(ScrollBox1);
  Personages.Parent:=ScrollBox1;
  Personages.Left:=4;
  Personages.Top:=8;
  Personages.Picture.LoadFromFile('картинки\Алина.bmp');
  Personages.Width:=256;
  Personages.Height:=256;
  ZEPEOTPNCOBKA;

  stens[0]:=TPanel.Create(ScrollBox1);
  stens[0].Parent:=ScrollBox1;
  stens[0].Left:=190;
  stens[0].Width:=26;
  stens[0].Top:=0;
  stens[0].Height:=241;
  stens[0].Name:='pnlstens_0';

  stens[1]:=TPanel.Create(ScrollBox1);
  stens[1].Parent:=ScrollBox1;
  stens[1].Left:=405;
  stens[1].Width:=26;
  stens[1].Top:=0;
  stens[1].Height:=241;
  stens[1].Name:='pnlstens_1';

  Dveri[0]:=TPanel.Create(ScrollBox1);
  Dveri[0].Parent:=ScrollBox1;
  Dveri[0].Left:=190;
  Dveri[0].Width:=121;
  Dveri[0].Top:=241;
  Dveri[0].Height:=26;
  Dveri[0].Name:='pnlDveri_0';

  Dveri[1]:=TPanel.Create(ScrollBox1);
  Dveri[1].Parent:=ScrollBox1;
  Dveri[1].Left:=311;
  Dveri[1].Width:=121;
  Dveri[1].Top:=241;
  Dveri[1].Height:=26;
  Dveri[1].Name:='pnlDveri_1';

  livePersonages:=1000;
  progressbar1.Max:=livePersonages;

  ScrollBox1.Color:=ClRed;
end;

procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  If (Key = 37)or(Key = 65) then
    PPLRUD:=1
  else if (Key = 39)or(Key = 68) then
    PPLRUD:=2
  else if (Key = 38)or(Key = 87) then
    PPLRUD:=3
  else if (Key = 40)or(Key = 83) then
    PPLRUD:=4
  else if key = 192 then
    consoleForm.ShowModal
  else if key = 69 then
    CKPSTNEINT := 2;
end;

procedure TFormMain.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  PPLRUD:=0;
end;

procedure TFormMain.ZEPEMEWEHNE_PERSONAGESTimer(Sender: TObject);
var i:integer;
begin
  ZEPEMEWEHNE_PERSONAGES.Enabled:=FALSE;
  if PPLRUD=1 then begin
    Personages.Left:=Personages.Left-1;
  end else if PPLRUD=2 then begin
    Personages.Left:=Personages.Left+1;
  end else if PPLRUD=3 then begin
    Personages.Top:=Personages.Top-1;
  end else if PPLRUD=4 then begin
    Personages.Top:=Personages.Top+1;
  end;
  if Length(stens) > 0 then
    for i:= 0 to length(stens)-1 do
      if CollisionpnlStena(Personages, stens[i]) then
        PPLRUD:=0;
  ZEPEMEWEHNE_PERSONAGES.Enabled:=True;
end;

procedure TFormMain.FormCreate(Sender: TObject);
begin
  DoubleBuffered:= true;
  CKPSTNEINT:=1;
end;

procedure TFormMain.CKPSTNETimer(Sender: TObject);
begin
  if CKPSTNEINT = 1 then begin
    Button2.Enabled:=False;
    ScrollBox1.Align:=AlNone;
    PageControl1.Align:=AlNone;
    Panel1.Align:=AlNone;
    if Panel1.Top >= -panel1.Height then begin
      panel1.Top := panel1.Top -3;
      If PageControl1.Top > 0 then begin
        PageControl1.Top:=PageControl1.Top-3;
        PageControl1.Height:=PageControl1.Height+3;
        ScrollBox1.Top:=ScrollBox1.Top-3;
        ScrollBox1.Height:=ScrollBox1.Height+3;
      end;
    end else begin
      CKPSTNEINT:=0;
      PageControl1.Align:=AlLeft;
      ScrollBox1.Align:=AlClient;
    end;
  end else if CKPSTNEINT = 2 then begin
    ScrollBox1.Align:=AlNone;
    PageControl1.Align:=AlNone;
    if Panel1.Top < 0 then begin
      panel1.Top := panel1.Top +3;
      if Panel1.Top >= -panel1.Height then begin
        PageControl1.Top:=PageControl1.Top+3;
        PageControl1.Height:=PageControl1.Height-3;
        ScrollBox1.Top:=ScrollBox1.Top+3;
        ScrollBox1.Height:=ScrollBox1.Height-3;
      end;
    end else begin
      CKPSTNEINT:=0;
      PageControl1.Align:=AlLeft;
      ScrollBox1.Align:=AlClient;
      Panel1.Align:=AlTop;
      Button2.Enabled:=true;
    end;
  end;
end;

procedure TFormMain.Button2Click(Sender: TObject);
begin
  CKPSTNEINT:=1;
end;

procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  aPPLICATION.Terminate;
end;

end.
Ответить с цитированием
  #12  
Старый 22.06.2014, 15:34
Alexandr_17_10 Alexandr_17_10 вне форума
Прохожий
 
Регистрация: 17.06.2014
Сообщения: 27
Версия Delphi: Delphi 7, XE6
Репутация: 10
По умолчанию

почему та функция
Код:
function CollisionpnlStenaRect(var Pers:TImage; var brImage2:TPanel):Boolean;
var val:boolean;
R:TRect;
begin
  val:=IntersectRect(R, Pers.BoundsRect, brImage2.BoundsRect);
  if PPLRUD = 1 then
    Pers.Left:=brImage2.Left+brImage2.Width
  else if PPLRUD = 2 then
    Pers.Left:=brImage2.Left-Pers.Width
  else if PPLRUD = 3 then
    Pers.Top:=brImage2.Top+brImage2.Height
  else if PPLRUD = 4 then
    Pers.Top:=brImage2.Top-Pers.Height;
  result:=val;
end;
Возвращает true как происходит это
Код:
procedure TFormMain.Button1Click(Sender: TObject);
begin
  SetLength(TypeQELI, 3);

  SetLength(XQELI,3);
  SetLength(YQELI,3);

  SetLength(TypeQELI0TYPE,3);

  SetLength(AICOMP,1);

  setLength(AnimOX, 2);
  setLength(AnimOY, 2);
  setlength(Stens, 2);
  setlength(Dveri, 2);
  TypeQELI[0]:=0;
  TypeQELI[1]:=0;
  TypeQELI[2]:=0;

  XQELI[0]:=0;
  YQELI[0]:=0;

  XQELI[1]:=0;
  YQELI[1]:=0;

  XQELI[2]:=0;
  YQELI[2]:=0;

  TypeQELI0TYPE[0]:=2;

  TypeQELI0TYPE[1]:=2;

  TypeQELI0TYPE[2]:=1;

  IDLEVELS:=0;

  FORMMain.BorderStyle:=bsNone;
  FORMMain.WindowState:=wsMaximized;

  PageControl1.Visible:=False;

  Personages:=TImage.Create(ScrollBox1);
  Personages.Parent:=ScrollBox1;
  Personages.Left:=4;
  Personages.Top:=8;
  Personages.Picture.LoadFromFile('картинки\Алина.bmp');
  Personages.Width:=256;
  Personages.Height:=256;
  ZEPEOTPNCOBKA;

  stens[0]:=TPanel.Create(ScrollBox1);
  stens[0].Parent:=ScrollBox1;
  stens[0].Left:=190;
  stens[0].Width:=26;
  stens[0].Top:=0;
  stens[0].Height:=241;
  stens[0].Name:='pnlstens_0';

  stens[1]:=TPanel.Create(ScrollBox1);
  stens[1].Parent:=ScrollBox1;
  stens[1].Left:=405;
  stens[1].Width:=26;
  stens[1].Top:=0;
  stens[1].Height:=241;
  stens[1].Name:='pnlstens_1';

  Dveri[0]:=TPanel.Create(ScrollBox1);
  Dveri[0].Parent:=ScrollBox1;
  Dveri[0].Left:=190;
  Dveri[0].Width:=121;
  Dveri[0].Top:=241;
  Dveri[0].Height:=26;
  Dveri[0].Name:='pnlDveri_0';

  Dveri[1]:=TPanel.Create(ScrollBox1);
  Dveri[1].Parent:=ScrollBox1;
  Dveri[1].Left:=311;
  Dveri[1].Width:=121;
  Dveri[1].Top:=241;
  Dveri[1].Height:=26;
  Dveri[1].Name:='pnlDveri_1';

  livePersonages:=1000;
  progressbar1.Max:=livePersonages;

  ScrollBox1.Color:=ClRed;
end;
Хотя код использования этой функции вот
Код:
procedure TFormMain.ZEPEMEWEHNE_PERSONAGESTimer(Sender: TObject);
var i:integer;
begin
  ZEPEMEWEHNE_PERSONAGES.Enabled:=FALSE;
  if PPLRUD=1 then begin
    Personages.Left:=Personages.Left-1;
  end else if PPLRUD=2 then begin
    Personages.Left:=Personages.Left+1;
  end else if PPLRUD=3 then begin
    Personages.Top:=Personages.Top-1;
  end else if PPLRUD=4 then begin
    Personages.Top:=Personages.Top+1;
  end;
  if Length(stens) > 0 then
    for i:= 0 to length(stens)-1 do
      if CollisionpnlStenaRect(Personages, stens[i]) then
        PPLRUD:=0;
  ZEPEMEWEHNE_PERSONAGES.Enabled:=True;
end;

Последний раз редактировалось Alexandr_17_10, 22.06.2014 в 15:56.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter