資源描述:
《VB掃雷小游戲》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、VB掃雷小游戲1.游戲功能分析掃雷小游戲需要做哪些功能呢?在開始游戲后,程序需要根據(jù)難度系數(shù)自動(dòng)生成一片雷區(qū),雷區(qū)包含少數(shù)地雷和多數(shù)空地,在規(guī)定時(shí)間內(nèi)找出雷區(qū)中的所有地雷即可勝利。左鍵點(diǎn)擊地雷會(huì)導(dǎo)致游戲失敗,并給出所有地雷的位置;右鍵點(diǎn)擊地雷或者空地都會(huì)在上面標(biāo)記一面小旗,但右鍵點(diǎn)擊地雷時(shí),剩余地雷數(shù)會(huì)-1,而點(diǎn)擊空地時(shí)不會(huì)。每次右鍵標(biāo)記地雷后,都要判斷剩余地雷數(shù)是否為0,是的話就勝利了。2.控件分析通過以上的游戲功能分析可以得到我們需要用到的控件。在游戲提示方面,我們需要1個(gè)標(biāo)簽lblbomb來顯示雷數(shù),1個(gè)標(biāo)簽lbltime來顯示剩余時(shí)間,一
2、個(gè)timer1來計(jì)時(shí),1個(gè)按鈕cmdstart作為開始游戲的按鈕。并且把以上控件全放如一個(gè)框架frame1中。在雷區(qū)這里,我們需要1個(gè)按鈕來表示空地,并設(shè)置index為0;1個(gè)按鈕來表示地雷,并設(shè)置index為0;一個(gè)標(biāo)簽來顯示周圍地雷數(shù),并設(shè)置index為0.在游戲開始后,需要根據(jù)游戲難度加載出空地按鈕和地雷按鈕以及顯示周圍地雷數(shù)得標(biāo)簽按鈕下面給出主要控件的名稱及主要參數(shù)【說明】【名稱】【index】空地按鈕Cmd00地雷按鈕Cmd10標(biāo)簽按鈕lblnum0在調(diào)試過程中可以將空地按鈕的caption設(shè)置為0,地雷按鈕的caption設(shè)置為1,便
3、于調(diào)試。3.變量參數(shù)分析主要游戲參數(shù):PubliclevelAsInteger'游戲難度PubliccmdnumAsInteger'雷區(qū)所有按鈕數(shù)目PublicbombnumAsInteger'地雷數(shù)目PublictimerestAsInteger'剩余時(shí)間Publicmatrix()AsInteger'雷區(qū)矩陣,0代表空地,1代表地雷PublicbombrestAsInteger'剩余地雷數(shù)這里我們?cè)O(shè)置雷區(qū)為正方形,此正方形的一條邊上有幾個(gè)按鈕,難度就是幾,所以有cmdnum=level^2。設(shè)置地雷數(shù)為按鈕總數(shù)的七分之一bombnum=cmd
4、num7,注意是整除。游戲開始時(shí)bombrest=bombnum。matrix()是動(dòng)態(tài)數(shù)組,在游戲設(shè)置難度以后,Redimmatrix(level,level)即可,用來儲(chǔ)存游戲雷區(qū)的情況,為0代表是空地,為1代表是地雷。主要界面參數(shù):PubliclkasInteger'界面周圍的留空PublicswasInteger'雷區(qū)每個(gè)按鈕的寬PublicshasInteger'雷區(qū)每個(gè)按鈕的高通過以這三個(gè)參數(shù)為基底,可以很方便的給出每個(gè)按鈕的坐標(biāo)位置。4.功能實(shí)現(xiàn)分析主要游戲代碼思路:窗體加載時(shí),將cmd0,cmd1,lblnum設(shè)置為不可見,ti
5、mer1設(shè)置為不可用。點(diǎn)擊開始時(shí),首先inputbox輸入難度系數(shù),若輸入數(shù)字小于5,則難度等于5;若輸入數(shù)字大于15,則難度等于15;輸入數(shù)字在5到15之間,則難度等于該輸入數(shù)字。根據(jù)level求出所有游戲參數(shù)信息cmdnum=level^2bombnum=cmdnum7bombrest=bombnum設(shè)置界面參數(shù)lk=300,sw=600,sh=600,設(shè)置剩余時(shí)間timerest=300重定義動(dòng)態(tài)數(shù)組Redimmatrix(level,level),以及給出每個(gè)位置的值,代碼如下ReDimmatrix(level,level)Random
6、izeDimrAsInteger'隨機(jī)數(shù)Fori=1Tobombnum'在矩陣內(nèi)放置bombnum個(gè)1,其他位置為0r=Int(cmdnum*Rnd)+1'隨機(jī)范圍1到cmdnumj=(r-1)level'根據(jù)隨機(jī)數(shù)得到坐標(biāo)(j,k)k=(r-1)ModlevelIfmatrix(j,k)<>1Then'如果(j,k)位置未放置地雷,就放上matrix(j,k)=1Else'已經(jīng)放置地雷了,則再重來一次i=i-1EndIfNexti對(duì)窗體大小的設(shè)置Frame1.Left=0Frame1.Top=0Frame1.Width=level*sw+2*
7、lkFrame1.Height=800Form1.Width=level*sw+2*lkForm1.Height=level*sh+2*lk+Frame1.Height+lk對(duì)于控件的加載以及初始設(shè)置,首先加載出所需要數(shù)量的控件,然后我們需要根據(jù)matrix的值來一個(gè)一個(gè)放置控件,并調(diào)節(jié)控件的屬性,比如放置炸彈即cmd1的代碼如下Dimp1asIntegerp1=0'第p1個(gè)炸彈Fori=0Tolevel-1Forj=0Tolevel-1Ifmatrix(i,j)=1ThenDimcmdAsCommandButton'放炸彈Setcmd=Cmd1
8、(p1)cmd.Top=Frame1.Height+lk+i*shcmd.Left=lk+j*swcmd.Width=sw-20'每個(gè)按