Показать сообщение отдельно
  #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.
Ответить с цитированием