
22.06.2014, 15:30
|
Прохожий
|
|
Регистрация: 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.
|