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

📄 main.pas

📁 一个学习的源码,需要学习DELPHI的同学
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ExtCtrls, jpeg, StdCtrls;
type  tblock=record
        strx,stry:byte;
        kind:byte;
      end;
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    game1: TMenuItem;
    start1: TMenuItem;
    exit1: TMenuItem;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    Label1: TLabel;
    Label2: TLabel;
    MainMenu2: TMainMenu;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    procedure start1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure exit1Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
  private
    map:array [1..10,1..10] of byte;
    maplx,maply:byte;
    block:array [1..20] of tblock;
    doorx1,doory1,doorx2,doory2:byte;
    fk:array[1..4] of tbitmap;
    back:tbitmap;
    select:byte;
    mouseoldx,mouseoldy:integer;
    procedure drawmap(maplx,maply,count:byte);
    procedure moveright(select:byte);
    procedure moveleft(select:byte);
    procedure movedown(select:byte);
    procedure moveup(select:byte);
    { Private declarations }
  public
    levl:byte;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses level, about;

{$R *.DFM}

procedure tform1.moveright(select:byte);
begin
   case block[select].kind of
      1: if (block[select].strx<(maplx-1)) and (map[block[select].strx+2,block[select].stry]=0)
             and (map[block[select].strx+2,block[select].stry+1]=0)
         then
            begin
              map[block[select].strx,block[select].stry]:=0;
              map[block[select].strx,block[select].stry+1]:=0;
              map[block[select].strx+2,block[select].stry]:=select;
              map[block[select].strx+2,block[select].stry+1]:=select;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
              image1.canvas.draw(block[select].strx*40-39,(block[select].stry+1)*40-39,back);
              block[select].strx:=block[select].strx+1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[1]);
            end;
       2:if (block[select].strx<maplx) and (map[block[select].strx+1,block[select].stry]=0)
             and (map[block[select].strx+1,block[select].stry+1]=0)
         then
            begin
              map[block[select].strx,block[select].stry]:=0;
              map[block[select].strx,block[select].stry+1]:=0;
              map[block[select].strx+1,block[select].stry]:=select;
              map[block[select].strx+1,block[select].stry+1]:=select;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
              image1.canvas.draw(block[select].strx*40-39,(block[select].stry+1)*40-39,back);
              block[select].strx:=block[select].strx+1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[2]);
            end;
       3:if (block[select].strx<maplx) and (map[block[select].strx+1,block[select].stry]=0)
         then
            begin
              map[block[select].strx,block[select].stry]:=0;
              map[block[select].strx+1,block[select].stry]:=select;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
              block[select].strx:=block[select].strx+1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[3]);
            end;
       4:if (block[select].strx<(maplx-1)) and (map[block[select].strx+2,block[select].stry]=0)
         then
            begin
              map[block[select].strx,block[select].stry]:=0;
              map[block[select].strx+2,block[select].stry]:=select;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
              block[select].strx:=block[select].strx+1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[4]);
            end;
   end;
end;
procedure tform1.moveleft(select:byte);
begin
   case block[select].kind of
      1: if (block[select].strx>1) and (map[block[select].strx-1,block[select].stry]=0)
             and (map[block[select].strx-1,block[select].stry+1]=0)
         then
            begin
              map[block[select].strx+1,block[select].stry]:=0;
              map[block[select].strx+1,block[select].stry+1]:=0;
              map[block[select].strx-1,block[select].stry]:=select;
              map[block[select].strx-1,block[select].stry+1]:=select;
              image1.Canvas.Draw((block[select].strx+1)*40-39,block[select].stry*40-39,back);
              image1.canvas.draw((block[select].strx+1)*40-39,(block[select].stry+1)*40-39,back);
              block[select].strx:=block[select].strx-1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[1]);
            end;
       2:if (block[select].strx>1) and (map[block[select].strx-1,block[select].stry]=0)
             and (map[block[select].strx-1,block[select].stry+1]=0)
         then
            begin
              map[block[select].strx,block[select].stry]:=0;
              map[block[select].strx,block[select].stry+1]:=0;
              map[block[select].strx-1,block[select].stry]:=select;
              map[block[select].strx-1,block[select].stry+1]:=select;
              image1.Canvas.Draw((block[select].strx)*40-39,block[select].stry*40-39,back);
              image1.canvas.draw((block[select].strx)*40-39,(block[select].stry+1)*40-39,back);
              block[select].strx:=block[select].strx-1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[2]);
            end;
       3:if (block[select].strx>1) and (map[block[select].strx-1,block[select].stry]=0)
         then
            begin
              map[block[select].strx,block[select].stry]:=0;
              map[block[select].strx-1,block[select].stry]:=select;
              image1.Canvas.Draw((block[select].strx)*40-39,block[select].stry*40-39,back);
              block[select].strx:=block[select].strx-1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[3]);
            end;
       4:if (block[select].strx>1) and (map[block[select].strx-1,block[select].stry]=0)
         then
            begin
              map[block[select].strx+1,block[select].stry]:=0;
              map[block[select].strx-1,block[select].stry]:=select;
              image1.canvas.draw((block[select].strx+1)*40-39,block[select].stry*40-39,back);
              block[select].strx:=block[select].strx-1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[4]);
            end;
   end;
end;
procedure tform1.movedown(select:byte);
begin
   case block[select].kind of
      1: if (block[select].stry<(maply-1)) and (map[block[select].strx,block[select].stry+2]=0)
             and (map[block[select].strx+1,block[select].stry+2]=0)
         then
            begin
              map[block[select].strx,block[select].stry]:=0;
              map[block[select].strx+1,block[select].stry]:=0;
              map[block[select].strx,block[select].stry+2]:=select;
              map[block[select].strx+1,block[select].stry+2]:=select;
              image1.canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
              image1.canvas.draw((block[select].strx+1)*40-39,block[select].stry*40-39,back);
              block[select].stry:=block[select].stry+1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[1]);
            end;
       2:if (block[select].stry<(maply-1)) and (map[block[select].strx,block[select].stry+2]=0)
         then
            begin
              map[block[select].strx,block[select].stry]:=0;
              map[block[select].strx,block[select].stry+2]:=select;
              image1.canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
              block[select].stry:=block[select].stry+1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[2]);
            end;
       3:if (block[select].stry<maply) and (map[block[select].strx,block[select].stry+1]=0)
         then
            begin
              map[block[select].strx,block[select].stry]:=0;
              map[block[select].strx,block[select].stry+1]:=select;
              image1.canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
              block[select].stry:=block[select].stry+1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[3]);
            end;
       4:if (block[select].stry<maply) and (map[block[select].strx,block[select].stry+1]=0)
             and (map[block[select].strx+1,block[select].stry+1]=0)
         then
            begin
              map[block[select].strx,block[select].stry]:=0;
              map[block[select].strx+1,block[select].stry]:=0;
              map[block[select].strx,block[select].stry+1]:=select;
              map[block[select].strx+1,block[select].stry+1]:=select;
              image1.canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,back);
              image1.canvas.draw((block[select].strx+1)*40-39,block[select].stry*40-39,back);
              block[select].stry:=block[select].stry+1;
              image1.Canvas.Draw(block[select].strx*40-39,block[select].stry*40-39,fk[4]);
            end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -