⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 双人对战 俄罗斯访快
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -