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