📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls,box, Menus, DXClass, DXInput, DIB, StdCtrls, AppEvnts,mmsystem,unit2;
type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
PaintBox2: TPaintBox;
Image1: TImage;
MainMenu1: TMainMenu;
MenuGame: TMenuItem;
MenuStart: TMenuItem;
MenuPause: TMenuItem;
MenuContinue: TMenuItem;
N1: TMenuItem;
MenuReplay: TMenuItem;
N16: TMenuItem;
MenuExit: TMenuItem;
MenuOption: TMenuItem;
MenuSound: TMenuItem;
N10: TMenuItem;
MenuKeyboard: TMenuItem;
DXTimer1: TDXTimer;
Timer1: TTimer;
Timer2: TTimer;
DXInput1: TDXInput;
Timer3: TTimer;
Panel1: TPanel;
PaintBox3: TPaintBox;
Panel2: TPanel;
PaintBox4: TPaintBox;
Bevel1: TBevel;
Bevel2: TBevel;
Bevel3: TBevel;
Bevel4: TBevel;
Bevel5: TBevel;
Bevel6: TBevel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Timer4: TTimer;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
ApplicationEvents1: TApplicationEvents;
Timer5: TTimer;
N2: TMenuItem;
N3: TMenuItem;
procedure PaintBox1Paint(Sender: TObject);
procedure PaintBox2Paint(Sender: TObject);
procedure MenuStartClick(Sender: TObject);
procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Timer4Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure MenuReplayClick(Sender: TObject);
procedure MenuPauseClick(Sender: TObject);
procedure MenuContinueClick(Sender: TObject);
procedure ApplicationEvents1Activate(Sender: TObject);
procedure ApplicationEvents1Deactivate(Sender: TObject);
procedure Timer5Timer(Sender: TObject);
procedure MenuExitClick(Sender: TObject);
procedure MenuGameClick(Sender: TObject);
procedure MenuOptionClick(Sender: TObject);
procedure MenuMusicClick(Sender: TObject);
procedure MenuAboutClick(Sender: TObject);
procedure MenuSoundClick(Sender: TObject);
procedure MenuKeyboardClick(Sender: TObject);
procedure ApplicationEvents1Minimize(Sender: TObject);
procedure ApplicationEvents1Restore(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
eline2 :integer=24;
eline1:integer=24;
Mmap1,Mmap2:tmapblock;
MboxStale:TBoxStale;
Mbox1,Mbox2:TBoxBlock;
curx1,cury1,curx2,cury2:integer;
Nextbox: array[1..200] of Tboxblock;
next1,Next2:integer;
Nextbox1,nextbox2: Tboxblock;
candown:boolean=true;
count1,count2:integer;
line1,line2:TFline;
// timer1can:boolean=true;
// timer3can:boolean=true;
over1: integer=0;
over2 :integer=0;
lost1,lost2:integer;
win1,win2:integer;
procedure gameover;
procedure drawlittle(can:Tcanvas;box:TBOxBlock);
procedure ranmap(k:integer;var map:tmapblock;m:integer=1);
implementation
var nextS:integer=1;
// FOldStates: TDXInputStates;
{$R sound.res}
{$R *.dfm}
procedure gameover;
begin
if (over1=0) and (over2=0) then exit;
curx1:=-3;
cury1:=-3;
curx2:=-3;
cury2:=-3;
form1.timer1.Enabled:=false;
form1.timer3.Enabled:=false;
//timer4.Enabled:=false;
form1.dxtimer1.Enabled:=false;
initmapb(Mmap1);
initmapb(mmap2);
form1.paintbox1paint(nil);
form1.paintbox2paint(nil);
if (over1=3) and(over2=3) then
begin
//ping
form1.Label5.Caption:='DRAW';
form1.Label6.Caption:='GAME';
form1.Label7.Caption:='DRAW';
form1.Label8.Caption:='GAME';
end else
if over1<over2 then
begin
//1 win
inc(win1);
inc(lost2);
form1.Label5.Caption:='YOU';
form1.Label6.Caption:='WIN';
form1.Label7.Caption:='YOU';
form1.Label8.Caption:='LOSE';
end else
if over2<over1 then
begin
//2 win
inc(win2);
inc(lost1);
form1.Label5.Caption:='YOU';
form1.Label6.Caption:='LOSE';
form1.Label7.Caption:='YOU';
form1.Label8.Caption:='WIN';
end;
over1:=0;
over2:=0;
form1.Label5.Visible:=true;
form1.Label6.Visible:=true;
form1.Label7.Visible:=true;
form1.Label8.Visible:=true;
form1.Label1.Caption:='won '+ inttostr(win1);
form1.Label2.Caption:='lost '+ inttostr(lost1);
form1.Label3.Caption:='won '+ inttostr(win2);
form1.Label4.Caption:='lost '+ inttostr(lost2);
if form1.Menusound.Checked then
PlaySound(PChar('great'), hInstance, snd_ASync or snd_Resource);
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
DrawMap(paintbox1.Canvas,image1.Picture,mmap1);
drawblock(curx1,cury1,paintbox1.Canvas,mbox1,image1.Picture,mmap1);
end;
procedure TForm1.PaintBox2Paint(Sender: TObject);
begin
DrawMap(paintbox2.Canvas,image1.Picture,mmap2);
drawblock(curx2,cury2,paintbox2.Canvas,mbox2,image1.Picture,mmap2);
end;
procedure TForm1.MenuStartClick(Sender: TObject);
begin
timer5.Enabled:=false;
menupause.Enabled:=true;
form1.Label5.Visible:=false;
form1.Label6.Visible:=false;
form1.Label7.Visible:=false;
form1.Label8.Visible:=false;
next1:=1;
next2:=1;
count1:=0;
count2:=0;
Timer2.Enabled:=true;
initmapb(Mmap1);
initmapb(mmap2);
initboxb(mboxstale);
productboxblock(mbox1,mboxstale);
Mbox2:=mbox1;
curx1:=8;
cury1:=1;
curx2:=8;
cury2:=1;
timer1.Enabled:=true;
timer3.Enabled:=true;
timer4.Enabled:=true;
dxtimer1.Enabled:=true;
PaintBox1Paint(sender);
PaintBox2Paint(sender);
sleep(20);
productboxblock(Nextbox1,mboxstale);
Nextbox2:=Nextbox1;
drawlittle(paintbox3.Canvas,nextbox1);
drawlittle(paintbox4.Canvas,nextbox2);
end;
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var
change1,change2:tboxblock;
begin
DXInput1.Update;
if isUp in DXInput1.States then
begin
change1:=changeboxblock(mbox1);
if cango(curx1,cury1,change1,mmap1) then
begin
// timer1can:=false;
mbox1:=change1;
paintbox1paint(sender);
// timer1can:=true;
end;
DXInput1.States := DXInput1.States -[isup];
end;
if isDown in DXInput1.States then
begin
change2:=changeboxblock(mbox2);
if cango(curx2,cury2,change2,mmap2) then
begin
// timer3can:=false;
mbox2:=change2;
paintbox2paint(sender);
// timer3can:=true;
end;
DXInput1.States := DXInput1.States -[isDown];
end;
if isButton4 in DXInput1.States then
begin
// timer3can:=false;
// timer3.Interval:=400;
// if LagCount=1000 then
if Boxmove(curx2,cury2,paintbox2.Canvas,image1.Picture,mbox2,mmap2,2) then
begin
paintbox2paint(sender);
end ;//else
// timer3.Interval:=300;
// timer3can:=true;
end;
if isRight in DXInput1.States then
begin
if cango(curx2,cury2+2,mbox2,mmap2) then
begin
Boxmove(curx2,cury2,paintbox2.Canvas,image1.Picture,mbox2,mmap2,0);
paintbox2paint(sender);
end;
end;
if isButton2 in DXInput1.States then
begin
// timer3can:=false;
if Boxmove(curx2,cury2,paintbox2.Canvas,image1.Picture,mbox2,mmap2,1) then
begin
paintbox2paint(sender);
end ;//else timer3can:=true;
end ;
if isButton1 in DXInput1.States then
begin
// timer1can:=false;
if Boxmove(curx1,cury1,paintbox1.Canvas,image1.Picture,mbox1,mmap1,1) then
begin
paintbox1paint(sender);
end;// else timer3can:=true;
end ;
if isButton3 in DXInput1.States then
begin
// timer1can:=false;
if Boxmove(curx1,cury1,paintbox1.Canvas,image1.Picture,mbox1,mmap1,2) then
begin
paintbox1paint(sender);
end ;//else timer1can:=true;
end ;
if (isleft in DXInput1.States) then
begin
if cango(curx1,cury1+2,mbox1,mmap1) then
begin
Boxmove(curx1,cury1,paintbox1.Canvas,image1.Picture,mbox1,mmap1,0);
paintbox1paint(sender);
end;
end;
// FOldStates := DXInput1.States;
if isButton6 in DXInput1.States then
begin
while cango(curx2,cury2+3,mbox2,mmap2) do
begin
inc(cury2);
end;
Boxmove(curx2,cury2,paintbox2.Canvas,image1.Picture,mbox2,mmap2,0);
paintbox2paint(sender);
DXInput1.States := DXInput1.States -[isButton6];
end;
if isButton5 in DXInput1.States then
begin
while cango(curx1,cury1+3,mbox1,mmap1) do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -