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

Delphi打字游戲代碼解讀

編輯:Delphi

Delphi寫的輕型鍵盤打字游戲代碼,練習打字用著不錯,代碼注釋也不錯,在此把編寫思路和步驟與大家分享。

本例實現的這個鍵盤練習軟件除了可以設置難易度之外,還可以更換界面背景、控制聲音的播放與否和字母顏色。程序運行結果如下圖所示。

Delphi打字練習小游戲

編程思路 :一般而言,游戲界存在這樣的一個規律:好的游戲=優秀的游戲設計思想+精美的游戲的素材+可靠的程序代碼,三者缺一不可。這裡拋開空洞的理論,只就本例的這個小程序而言。下面就是本例的設計思想和特點:

1、程序運行後,窗口中間的圖像上就有四個不斷變化的字母從上向下運動。當從鍵盤上輸入的字母與這四個字母的某一個相同時(大小寫敏感),窗口的標題欄就會出現正確與否的提示信息。

2、本例通過TrackBar可以控制游戲的難度,通過ColorBox可以設置字母的顏色,通過RadioButton控制聲音的播放與否,2個Button則隨時可以控制游戲的開始和停止。
游戲軟件的編寫時間並不長,而且一個好的游戲產品就是一個不斷升級和完善的過程。因此,世界上沒有一個十全十美的游戲。本例雖然比較粗糙,但是基本的游戲操作和設置都有所涉及。

(1)雙擊Button1(“開始游戲”),然後添加下列代碼以響應OnClick事件,對各控件進行相關的設置之後再開啟Timer1。

procedure TForm1.Button1Click(Sender: TObject);
begin
   //開始游戲
 Label1.Top:=25;
 Label2.Top:=25;
 Label3.Top:=25;
 Label4.Top:=25;
  //難易度設置,只要控制Timer的Interval即可
 If TrackBar1.Position=0 Then
  Timer1.Interval:=1000;
 If TrackBar1.Position=1 Then
  Timer1.Interval:=500;
 If TrackBar1.Position=2 Then
  Timer1.Interval:=200;
 Timer1.Enabled:=True;
end;

(2)雙擊Timer1,然後添加下列代碼以響應OnTimer事件,實現字母的隨機出現。

procedure TForm1.Timer1Timer(Sender: TObject);
var  ch1,ch2,ch3,ch4:char;
begin
 Randomize;
  //隨機顯示大小寫字母
 ch1:=chr(65+Random(25));  //大寫
 ch2:=chr(97+Random(25));  //小寫
 ch3:=chr(65+Random(25));
 ch4:=chr(97+Random(25));
  //對4個Label賦值
 Label1.Caption:=ch1; //關鍵句
 Label2.Caption:=ch2;
 Label3.Caption:=ch3;
 Label4.Caption:=ch4;
  //指定4個Label的初始X值
 Label1.Left:=100;
 Label2.Left:=150;
 Label3.Left:=200;
 Label4.Left:=250;
   //當4個Label到達底端時,再重新從頂端開始下移
  If label1.Top<250 Then
   Label1.Top:=Label1.Top+Random(10)
  Else  Label1.Top:=10;
  If label2.Top<250 Then
   Label2.Top:=Label2.Top+Random(10)
  Else Label2.Top:=10;
  If label3.Top<250 Then
   Label3.Top:=Label3.Top+Random(10)
  Else  Label3.Top:=10;
  If label4.Top<250 Then
   Label4.Top:=Label4.Top+Random(10)
  Else  Label4.Top:=10;
end;

(3)下面是本例的關鍵代碼,即Form1的OnKeyPress事件。游戲開始後,看准畫面上下落的字母,快速地從鍵盤上輸入,如果鍵盤輸入與下落字母相同,則顯示正確信息,否則顯示打錯了的信息。由於這裡用到了聲音播放函數——sndplaysound,所以必須在uses中加入mmsystem。

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if key=label1.Caption Then
  Begin
   Caption:='你打對了'+label1.Caption;
   If RadioButton1.Checked Then
    sndplaysound('success.wav',SND_ASYNC);
  end
 Else if key=label2.Caption Then
   Begin
   Caption:='你打對了'+label2.Caption;
   If RadioButton1.Checked Then
    sndplaysound('success.wav',SND_ASYNC);
  end
 Else if key=label3.Caption Then
   Begin
   Caption:='你打對了'+label3.Caption;
   If RadioButton1.Checked Then
    sndplaysound('success.wav',SND_ASYNC);
  end
 Else if key=label4.Caption Then
   Begin
   Caption:='你打對了'+label4.Caption;
   If RadioButton1.Checked Then
    sndplaysound('success.wav',SND_ASYNC);
  end
 Else
 Begin
 Caption:='太爛了,一個都沒有對';
 If RadioButton1.Checked Then
  sndplaysound('fail.wav',SND_ASYNC);
 end;
end;

(4)雙擊Button2(“停止游戲”),然後添加下列代碼以響應OnClick事件,清空Label中的內容,並停止計時。

procedure TForm1.Button2Click(Sender: TObject);
begin  //停止游戲
Timer1.Enabled:=False;
Label1.Caption:='';
Label2.Caption:='';
  Label3.Caption:='';
  Label4.Caption:='';
end;

(5)本例還有畫面和字母顏色設置功能。下面的兩段代碼就實現這方面的功能。

procedure TForm1.Button3Click(Sender: TObject);
begin
If OpenPictureDialog1.Execute Then
 Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); //更換背景圖片
end;
procedure TForm1.ColorBox1Change(Sender: TObject);
begin
  //設置字母顏色
 Label1.Font.Color:=ColorBox1.Selected;
 Label2.Font.Color:=ColorBox1.Selected;
 Label3.Font.Color:=ColorBox1.Selected;
 Label4.Font.Color:=ColorBox1.Selected;
end;

這款Delphi鍵盤打字游戲只用於低級的字母練習,但是作為游戲設計入門的實例還是有一定的參考價值的,根據不同的條件實現了畫面的切換、聲音的播放、字母下落的快慢設置等。

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