程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi游戲-小狗過橋主代碼

Delphi游戲-小狗過橋主代碼

編輯:Delphi

一款用Delphi編寫的小游戲——小狗過橋,雖然簡單,但表現出了游戲的眾多功能,對開發Delphi游戲的新手或許會起到參考作用。游戲一開始,左邊小狗開始下落運動,右邊浮橋開始向上運動。在窗口單擊左鍵時會出現另一渡橋。通過這個渡橋,左邊小狗要達到上升的浮橋,否則就游戲失敗。如果小狗遇到上升浮橋,小狗就會和這個浮橋一起向上運動。接近窗口頂端時,兩只小狗見面了,游戲成功。

編程思路:Delphi小狗過橋游戲主要依靠Timer控制Image的運動來實現。Image運動過程會出現很多中情況。這些情況都要加以考慮。因此,游戲開發需要考慮很多條件,不同的條件的響應事件是不同的。比如,在本例中,假如小狗在渡橋的下方、小狗運動超過窗口邊框或者是小狗超過渡橋還沒有與之相遇,這些情況游戲都會給出失敗提示。而當小狗落在上升的紅橋的上方時,小狗隨著上升浮橋一起上升,直到與另一只小狗相遇。具體代碼:

01 unit Unit1; 02 interface 03 uses 04   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 05   Dialogs, ExtCtrls, jpeg, StdCtrls; 06 type 07   TForm1 = class(TForm) 08     Image1: TImage; 09     Timer1: TTimer; 10     Image2: TImage; 11     Image3: TImage; 12     Timer2: TTimer; 13     Image4: TImage; 14     Button1: TButton; 15     procedure Timer1Timer(Sender: TObject); 16     procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, 17       Y: Integer); 18     procedure Timer2Timer(Sender: TObject); 19     procedure Button1Click(Sender: TObject); 20     procedure FormMouseUp(Sender: TObject; Button: TMouseButton; 21       Shift: TShiftState; X, Y: Integer); 22   private 23     { Private declarations } 24   public 25     { Public declarations } 26   end; 27 var 28   Form1: TForm1; 29 implementation 30 {$R *.dfm} 31 procedure TForm1.Button1Click(Sender: TObject); 32 begin 33  Image1.Left:=0//下移小狗位置復原 34  Image1.Top:=0; 35  Image3.Top:=Form1.Height-16;  //上升浮橋位置復原 36  Image4.Visible:=False; 37    //開啟Timer 38  Timer1.Enabled:=True; 39  Timer2.Enabled:=True; 40 end; 41 procedure TForm1.Timer1Timer(Sender: TObject); 42 begin 43  If Image1.Top+Image1.Height>Image2.Top Then 44   {這句代碼主要是和後面的Image1.Top:=Image1.Top+4相抵消, 45   小狗就只有水平方向的運動速度了} 46   Image1.Top:=Image1.Top-4;                   47  If PtInRect(Rect(Image1.Left,Image1.Top,Image1.Left+Image1.Width,Image1.Top+Image1.Height), 48              Point(Image3.Left,Image3.Top))   Then           //小狗遇到了橋 49   Timer1.Enabled:=False; 50  If (Image1.Top>Image3.Top+Image3.Height) or      //小狗位於橋的下放 51     (Image1.Top+Image1.Height>Form1.Height) or   //小狗超過了窗口的下邊界 52     (Image1.Left+Image1.Width>Form1.Width) Then  //小狗超過了窗口的右邊界 53  Begin 54   Timer1.Enabled:=False; 55   Timer2.Enabled:=False; 56   showMessage('游戲失敗'); 57   end; 58  Image1.Left:=Image1.Left+4;  //小狗右移 59  Image1.Top:=Image1.Top+4;    //小狗下移 60 end; 61 procedure TForm1.Timer2Timer(Sender: TObject); 62 begin 63  Image3.Top:=Image3.Top-2; 64  If PtInRect(Rect(Image1.Left,Image1.Top,Image1.Left+Image1.Width,Image1.Top+Image1.Height), 65    Point(Image3.Left,Image3.Top))   Then 66   Image1.Top:=Image1.Top-2;  //Image1和Image3一起向上運動 67  If Image3.Top=40 Then        //快接近頂端時,停止Timer2 68  Begin 69   Image4.Left:=Image3.Left+Image3.Width;  //兩只小狗見面 70   Image4.Top:=Image1.Top; 71   Image4.Visible:=True; 72   Timer2.Enabled:=False; 73   Application.MessageBox('成功了!兩只小狗見面了!','游戲成功',1); 74  end; 75 end; 76 procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, 77   Y: Integer); 78 begin 79  If ssLeft in Shift Then 80  Begin 81   Image2.Visible:=True//當按下左鍵時,渡橋可見 82   Image2.Left:=x; 83   Image2.Top:=y; 84  end 85  Else 86  Begin 87   {沒有按下左鍵但鼠標又在移動時,渡橋放置在左下角,使左邊小狗可以繼續下移 } 88   Image2.Left:=10; 89   Image2.Top:=Height-120; 90  end; 91 end; 92 procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; 93   Shift: TShiftState; X, Y: Integer); 94 begin 95  Image2.Visible:=False//當松開鼠標時,渡橋隱藏 96 end; 97 end.

游戲編寫小結:雖然這是一個非常簡單的游戲程序實例,但還是用到了游戲設計的一些基本思路,比如點的位置判斷,不同的條件設置和判斷,游戲素材的屬性設置和條件控制等。但是,首先在頭腦中形成一個游戲的大體原型才是最重要的。本游戲最終的運行界面:

Delphi編寫的小狗過橋游戲

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved