摘 要: 參考社會上流行的五子棋游戲,使用VB2005進(jìn)行程序模擬設(shè)計,用數(shù)組的變換實現(xiàn)查找功能,可增加學(xué)生學(xué)習(xí)編寫程序的興趣,提高《面向?qū)ο蟪绦蛟O(shè)計》課程教學(xué)的效果。
關(guān)鍵詞: 五子棋游戲; VB2005; 循環(huán); 數(shù)組
隨著微軟公司的VS.net系列不斷推出,VS.net在游戲編程方面的強(qiáng)大特性逐漸顯露出來,強(qiáng)大功能使之非常適用于各類游戲的開發(fā),本文介紹的是用VB2005模擬系統(tǒng)自帶的掃雷游戲設(shè)計與實現(xiàn)。
1 Visual Studio.NET2005簡介
Visual Basic.NET以Visual Studio.NET為基礎(chǔ),是Visual Studio.NET的主要組成部分。它雖然從Visual Basic 6.0發(fā)展而來,但并不是對Visual Basic 6.0的簡單改良,而是從基礎(chǔ)開始建立了一個新的平臺。Visual Basic.NET是在現(xiàn)有Visual Basic 6.0基礎(chǔ)之上的一次重大飛躍,它是一個全新的平臺,而不是Visual Basic 6.0的一個升級版本。VB2005 是Visual Studio.NET 2005的其中一部分,主要是以VB2005編寫程序的模式。
2 五子棋游戲的設(shè)計與實現(xiàn)
五子棋是起源于中國古代的傳統(tǒng)黑白棋種之一。現(xiàn)代五子棋日文稱之為“連珠”,英譯為“Renju”,英文稱之為“Gobang”或“FIR”(Five in a Row的縮寫),亦有“連五子”、“五子連”、“串珠”、“五目”、“五目碰”、“五格”等多種稱謂。
五子棋不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑的明顯特征“短、平、快”,又有古典哲學(xué)的高深學(xué)問“陰陽易理”;它既有簡單易學(xué)的特性,為人民群眾所喜聞樂見,又有深奧的技巧和高水平的國際性比賽;它的棋文化源淵流長,具有東方的神秘和西方的直觀;既有“場”的概念,亦有“點”的連接。它是中西文化的交流點,是古今哲理的結(jié)晶。
五子棋游戲是社會上流行的一個簡單游戲,大多數(shù)的人都玩過,游戲的規(guī)則也是很多人都會,即在一個規(guī)定的二維數(shù)組中,橫豎撇捺的5個連續(xù)一樣就為勝利。使用VB2005設(shè)計與實現(xiàn)的該游戲既實現(xiàn)了游戲規(guī)則的自動設(shè)定,又實現(xiàn)了五子棋游戲的各項功能。
2.1 功能設(shè)計
五子棋游戲主要有以下功能模塊:(1)級別/等級分管理:設(shè)置五子棋游戲的棋盤大小,根據(jù)游戲者自選等級(程序中暫時設(shè)置了3個等級:初級,棋盤的維數(shù)是10×10二維,計算機(jī)的自動計算水平簡單,玩家能簡單贏取勝利,以吸引玩家的注意與好奇;中級,棋盤的維數(shù)是20×20二維,計算機(jī)的自動計算水平有所提高,玩家不能簡單贏取勝利,需要用一定的時間與計算才能取得勝利;高級,棋盤的維數(shù)是30×30二維,計算機(jī)的自動計算水平為最高,玩家需要用更多的時間與計算才能取得勝利),使得游戲更加公平合理。(2)游戲英雄榜:可以存儲游戲者前10名成績。(3)背景顏色:游戲者可以通過按鈕選擇喜歡的游戲背景顏色。(4)棋子與鼠標(biāo)的背景選擇與更改:選擇玩家喜歡的棋子背景與鼠標(biāo)圖案,玩家可以選擇先后下棋,以更好地吸引玩家進(jìn)行游戲。(5)背景音樂:在五子棋游戲進(jìn)行過程中還提供背景音樂,背景音樂可由游戲者設(shè)置。(6)幫助文檔:為游戲者提供文檔幫助信息,包括游戲簡介、界面的使用、鼠標(biāo)和鍵盤的操作、游戲規(guī)則、疑難問答、版本信息等。
2.2 界面設(shè)計
游戲界面采用VB.NET2005實現(xiàn)。以初級為例,棋盤為100個的一維數(shù)組,即有100個圖片,在圖1中變換為10×10二維數(shù)組。
2.3 主要算法設(shè)計
(1)分別隨機(jī)生成100個一維數(shù)組picturebox控件,把一維數(shù)組轉(zhuǎn)變成10×10二維數(shù)組擺放。在picturebox控件中默認(rèn)顯示為白色背景,如果用鼠標(biāo)點擊每個圖片就會變成黑色的圓圈。主要的玩法是,查找周圍橫豎撇捺的連續(xù)相鄰的5個位置的圖片是否相同,如果相同則勝出,游戲結(jié)束。所以游戲的主要算法是實現(xiàn)了一個位置的周圍橫豎撇捺的連續(xù)相鄰的5個位置的查找。如圖2所示。
在一個二維的數(shù)組中,把橫豎撇捺分為4種情況,橫的時候是把所有的數(shù)組位置查找出來。例如以10×10的數(shù)組為例,把橫的情況放入一個二維數(shù)組中進(jìn)行判斷,利用多重循環(huán)查找連續(xù)5個有相同的標(biāo)記的就為勝出,就是在二維數(shù)組中的每一行進(jìn)行判斷,假設(shè)黑棋為1,白旗為0,只要判斷1與0的個數(shù)即可,主要關(guān)鍵代碼如下:
For i = 1 To 10 ′橫豎的判斷
For j = 1 To 6
For t = j To j + 4
p = p + pd(i, t) ′橫進(jìn)行判斷的數(shù)組
p1 = p1 + pd(t, i) ′豎進(jìn)行判斷的數(shù)組
If p = 5 Or p1 = 5 Then
′判斷是否5個連續(xù)相同
MsgBox("結(jié)束")
p = 0
p1 = 0
End If
Next
p = 0
p1 = 0
Next
Next
(2) 通過相同的方法判斷出豎、撇和捺的情況,就可以判斷勝負(fù),主要的算法是用數(shù)組與數(shù)字替換方法,實現(xiàn)了對兩個玩家的情況判斷。在人機(jī)對決時,計算機(jī)玩家可以使用一個隨機(jī)的生成落子的位置,在生成的位置時要分為難度不一等情況,還要在生成位置中判斷是否存在有棋子,不能重復(fù)放入棋子,再使用一個計時器控件編寫自動判斷勝負(fù)情況。本程序在VB2005.NET中調(diào)試運(yùn)行正常,很好地實現(xiàn)了五子棋的功能。
(3) 五子棋的難度等級是使用一個函數(shù)來完成的,如果出現(xiàn)而立三三、三四、四四等情況,就可認(rèn)為勝出。本程序只是實現(xiàn)了3種情況,還有些情況沒有完成。例如沒有把程序改成網(wǎng)絡(luò)版,現(xiàn)在只是單機(jī)版;在難度等級設(shè)計中的函數(shù)還不是很完善,在今后的編寫中將繼續(xù)完善本程序。
3 主要VB2005技術(shù)及編程
在五子棋游戲中應(yīng)用到了很多的VB2005技術(shù),使用一維數(shù)組變換生成二維數(shù)組的棋盤;利用樹結(jié)構(gòu)實現(xiàn)幫助文檔;通過輸入輸出流讀取葉節(jié)點文檔;采用選項板實現(xiàn)版本信息;利用多媒體控件實現(xiàn)背景音樂等。使用到了圖片的對應(yīng)綁定顯示、圖標(biāo)的變換、數(shù)組變換、游戲的提示、多媒體播放控件等。整個游戲綜合性比較強(qiáng),涉及到控件運(yùn)用、算法應(yīng)用、代碼整理等內(nèi)容,能夠很好地運(yùn)用VB2005設(shè)計程序,提高編程能力,增加學(xué)習(xí)者的興趣。
讓學(xué)生參考案例程序進(jìn)行修改與擴(kuò)展,起到了舉一反三的效果,反復(fù)調(diào)試無錯誤的情況下,使用VB2005程序自帶的打包安裝工具進(jìn)行打包,再讓學(xué)生熟悉一個軟件的正常安裝與卸載測試;還有寫出規(guī)范的Word文檔程序設(shè)計說明書,提交為大作業(yè);最后可以在課堂中集中演示作品并講解,加強(qiáng)學(xué)生的記憶,更好地提高教學(xué)效果與教學(xué)質(zhì)量。
本設(shè)計的程序還存在很多的不足,例如在計算速度上沒能更好地提高效率,程序擴(kuò)展案例不夠豐富。但是在今后的教學(xué)中將不斷完善本程序,使五子棋游戲程序成為一個更好的教學(xué)輔助工具,希望通過這個實例能夠提高學(xué)生學(xué)習(xí)編寫程序的興趣,讓更多的人學(xué)習(xí)與運(yùn)用VB2005編程。
參考文獻(xiàn)
[1] 靳廣斌.Visual Basic 2005程序設(shè)計案例教程[M].北京:北京大學(xué)出版社,2008.
[2] Microsoft.VB.NET程序設(shè)計語言[M]. 北京:高等教育出版社,2004.
[3] 孔長征.VB.NET編程實例教程[M].北京:北京希望電子出版社,2002.
[4] 柯勝,孫進(jìn),鄧志良. 基于Qt4的掃雷游戲的設(shè)計與實現(xiàn)[J].微型機(jī)與應(yīng)用,2012,31(16):6-8.