关于Delphi开发“炸飞机的游戏”

做了这么久开发,一直想做一个小游戏玩玩,回想起上学玩的“炸飞机”的游戏,就拿他开始吧。

先说一下游戏的规则:

在10×10的方格里,汇制1—5—1—3的形状,方向自选,共三组,每一个飞机不能与其他的飞机有任何的重叠,第一个1为飞机头!玩家根据作标选择位置,系统会告之“炸中,炸毁,炸空”,直至全部炸毁三架飞机为止!

程序需求:

1.绘制“地图”,10*10的区域,有点象扫雷游戏的布局

2.由系统随机生成三架飞机,方向随机,并开始计时

3.用户点击时,告知用户是否“炸中,炸毁,炸空”,计算用户的点击次数

4.当所有的飞机都被“炸毁”时,系统提示成功,游戏结束

5.提交玩家的游戏成绩

6.显示成绩排行榜

程序实现:

 

unit UnitMain;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls, StdCtrls, Buttons, WinSkinData, IdBaseComponent,

  IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;

const

  MAPWIDTH = 10;

  MAPHEIGHT = 10;

  MAPPIX = 30;

  PLANELEN = 4;

  PLANEWLEN = 5;

  PLANEFLEN = 3;

  PLANECOUNT = 3;

  MAXMAKECOUNT = 5;

type

  TGameStatus = (psNone, psDesign, psFight, psAddPlane, psGameOver);

type

  TForm1 = class(TForm)

    pnlMap: TPanel;

    pnlLeftLine: TPanel;

    pnlRight: TPanel;

    pnlTop: TPanel;

    pnlBottom: TPanel;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    BitBtn3: TBitBtn;

    SkinData1: TSkinData;

    Memo1: TMemo;

    BitBtn4: TBitBtn;

    BitBtn5: TBitBtn;

    Panel1: TPanel;

    Label1: TLabel;

    Label2: TLabel;

    Timer1: TTimer;

    SpeedButton1: TSpeedButton;

    IdHTTP1: TIdHTTP;

    procedure FormCreate(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure BitBtn4Click(Sender: TObject);

    procedure BitBtn3Click(Sender: TObject);

    procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,

      Y: Integer);

    procedure BitBtn5Click(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

  private

    { Private declarations }

    procedure planePointerClick(Sender: TObject);

    procedure ClearStatus;

    procedure MakeAPlane();

    procedure RandomPlane();

    procedure DisplayAll();

    procedure ClearSpcStatus();

    procedure planeMouseMove(Sender: TObject; Shift: TShiftState;

  X, Y: Integer);

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

  planePointer: array[0..MAPWIDTH,0..MAPHEIGHT] of TSpeedButton;

  psStatus: TGameStatus;

  planeClass: TClass;

  iPlane, iRandom, iFindPlane, iClick: Integer;

  tmpplan: TSpeedButton;

implementation

 

uses UnitFrmCommit;

 

{$R *.dfm}

 

procedure TForm1.ClearStatus;

var

  i,j: Integer;

begin

  for i := 0 to MAPWIDTH - 1 do

  begin

    for j := 0 to MAPHEIGHT - 1 do

    begin

      planePointer[i, j].Tag := 0;

      planePointer[i, j].Glyph.LoadFromFile('./Glyph/colors.bmp');

    end;

  end;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

var

  i,j: Integer;

begin

  Self.pnlMap.Width := MAPWIDTH * MAPPIX;

  Self.pnlMap.Height := MAPHEIGHT * MAPPIX;

 

  Self.pnlLeftLine.Width :=  MAPPIX;

  Self.pnlLeftLine.Height :=  MAPHEIGHT * MAPPIX;

  Self.pnlLeftLine.Left :=   Self.pnlMap.Left - MAPPIX;

  Self.pnlLeftLine.Top := Self.pnlMap.Top;

 

  Self.pnlRight.Width  :=  MAPPIX;

  Self.pnlRight.Height :=  MAPHEIGHT * MAPPIX;

  Self.pnlRight.Left :=   Self.pnlMap.Left + Self.pnlMap.Width;

  Self.pnlRight.Top := Self.pnlMap.Top;

 

  Self.pnlTop.Width :=  MAPWIDTH * MAPPIX + 2 * MAPPIX;

  Self.pnlTop.Height :=   MAPPIX;

  Self.pnlTop.Left :=   Self.pnlLeftLine.Left;

  Self.pnlTop.Top := Self.pnlMap.Top - MAPPIX;

 

  Self.pnlBottom.Width :=  MAPWIDTH * MAPPIX + 2 * MAPPIX;

  Self.pnlBottom.Height :=   MAPPIX;

  Self.pnlBottom.Left :=   Self.pnlLeftLine.Left;

  Self.pnlBottom.Top := Self.pnlMap.Top + Self.pnlMap.Height;

 

 

  for i := 0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值