最簡(jiǎn)單的游戲制作教程
首先聲明,如果你是編程高手 那么沒(méi)有必要看如此幼稚的帖子。 如果你不太會(huì)編程,而又對(duì)游戲制作很感興趣,而且有耐心和意志,那么請(qǐng)往 下看。 游戲制作是一類特殊的軟件制作過(guò)程,它很復(fù)雜,需要各方面的知識(shí)和努力, 而且對(duì)策 劃要求很高??好了廢話少說(shuō),進(jìn)入正題。 這次我們要?jiǎng)诱娓竦木幰粋€(gè)真正屬于自己的程序,作為游戲雖然很幼稚,但是 卻是編程的基礎(chǔ)。
編程首先得有專門的編程工具,這次我們選用的開(kāi)發(fā)工具是VB,也就是Visual Basic 6 哎,別走呀,我保證你這次不用買專門的軟件,你有Word 吧 有它就行啦!(什 么,沒(méi)有 暈??) 打開(kāi)你的Word,(本文中是以O(shè)fficeXP 為準(zhǔn),其他版本的大同小異)你很快就 會(huì)體會(huì)到VB 的強(qiáng)大和應(yīng)用的廣泛,連Word 中都集成著他的部分。 單擊“工具”菜單,選擇 宏->Visual Basic 編輯器,怎么樣,一個(gè)簡(jiǎn)化的VB 就出現(xiàn)在你的眼前。 現(xiàn)在在這個(gè)嶄新的界面中進(jìn)入正式的 軟件開(kāi)發(fā)~~~ 單擊“插入”菜單,選擇“用戶窗體”,ok,看見(jiàn)了么 一個(gè)編輯狀態(tài)的窗口出 現(xiàn)了。 單擊它,窗體四周會(huì)出現(xiàn)調(diào)整點(diǎn),拖動(dòng)他們就可以調(diào)整窗口的大小,很簡(jiǎn)單吧好了右鍵單擊這個(gè)窗體,選擇“屬性”,屏幕左邊應(yīng)該出現(xiàn)一個(gè)屬性窗口吧 下 面列了 很長(zhǎng)一串不知什么東西 這些都是這個(gè)窗體的屬性啦。 在里面找,有一個(gè)Caption 一欄看見(jiàn)沒(méi)有 它的右邊是什么呢 如果沒(méi)錯(cuò)應(yīng)該 是 UserForm1 吧!將它改為“石頭剪子布”。 回頭看看你的窗體,它的標(biāo)題欄上已經(jīng)是“石頭剪子布”了,現(xiàn)在明白Caption 屬性是控 制什么的了吧 你也可以將它改成你喜歡的名字。 好了讓我們接觸VB 中的另一概念--控件吧!你能找到工具箱嗎 它里面盛的 事很多很 好用的控件喲!(沒(méi)找到 單擊“視圖”菜單,選擇“工具箱”) 我們選擇一個(gè)名叫“框架”的控件(就是畫了一個(gè)方框上面有XYZ 的那個(gè),鼠 標(biāo)懸停會(huì)顯 示“框架”),單擊它,回頭來(lái)再你的窗體上拉出一個(gè)矩形,就像在畫圖板里面 畫畫一 樣,這個(gè)“框架”就出現(xiàn)在你的窗體上了,頂部還有一個(gè)Frame1,我們下一步 就是改掉 這個(gè)Frame1。單擊這個(gè)框架,它的四周出現(xiàn)控制點(diǎn)說(shuō)明已經(jīng)被選中,先把它的 大小調(diào)整 合適(你看著順眼就行),回來(lái)在屬性窗口把它的Caption 屬性從Frame1 改成 “我的選擇 ”(你選中哪個(gè)屬性窗口就顯示哪個(gè)的屬性,所以改屬性時(shí)確保你選中的是那個(gè) 框架) 。 接下來(lái)我們要認(rèn)識(shí)第二個(gè)控件,“選項(xiàng)按鈕”,首先保證你的框架處于被選擇狀 態(tài),在 工具箱上選擇它后(就是那個(gè)圓圈里面一個(gè)點(diǎn)),在框架中把它畫出來(lái),同樣將 它的 Caption 屬性由“OptionButton1”改為“石頭” 調(diào)整好大小和位置,不要讓 它獨(dú)占了整 個(gè)框架,因?yàn)槟阋呀?jīng)猜到了,接下來(lái)我們還要給它的下方再添上兩個(gè)選項(xiàng)按鈕, 分別是 “剪子”和“布”。注意,本文中是將名稱為“OptionButton2”的Caption 改 為“剪子 ”,將“OptionButton3”的Caption 改為“布”,它涉及下面的代碼,所以不要 弄錯(cuò)。 把他們擺得整齊些。 好了,這次保證整個(gè)窗體處于被選擇狀態(tài),然后再那個(gè)“我的選擇”框架右邊 另畫一個(gè) 小點(diǎn)的框架,Caption 屬性改為“電腦的選擇”。 保證這個(gè)新框架處于被選擇狀態(tài),在工具欄里面單擊一個(gè)新的控件--“標(biāo)簽” (就是 那個(gè)大寫字母 A),把它畫在“電腦的選擇”框架里面。它的 Caption 屬性是 “Label1” 吧 將它刪掉,也就是Caption 屬性為空,提前不能知道人家的選擇嘛! 在那個(gè)框架的外面下方放一個(gè)標(biāo)簽,這個(gè)沒(méi)錯(cuò)應(yīng)該是 Label2 吧,也將它的 Caption 屬性改 為空,這個(gè)是用來(lái)顯示結(jié)果的,最好醒目一點(diǎn),在屬性窗口中找,F(xiàn)ont,找到 了嗎 右 邊還是一個(gè)“宋體”對(duì)不 單擊它,看見(jiàn)“宋體”右邊的那個(gè)戴省略號(hào)的小按 鈕了嗎單擊它,出現(xiàn)一個(gè)新的“字體”設(shè)置窗口,把字號(hào)改大一點(diǎn)吧,再來(lái)個(gè)粗體, 這下醒目 了。 好了,再在它下面添加一個(gè)新控件--“命令按鈕”,調(diào)整好大小,Caption 屬 性改為“ OK”(你現(xiàn)在應(yīng)該知道Caption 代表什么了吧) 這樣,我們的界面設(shè)計(jì)就完成了! 現(xiàn)在我們的程序還只有一個(gè)殼子,沒(méi)有靈魂,代碼才是一個(gè)程序的主體。 要學(xué)好代碼并非一朝一夕就可以完成,這需要長(zhǎng)時(shí)間的努力,不過(guò)這次程序的 代碼十分 簡(jiǎn)單,相信你一下就可以悟通的。 接下來(lái)就是代碼編輯了,選擇窗體,右鍵單擊選擇“察看代碼”,你會(huì)看到一個(gè) 新的窗 口。是不是已經(jīng)有了這么幾行: Private Sub UserForm_Click() End Sub 不要他,全部刪除,直到你看到左上方的選項(xiàng)欄里面變成“通用”,右上方的變 成“聲 明”為止。 好了我們現(xiàn)在就要“聲明”了(以下三行): Dim MySelection1 As Integer Dim ComputerSelection1 As Integer Dim Result1 As String 最好不要粘貼過(guò)去,自己手動(dòng)輸入一下你會(huì)體會(huì)到VB 的一些特性。 你看到“Dim”“As”等變成了藍(lán)色,這些都是VB 的保留字,保留字是什么 暫 時(shí)不用搞 得太深,你只要知道保留字時(shí)VB“認(rèn)得”的字就行了。 Dim 是什么意思呢 它的作用是定義變量。(變量是什么你應(yīng)該知道吧,不然你 拿你初中 的數(shù)學(xué)書翻一下) Dim MySelection1 As Integer 的意思是:定義一個(gè)名叫“MySelection1”的 Integer 類 型的變量。 Integer 是什么類型呢 它叫做 整型 ,也就是只能存儲(chǔ)整數(shù),占用兩個(gè)字節(jié), 但不是任 何整數(shù)都能存儲(chǔ),必須是-32768 到32767 的整數(shù)。過(guò)大獲過(guò)小都會(huì)造成數(shù)據(jù)溢 出。 類似地,還有長(zhǎng)整型(Long),它占用四個(gè)字節(jié),存儲(chǔ)范圍-2147483648 到 2147483647, 如果你喜歡,你也可以將上面兩行代碼中的Integer 改為L(zhǎng)ong,只是本程序沒(méi) 必要用那么 多,多占了點(diǎn)內(nèi)存而已。 有存儲(chǔ)數(shù)的,也就有存儲(chǔ)其他的,比如字符。String 型變量就是存儲(chǔ)字符的, 它叫做字 符串。它的長(zhǎng)度可以變化,可以存一個(gè)或多個(gè)字符,比如“A”、“Hello!”、“大 家好 ”等等,在VB 中每個(gè)字符占兩個(gè)字節(jié)。 好了,我們聲明了3 個(gè)變量,下來(lái)就要對(duì)他們進(jìn)行操作了。 在左上方寫著“通用”的選項(xiàng)欄中選擇 OptionButton1,如果不出所料右邊的 選項(xiàng)欄也由 聲明變成“Click”,而代碼中則出現(xiàn)了這些: Private Sub OptionButton1_Click() End Sub 而且還多了一條橫線隔開(kāi)了我們剛才輸入的代碼,好了,在這兩行中間加入: MySelection1 = 1 這樣就變成了 Private Sub OptionButton1_Click() MySelection1 = 1 End Sub 這是什么意思呢 Click 是什么你知道吧 是單擊的意思。這代碼的意思是, 如果一旦單 擊名稱為OptionButton1 的控件,就執(zhí)行中間夾著的代碼 MySelection1 = 1 。 也就是說(shuō),你在 Private Sub OptionButton1_Click()和 End Sub 中間寫的任 何代碼都會(huì) 在有人單擊名稱為OptionButton1 的控件后執(zhí)行。 至于MySelection1 = 1,確切地寫應(yīng)該是 Let MySelection1 = 1 ,現(xiàn)在清楚 意思了吧 ,就是讓這個(gè)名為MySelection1 的變量里面保存的數(shù)據(jù)為1。而Let 在這種情 況下可以省 略。 現(xiàn)在拋開(kāi)我們的程序,看看這句代碼:n=n+1,這在數(shù)學(xué)上是永遠(yuǎn)也不會(huì)成立的, 但是在 代碼中卻是正確的,你給它的前面加上一個(gè)Let,現(xiàn)在清楚多了吧,Let n=n+1, 意思是 說(shuō)讓現(xiàn)在的n 這個(gè)變量的值等于過(guò)去的n 里的值加上1,作用就是讓n 這個(gè)變 量里的值增加 一,所以這里的“=”不是相等的意思,而是“賦值”,要搞清楚。 好了,回到程序,用同樣的方法添入以下代碼: Private Sub OptionButton2_Click() MySelection1 = 2 End Sub Private Sub OptionButton3_Click() MySelection1 = 3 End Sub 成功的話應(yīng)該有好幾條橫線把他們隔開(kāi)了吧 這就是說(shuō),它們之間是相互獨(dú)立 的,每一 個(gè)在執(zhí)行到End Sub 之后就完了,不會(huì)接著執(zhí)行其他的代碼。 3 個(gè)選項(xiàng)按鈕的代碼已經(jīng)全部搞定,接下來(lái)是控制按鈕的代碼,同樣的方法: Private Sub CommandButton1_Click() If MySelection1 = 0 Then MsgBox
"請(qǐng)先選擇!
" ComputerSelection1 = Int(Rnd * 3) + 1 End Sub 下來(lái)解釋一下,第一行和最后一行不用說(shuō)了吧,一樣的道理。 If MySelection1 = 0 Then MsgBox
"請(qǐng)先選擇!
" 這一句其實(shí)很好理解,就是當(dāng) MySelection1 = 0 時(shí),執(zhí)行 MsgBox
"請(qǐng)先選擇!
" 這個(gè)語(yǔ)句,Msgbox
"請(qǐng)先選擇!
" 的意思是,彈出一個(gè)上面寫有“請(qǐng)先選擇!” 字樣的 對(duì)話框。 這里要注意的是,這次的“=”不再是“賦值”的意思,而就是“相等”的意思。 如果你 是在搞不清,以后賦值的語(yǔ)句前都寫上 Let。 下面的一句:ComputerSelection1 = Int(Rnd * 3) + 1 涉及兩個(gè)函數(shù):Int()和Rnd()。 Int()的做用是取整,即得到一個(gè)不大于原來(lái)數(shù)字的整數(shù),如:Int(4)的結(jié)果是 4,Int (4.1)的結(jié)果也是4,Int(4.8)的結(jié)果還是4。注意:這里取整是取“不大于” 原來(lái)數(shù)字的 整數(shù),如果Int(-4.5)得到的結(jié)果是-5。 Rnd()函數(shù)的作用是得到一個(gè)隨機(jī)數(shù)(也就是隨便得到一個(gè)數(shù)),不過(guò)范圍是 0 到1 之間的 一個(gè)小數(shù)。(但是不包括0 或1) 所以Rnd*3 的結(jié)果是隨便得到一個(gè)0 到3 之間的小數(shù),外面套個(gè)Int()后結(jié)果 就成了0 到2 之 間的整數(shù)(當(dāng)然包括0 和2),在加上個(gè)1,所以整個(gè)語(yǔ)句的作用就是隨便得到 1、2、3 之 中的一個(gè)數(shù),儲(chǔ)存在名叫ComputerSelection1 的變量中。 你現(xiàn)在明白了吧,MySelection1 和ComputerSelection1 著兩個(gè)變量分別存儲(chǔ) 著你和電腦 的選擇,1 代表“石頭”,2 代表“剪子”,3 代表“布” 。程序就是把感性化 的東西用 數(shù)字表示出來(lái)。 下來(lái)我們要判斷你和電腦到底誰(shuí)贏了。 在所有過(guò)程(在 Private Sub 和 End Sub 以及之間的代碼稱為一個(gè)子程序, 算是一個(gè)過(guò) 程)外,也就是找最下面空的地方輸入: Function Judge1 回車,你看看效果,你的輸入自動(dòng)變成了: Function Judge1() End Function 這是什么呢 這是一個(gè)你自己定義的函數(shù),名叫Judge1。它和上面的那些子程 序一樣, 也算作一個(gè)過(guò)程,也就是說(shuō)它和上面的那些代碼之間也是相互獨(dú)立的,不然為 什么又會(huì) 多出一條橫線把它和上面的代碼隔開(kāi) 呵呵。 現(xiàn)在你定義了一個(gè)名叫Judge1 的函數(shù),當(dāng)然要有用?!癋unction”這個(gè)單詞有 “函數(shù)” 的意思,也有“功能”的意思,你要讓它實(shí)現(xiàn)一個(gè)功能,才是創(chuàng)建它的目的。 在這里我們要讓它判斷到底誰(shuí)贏了。 把下面的代碼一股腦放到你的函數(shù)中去
(即 Function Judge1()和 End Function 之間) If ComputerSelection1 = 1 Then If MySelection1 = 1 Then Result1 =
"平局
" ElseIf MySelection1 = 2 Then Result1 =
"你輸了
" ElseIf MySelection1 = 3 Then Result1 =
"你贏了
" End If ElseIf ComputerSelection1 = 2 Then If MySelection1 = 1 Then Result1 =
"你贏了
" ElseIf MySelection1 = 2 Then Result1 =
"平局
" ElseIf MySelection1 = 3 Then Result1 =
"你輸了
" End If ElseIf ComputerSelection1 = 3 Then If MySelection1 = 1 Then Result1 =
"你輸了
" ElseIf MySelection1 = 2 Then Result1 =
"你贏了
" ElseIf MySelection1 = 3 Then Result1 =
"平局
" End If End If 這個(gè)代碼看起來(lái)很麻煩,實(shí)際上邏輯很簡(jiǎn)單。 首先看這個(gè)大結(jié)構(gòu): If ComputerSelection1 = 1 Then '語(yǔ)句1 ElseIf ComputerSelection1 = 2 Then '語(yǔ)句2 ElseIf ComputerSelection1 = 3 Then '語(yǔ)句3 End If 它的意思是先看ComputerSelection1 = 1 是否成立,如果成立就執(zhí)行 語(yǔ)句1 , 如果不成 立再看ComputerSelection1 是否等于 2 ,如果等于就執(zhí)行 語(yǔ)句2 ,如果還 不成立再看 ComputerSelection1 = 3 是否成立,如果成立就執(zhí)行 語(yǔ)句3 ,如果這些都不 成立就什么 也不執(zhí)行。 這就是用于判斷的If 語(yǔ)句的復(fù)雜形式。注意,如果你的Then 后面直接跟另一 個(gè)語(yǔ)句那么 就不需要End If ,如果你Then 后面的語(yǔ)句很多需要另提一行寫,那么最后必 須用End If 封底,好讓電腦知道你下面到多少句屬于If 可以影響的范圍。 上面那很長(zhǎng)一段代碼其實(shí)主要的架構(gòu)就是如此,只不過(guò)將那些“語(yǔ)句 1”、“語(yǔ) 句2”等 換成了另一個(gè)If 結(jié)構(gòu),也就是大的If 結(jié)構(gòu)中套著3 個(gè)小的,現(xiàn)在清楚了吧能看明白這段 代碼了吧好了,我們的這個(gè)名為Judge1 的函數(shù)編制完成,可以使用了,怎么用 很簡(jiǎn)單, 還記得 剛才你給 Private Sub CommandButton1_Click() End Sub 之間加了兩行代碼 If MySelection1 = 0 Then MsgBox
"請(qǐng)先選擇!
" ComputerSelection1 = Int(Rnd * 3) + 1 嗎 在它后面在加上一句 Judge1 就行了。調(diào)用這個(gè)函數(shù)只需要輸入它的名稱即可,簡(jiǎn)單吧。 接下來(lái)我們要通報(bào)結(jié)果了: 首先應(yīng)該知道電腦到底選擇了石頭還是剪刀還是布。 同樣的方法創(chuàng)建一個(gè)函數(shù)ShowComputerSelection1,在那兩行中間加入: If ComputerSelection1 = 1 Then Label1.Caption =
"石頭
" ElseIf ComputerSelection1 = 2 Then Label1.Caption =
"剪子
" ElseIf ComputerSelection1 = 3 Then Label1.Caption =
"布
" End If 你應(yīng)該能夠看懂,Label1.Caption 指的就是名叫Label1 的控件的Caption 屬 性。 最后我們還要通報(bào)誰(shuí)贏了: Function ShowResult1() Label2.Caption = Result1 End Function 這樣一個(gè)ShowResult1 函數(shù)就可以解決問(wèn)題。 等等,這還沒(méi)完,你創(chuàng)建了函數(shù)還得使用它呀,在 Private Sub CommandButton1_Click ()的那個(gè)過(guò)程里Judge1 語(yǔ)句后面,把它們的名稱輸入進(jìn)去就OK 了! ?? ?? 好了,大功告成!趕快按F5 運(yùn)行看看結(jié)果 怎么樣 你的一個(gè)完整的程序就這 樣制作出來(lái)了,而且是用Word 制作的呢 最后把完整的代碼法上來(lái),可以對(duì)照一下。(由于順序的原因,部分地方可能和 你編出來(lái)的不一樣,但是思想、結(jié)構(gòu)和實(shí)現(xiàn)方法是相同的) Dim MySelection1 As Integer Dim ComputerSelection1 As Integer Dim Result1 As String Private Sub CommandButton1_Click() If MySelection1 = 0 Then MsgBox
"請(qǐng)先選擇!
" ComputerSelection1 = Int(Rnd * 3) + 1 ShowComputerSelection1 Judge1 ShowResult1 End Sub Private Sub OptionButton1_Click() MySelection1 = 1 End Sub Private Sub OptionButton2_Click() MySelection1 = 2 End Sub Private Sub OptionButton3_Click() MySelection1 = 3 End Sub Private Sub UserForm_Click() End Sub Function ShowComputerSelection1() If ComputerSelection1 = 1 Then Label1.Caption =
"石頭
" ElseIf ComputerSelection1 = 2 Then Label1.Caption =
"剪子
" ElseIf ComputerSelection1 = 3 Then Label1.Caption =
"布
" End If End Function Function Judge1() If ComputerSelection1 = 1 Then If MySelection1 = 1 Then Result1 =
"平局
" ElseIf MySelection1 = 2 Then Result1 =
"你輸了
" ElseIf MySelection1 = 3 Then Result1 =
"你贏了
" End If ElseIf ComputerSelection1 = 2 Then If MySelection1 = 1 Then Result1 =
"你贏了
" ElseIf MySelection1 = 2 Then Result1 =
"平局
" ElseIf MySelection1 = 3 Then Result1 =
"你輸了
" End If ElseIf ComputerSelection1 = 3 Then If MySelection1 = 1 Then Result1 =
"你輸了
" ElseIf MySelection1 = 2 Then Result1 =
"你贏了
" ElseIf MySelection1 = 3 Then Result1 =
"平局
" End If End If End Function Function ShowResult1() Label2.Caption = Result1 End Function