版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 人工智能project報(bào)告</p><p><b> 目錄</b></p><p> 1.自動(dòng)掃雷…………………………………………………………3</p><p> 需求分析…………………………………………………………3</p><p> 游戲規(guī)則…………………………………………………………3
2、</p><p> 掃雷游戲設(shè)計(jì)……………………………………………………3</p><p> 自動(dòng)掃雷設(shè)計(jì)……………………………………………………5</p><p> 用戶手冊(cè)…………………………………………………………5</p><p> 運(yùn)行結(jié)果…………………………………………………………6</p><p>
3、; 結(jié)論………………………………………………………………7</p><p> 主要算法代碼……………………………………………………7</p><p><b> 1 自動(dòng)掃雷</b></p><p><b> 問(wèn)題描述、需求分析</b></p><p> 掃雷是Windows操作系統(tǒng)自帶的
4、桌面小游戲之一,由于其規(guī)則簡(jiǎn)單,長(zhǎng)期以來(lái)一直受到電腦用戶的歡迎。自動(dòng)掃雷是開始掃雷后根據(jù)掃雷規(guī)則利用計(jì)算機(jī)進(jìn)行掃雷。 開始棋局,單擊第一個(gè)按鈕,因?yàn)閳?zhí)行第一個(gè)動(dòng)作時(shí)所有按鈕是雷的概率都相等,為了方便起見(jiàn)每次開局后都按下第一個(gè)按鈕,如果不幸第一個(gè)按鈕就是雷,那么單擊--開始--重新開局。</p><p><b> 2.游戲規(guī)則</b></p><p> 游戲界面如下
5、圖所示,游戲區(qū)域是由M X N個(gè)格子組成的“雷區(qū)”,左上方的數(shù)字顯示雷區(qū)中未被標(biāo)出的地雷的個(gè)數(shù),右上方的數(shù)字顯示用戶從第一次點(diǎn)擊開始所用的時(shí)間,單位是秒。中間的圖標(biāo)指示游戲的狀態(tài)(完成:笑臉;失?。嚎弈?。用戶需要通過(guò)鼠標(biāo)操作來(lái)確定雷區(qū)中所有地雷的位置:</p><p> 左鍵單擊:嘗試某個(gè)格子是否有地雷。如果該格子下有地雷,則游戲失敗·如果該格子下沒(méi)有地雷但其周圍八個(gè)格子下有地雷,該格子會(huì)顯示其周圍
6、八個(gè)格子中地雷的個(gè)數(shù);如果該格子下沒(méi)有地雷且其周圍八個(gè)格子下也沒(méi)有地雷,則此處被挖開。右鍵單擊:改變某個(gè)格子是否有雷的標(biāo)志(工)?;蜃笥益I同時(shí)單擊:當(dāng)該格子周圍已標(biāo)地雷的個(gè)數(shù)與格子中的數(shù)字相同時(shí),則挖開周圍的其余格子。當(dāng)提示該格子周圍已標(biāo)地雷的個(gè)數(shù)少于格子;</p><p><b> 3.掃雷游戲設(shè)計(jì)</b></p><p> 每個(gè)格子有如下幾種狀態(tài):</p
7、><p> {MS_NORMAL,MS_OPEN,MS_FLAG,MS_QUEST,MS_EXPLODE} MINESTATUS</p><p><b> 1)格子類</b></p><p><b> 共有變量如下:</b></p><p> MINESTATUS m_nStatus;//格子狀
8、態(tài)</p><p> int m_nMineNum;//格子周圍的雷數(shù),即格子上顯示的數(shù)字</p><p> CWnd *m_pParent;//父窗口</p><p> int m_nX,m_nY; //按下按鈕的橫縱坐標(biāo)</p><p><b> 成員函數(shù)</b></p><p>
9、 SetStatus(MINESTATUS nStatus)//設(shè)置狀態(tài)</p><p> GetStatus()//獲取狀態(tài)</p><p> SetMineNum(int nMineNum)//設(shè)置雷數(shù)</p><p> GetMineNum() //獲取雷數(shù)</p><p> DrawItem(BOOL bFail=TRUE)
10、;//繪制格子</p><p><b> 布雷類</b></p><p><b> 共有變量如下</b></p><p> int m_nRow,m_nCol;//棋盤有多少行多少列</p><p> int m_nMineNum; //棋盤上的雷數(shù)</p><p&g
11、t; int m_nX,m_nY; //棋盤的位置</p><p> int m_nOldMine; </p><p> int m_aMineTest[9];</p><p> int m_nMineTest;</p><p> CMineButton *m_aLandMine[10000]; //棋盤</p&g
12、t;<p> CWnd *m_pParent;</p><p><b> 成員函數(shù)</b></p><p> Create(int nRow,int nCol,int nMineNum,int nX,int nY,CWnd *pParent);</p><p> Reset(int nRow,int nCol,int nM
13、ineNum);//重新布局</p><p> ReDraw(BOOL bFail);//刷新棋局</p><p> LButtonDown(CPoint point);//左鍵按下</p><p> BothButtonDown(CPoint point);//左鍵與右鍵同時(shí)按下</p><p> RButtonDown(CPoin
14、t point);//右鍵按下</p><p> MouseMove(CPoint point,int bBothDown);//鼠標(biāo)移動(dòng)</p><p> LButtonUp(CPoint point);//左鍵彈起</p><p> BothButtonUp(CPoint point);//左鍵與右鍵同時(shí)彈起</p><p> O
15、penMine(int nCurMine);//開局函數(shù)</p><p> IsSuccess(); //判斷是否掃雷成功</p><p> RndBtShdDn(int nCurMine);</p><p> GetMineNum()//獲取棋盤的雷數(shù)</p><p> GetRight(int nCurMine)//獲取四鄰域的
16、中心點(diǎn)像素正右方像素點(diǎn)的位置</p><p> GetLeft(int nCurMine)//獲取四鄰域的中心點(diǎn)像素正下左像素點(diǎn)的位置</p><p> GetTop(int nCurMine)//獲取四鄰域的中心點(diǎn)像素正上方像素點(diǎn)的位置</p><p> GetBot(int nCurMine)//獲取四鄰域的中心點(diǎn)像素正下方像素點(diǎn)的位置</p>
17、<p><b> 布雷算法 :</b></p><p> 首先定義一個(gè)n*n的二維數(shù)組,該數(shù)組的i-1到i+1,j-1到j(luò)+1除去i,j本身。值為周 圍有幾個(gè)雷。如果該數(shù)組的值為10則本身是雷。然后自動(dòng)生成m個(gè)雷,讓這m個(gè)雷分布在界面上。被選中的值i,j點(diǎn)的值為10,從i-1到i+1,從j-1到j(luò)+1的值都+1;然后在界面上想辦法區(qū)分出n*n個(gè)格子,然后把格子的坐標(biāo)和
18、二維數(shù)組關(guān)聯(lián)起來(lái)做掃雷那首先一定是生成一個(gè)矩陣,比如10*10的區(qū)域,里面再用數(shù)字來(lái)表示有沒(méi)有雷用一個(gè)結(jié)構(gòu)體數(shù)組保存雷的隱藏,翻開和標(biāo)志情況關(guān)于你所說(shuō)的擴(kuò)展,我想是不是數(shù)組的邊界問(wèn)題?到了數(shù)組邊界上,遇到下標(biāo)越界錯(cuò)誤,為矩陣再加一道邊界比如你要生成3*3的雷區(qū),而實(shí)際上,需要定義5*5的數(shù)組,而數(shù)組的四周定義為沒(méi)有雷的空地,如下:0代表空地,1代表雷</p><p><b> 00000</b&
19、gt;</p><p><b> 01010</b></p><p><b> 00100</b></p><p><b> 00000</b></p><p><b> 00000</b></p><p> 搜索的時(shí)候就
20、在數(shù)組中間這3*3的區(qū)域內(nèi)進(jìn)行,比如點(diǎn)擊了ime(2,2)的區(qū)域,也就是顯示出來(lái)的雷區(qū)中的第一塊空地,則程序首先需要判斷這里有沒(méi)有雷,然后再計(jì)算周圍八個(gè)區(qū)域的雷的情況,將累加結(jié)果放到這個(gè)區(qū)域內(nèi),如下:</p><p> If ime(2,2)=1 then</p><p><b> 踩到地雷的代碼</b></p><p> else&
21、#39;沒(méi)踩到地雷</p><p> for i=1 to 3</p><p> for j=1 to 3</p><p> if i=2 and j=2 then next</p><p> imesum=imesum+ime(i,j)</p><p> j++ i++ 這樣就統(tǒng)計(jì)出了該區(qū)域周圍雷的數(shù)量.
22、</p><p><b> 為程序添加背景音樂(lè)</b></p><p> PlaySound(MAKEINTRESOURCE(IDR_WAVE1),::GetModuleHandle(NULL),SND_ASYNC|SND_RESOURCE|SND_NODEFAULT|SND_LOOP);</p><p> 注意:要播放背景音樂(lè)必須加入以
23、下兩個(gè)頭文件</p><p> #include <mmsystem.h>//導(dǎo)入聲音頭文件 </p><p> #pragma comment(lib, "WINMM.LIB")//導(dǎo)入聲音頭文件庫(kù) </p><p><b> 4. 自動(dòng)掃雷設(shè)計(jì)</b></p><p> 在第一
24、次點(diǎn)擊前,所有格子下面有地雷的概率相同,因此隨意點(diǎn)擊任何一個(gè)即可,定義一個(gè)IsChange變量,用于循環(huán)掃雷。</p><p> 當(dāng)某個(gè)格子(X)顯示的數(shù)字(Mine(X))等于它周圍被標(biāo)為地雷的格子的個(gè)數(shù),那么它周圍未被標(biāo)示的格子下一定沒(méi)有地雷。此時(shí)可以單擊它周圍初始狀態(tài)的格子,或者同時(shí)左、右鍵單擊這個(gè)顯示數(shù)字格子。</p><p> 如果中心點(diǎn)的格子數(shù)值與周圍不知狀態(tài)的格子數(shù)相等,
25、那么它周圍沒(méi)有被標(biāo)為地雷的格子下面一定有地雷。此時(shí)可以右鍵單擊它周圍沒(méi)有被標(biāo)為地雷的格子。</p><p> 以上兩步分別對(duì)應(yīng)一個(gè)for循環(huán),第一重循環(huán)用于標(biāo)識(shí)肯定是雷的格子(即插旗子),第二重循環(huán)用于尋找中心點(diǎn)的格子數(shù)值與周圍不知狀態(tài)的格子數(shù)相等的格子(即根據(jù)第一重循環(huán)的結(jié)果,找到肯定不是雷的格子并單擊),如果第一重循環(huán)執(zhí)行了插旗子的動(dòng)作IsChange=1,第二種循環(huán)如果執(zhí)行了單擊的動(dòng)作IsChange=1
26、;當(dāng)IsChange!=0時(shí)一直執(zhí)行上兩重循環(huán),直到掃完為止,或者出現(xiàn)猜的情況(踩到雷的情況只有在第一步時(shí)才有可能出現(xiàn),也就是說(shuō)如果第一步不是雷,那么接下來(lái)的整盤棋都不會(huì)踩到雷)。</p><p><b> 4.用戶手冊(cè)</b></p><p> 運(yùn)行程序,單擊 游戲-->開始 正常情況下可以掃雷成功,偶然情況即出現(xiàn)猜的情況時(shí)給出提示對(duì)話框;</p
27、><p><b> 程序運(yùn)行結(jié)果:</b></p><p> 第一次就踩到雷 掃雷成功 </p><p> 掃雷出現(xiàn)猜的情況如下:</p><p> 結(jié)論:此掃雷算法大部分情況可以完成掃雷任務(wù);</p>
28、<p><b> 主要算法程序代碼:</b></p><p> void CMineDlg::OnCommandRestart()</p><p><b> {</b></p><p> bFail = FALSE;</p><p> if(bStart)</p>
29、<p> KillTimer(1);</p><p> bStart = FALSE;</p><p> LandMine.Reset(LandMine.GetRow(),LandMine.GetCol(),LandMine.GetMineNum());</p><p> TimeCount.SetNumber(0);</p>&l
30、t;p> MineCount.SetNumber(LandMine.GetMineNum());</p><p> m_Face.SetBitmap(&m_FaceNormal);</p><p> RedrawWindow();</p><p><b> int i,j;</b></p><p>
31、 int MineNum=LandMine.GetMineNum();</p><p> int IsChange;//用于退出循環(huán)</p><p> int t,Num,Num1;//Num用于存儲(chǔ)獲取8鄰域MS_EXPLODE狀態(tài)的個(gè)數(shù),t用于獲取8領(lǐng)域點(diǎn)的位置</p><p> int AllItem=LandMine.GetRow()*LandMin
32、e.GetCol(); //獲得棋盤的大小,即一位數(shù)組的長(zhǎng)度</p><p> OnLButtonDown(1,CPoint(LandMine.m_aLandMine[0]->m_nX,LandMine.m_aLandMine[0]->m_nY)); //每次都是按下第一個(gè)按鈕,因?yàn)榈谝淮伟聪履膫€(gè)概率都是相等的</p><p> OnLButtonUp(1,CPoint
33、(LandMine.m_aLandMine[0]->m_nX,LandMine.m_aLandMine[0]->m_nY));</p><p> while(MS_EXPLODE && LandMine.m_aLandMine[1]->m_nStatus==MS_NORMAL&&LandMine.m_aLandMine[10]->m_nStatus==MS
34、_NORMAL)</p><p><b> {</b></p><p> if (LandMine.m_aLandMine[0]->m_nStatus==MS_EXPLODE) break;</p><p> LandMine.Reset(LandMine.GetRow(),LandMine.GetCol(),LandMine.Ge
35、tMineNum());</p><p> OnLButtonDown(1,CPoint(LandMine.m_aLandMine[0]->m_nX,LandMine.m_aLandMine[0]->m_nY)); //每次都是按下第一個(gè)按鈕,因?yàn)榈谝淮伟聪履膫€(gè)概率都是相等的</p><p> OnLButtonUp(1,CPoint(LandMine.m_aLandMi
36、ne[0]->m_nX,LandMine.m_aLandMine[0]->m_nY));</p><p><b> }</b></p><p><b> do</b></p><p> { //第一種情況</p><p> IsChange=0;</p><
37、;p> for (i=0;i<AllItem;i++) //狀態(tài)MS_NORMAL,MS_OPEN,MS_FLAG,MS_QUEST,MS_EXPLODE</p><p><b> {</b></p><p> Num=0; //每次在累加的時(shí)候千萬(wàn)別忘記初始化</p><p> if (LandMine.m_aLandM
38、ine[i]->m_nStatus==MS_OPEN && LandMine.m_aLandMine[i]->m_nMineNum>0) //對(duì)于打開的按鈕來(lái)說(shuō)</p><p><b> {</b></p><p> t=LandMine.GetLeft(i);//4鄰域</p><p> if (t&
39、gt;=0 && LandMine.m_aLandMine[t]->m_nStatus!=MS_OPEN)</p><p><b> Num++;</b></p><p> t=LandMine.GetTop(i);</p><p><b> if (t>=0)</b></p>
40、<p><b> {</b></p><p> if (LandMine.m_aLandMine[t]->m_nStatus!=MS_OPEN)</p><p><b> Num++;</b></p><p> t=LandMine.GetLeft(LandMine.GetTop(i));<
41、;/p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus!=MS_OPEN) </p><p><b> Num++;</b></p><p> t=LandMine.GetRight(LandMine.GetTop(i));</p><p&
42、gt; if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus!=MS_OPEN) </p><p><b> Num++;</b></p><p><b> }</b></p><p> t=LandMine.GetRight(i);</p&
43、gt;<p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus!=MS_OPEN) </p><p><b> Num++;</b></p><p> t=LandMine.GetBot(i);</p><p><b> if (t>
44、=0)</b></p><p><b> {</b></p><p> if (LandMine.m_aLandMine[t]->m_nStatus!=MS_OPEN)</p><p><b> Num++;</b></p><p> t=LandMine.GetLeft(
45、LandMine.GetBot(i));</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus!=MS_OPEN)</p><p><b> Num++;</b></p><p> t=LandMine.GetRight(LandMine.GetBot(
46、i));</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus!=MS_OPEN)</p><p><b> Num++;</b></p><p><b> }</b></p><p> if (Num&g
47、t;0 && Num==LandMine.m_aLandMine[i]->m_nMineNum)</p><p><b> {</b></p><p> t=LandMine.GetLeft(i);//4鄰域</p><p> if (t>=0 && LandMine.m_aLandMine[t
48、]->m_nStatus==MS_NORMAL) </p><p><b> {</b></p><p> OnRButtonDown(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnRButtonUp
49、(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> MineNum--;</p><p> IsChange=1;</p><p><b> }</b></p><p> t=LandMin
50、e.GetTop(i);</p><p><b> if (t>=0)</b></p><p><b> {</b></p><p> if (LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL)</p><p><b> {&l
51、t;/b></p><p> OnRButtonDown(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnRButtonUp(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine
52、[t]->m_nY));</p><p> MineNum--;</p><p> IsChange=1;</p><p><b> }</b></p><p> t=LandMine.GetLeft(LandMine.GetTop(i));</p><p> if (t>=
53、0 && LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL)</p><p><b> {</b></p><p> OnRButtonDown(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));
54、</p><p> OnRButtonUp(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> MineNum--;</p><p> IsChange=1;</p><p><b> }</b&g
55、t;</p><p> t=LandMine.GetRight(LandMine.GetTop(i));</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL) </p><p><b> {</b></p><
56、p> OnRButtonDown(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnRButtonUp(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p>
57、;<p> MineNum--;</p><p> IsChange=1;</p><p><b> }</b></p><p><b> }</b></p><p> t=LandMine.GetRight(i);</p><p> if (t&g
58、t;=0 && LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL)</p><p><b> {</b></p><p> OnRButtonDown(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY)
59、); </p><p> OnRButtonUp(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> MineNum--;</p><p> IsChange=1;</p><p><b> }</
60、b></p><p> t=LandMine.GetBot(i);</p><p><b> if (t>=0)</b></p><p><b> {</b></p><p> if (LandMine.m_aLandMine[t]->m_nStatus==MS_NORMA
61、L)</p><p><b> {</b></p><p> OnRButtonDown(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnRButtonUp(2,CPoint(LandMine.m_aLand
62、Mine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> MineNum--;</p><p> IsChange=1;</p><p><b> }</b></p><p> t=LandMine.GetLeft(LandMine.GetBot(
63、i));</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL)</p><p><b> {</b></p><p> OnRButtonDown(2,CPoint(LandMine.m_aLandMine[t]->m_nX
64、,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnRButtonUp(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> MineNum--;</p><p> IsChange=1;<
65、/p><p><b> }</b></p><p> t=LandMine.GetRight(LandMine.GetBot(i));</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL) </p><p>&
66、lt;b> {</b></p><p> OnRButtonDown(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> OnRButtonUp(2,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine
67、.m_aLandMine[t]->m_nY));</p><p> MineNum--;</p><p> IsChange=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&
68、gt;</p><p><b> }</b></p><p><b> }</b></p><p><b> //第二種情況</b></p><p> for (j=0;j<AllItem;j++) //狀態(tài)MS_NORMAL,MS_OPEN,MS_FLAG,MS
69、_QUEST,MS_EXPLODE</p><p><b> {</b></p><p> Num1=0; //每次在累加的時(shí)候千萬(wàn)別忘記初始化</p><p> if (LandMine.m_aLandMine[j]->m_nStatus==MS_OPEN && LandMine.m_aLandMine[j]-&
70、gt;m_nMineNum>0) //對(duì)于打開并顯示數(shù)字的按鈕來(lái)說(shuō)</p><p><b> {</b></p><p> t=LandMine.GetLeft(j);//4鄰域</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus==MS_FL
71、AG)</p><p><b> Num1++;</b></p><p> t=LandMine.GetTop(j);</p><p><b> if (t>=0)</b></p><p><b> {</b></p><p> if (
72、LandMine.m_aLandMine[t]->m_nStatus==MS_FLAG)</p><p><b> Num1++;</b></p><p> t=LandMine.GetLeft(LandMine.GetTop(j));</p><p> if (t>=0 && LandMine.m_aLand
73、Mine[t]->m_nStatus==MS_FLAG) </p><p><b> Num1++;</b></p><p> t=LandMine.GetRight(LandMine.GetTop(j));</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_
74、nStatus==MS_FLAG) </p><p><b> Num1++;</b></p><p><b> }</b></p><p> t=LandMine.GetRight(j);</p><p> if (t>=0 && LandMine.m_aLandMi
75、ne[t]->m_nStatus==MS_FLAG) </p><p><b> Num1++;</b></p><p> t=LandMine.GetBot(j);</p><p><b> if (t>=0)</b></p><p><b> {</b>
76、</p><p> if (LandMine.m_aLandMine[t]->m_nStatus==MS_FLAG)</p><p><b> Num1++;</b></p><p> t=LandMine.GetLeft(LandMine.GetBot(j));</p><p> if (t>=0
77、&& LandMine.m_aLandMine[t]->m_nStatus==MS_FLAG)</p><p><b> Num1++;</b></p><p> t=LandMine.GetRight(LandMine.GetBot(j));</p><p> if (t>=0 && Land
78、Mine.m_aLandMine[t]->m_nStatus==MS_FLAG)</p><p><b> Num1++;</b></p><p><b> }</b></p><p> if (Num1>0 && Num1==LandMine.m_aLandMine[j]->m_n
79、MineNum)</p><p><b> {</b></p><p> t=LandMine.GetLeft(j);//4鄰域</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL) </p><p>&l
80、t;b> {</b></p><p> OnLButtonDown(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnLButtonUp(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine
81、.m_aLandMine[t]->m_nY));</p><p> IsChange=1;</p><p><b> }</b></p><p> t=LandMine.GetTop(j);</p><p><b> if (t>=0)</b></p><p&
82、gt;<b> {</b></p><p> if (LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL)</p><p><b> {</b></p><p> OnLButtonDown(1,CPoint(LandMine.m_aLandMine[t]->m_
83、nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnLButtonUp(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> IsChange=1;</p><p><b> }&l
84、t;/b></p><p> t=LandMine.GetLeft(LandMine.GetTop(j));</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL)</p><p><b> {</b></p>
85、<p> OnLButtonDown(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnLButtonUp(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</
86、p><p> IsChange=1;</p><p><b> }</b></p><p> t=LandMine.GetRight(LandMine.GetTop(j));</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus==
87、MS_NORMAL) </p><p><b> {</b></p><p> OnLButtonDown(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnLButtonUp(1,CPoint(LandMin
88、e.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> IsChange=1;</p><p><b> }</b></p><p><b> }</b></p><p> t=LandMine.GetRi
89、ght(j);</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL)</p><p><b> {</b></p><p> OnLButtonDown(1,CPoint(LandMine.m_aLandMine[t]->m
90、_nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnLButtonUp(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> IsChange=1;</p><p><b> }&
91、lt;/b></p><p> t=LandMine.GetBot(j);</p><p><b> if (t>=0)</b></p><p><b> {</b></p><p> if (LandMine.m_aLandMine[t]->m_nStatus==MS_N
92、ORMAL)</p><p><b> {</b></p><p> OnLButtonDown(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnLButtonUp(1,CPoint(LandMine.m_a
93、LandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> IsChange=1;</p><p><b> }</b></p><p> t=LandMine.GetLeft(LandMine.GetBot(j));</p><p> if
94、 (t>=0 && LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL)</p><p><b> {</b></p><p> OnLButtonDown(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->
95、m_nY)); </p><p> OnLButtonUp(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> IsChange=1;</p><p><b> }</b></p><p>
96、t=LandMine.GetRight(LandMine.GetBot(j));</p><p> if (t>=0 && LandMine.m_aLandMine[t]->m_nStatus==MS_NORMAL) </p><p><b> {</b></p><p> OnLButtonDown(1,CP
97、oint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY)); </p><p> OnLButtonUp(1,CPoint(LandMine.m_aLandMine[t]->m_nX,LandMine.m_aLandMine[t]->m_nY));</p><p> IsChange=1;
98、</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></
99、p><p> }while (IsChange);</p><p> CTSDlg dlg;</p><p> if (MineNum!=0 && LandMine.m_aLandMine[0]->m_nStatus!=MS_EXPLODE)</p><p> dlg.DoModal();</p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人工智能課程設(shè)計(jì)
- 人工智能課程設(shè)計(jì)
- 《人工智能》課程設(shè)計(jì)報(bào)告--動(dòng)物識(shí)別系統(tǒng)
- 人工智能課程設(shè)計(jì)報(bào)告-五子棋
- 人工智能課程設(shè)計(jì)報(bào)告-羅馬尼亞度假問(wèn)題
- 人工智能課程設(shè)計(jì)---五子棋
- 掃雷游戲課程設(shè)計(jì)報(bào)告
- 掃雷畢業(yè)課程設(shè)計(jì)報(bào)告
- vb掃雷課程設(shè)計(jì)報(bào)告
- 掃雷游戲課程設(shè)計(jì)報(bào)告
- 人工智能與專家系統(tǒng)課程設(shè)計(jì)-迷宮游戲設(shè)計(jì)報(bào)告
- c++掃雷課程設(shè)計(jì)報(bào)告
- 掃雷課程設(shè)計(jì)
- 掃雷課程設(shè)計(jì)--掃雷程序設(shè)計(jì)
- 人工智能報(bào)告
- 人工智能課程說(shuō)明
- java課程設(shè)計(jì)--掃雷游戲報(bào)告
- java掃雷課程設(shè)計(jì)
- java 課程設(shè)計(jì) 掃雷
- 人工智能檢索報(bào)告
評(píng)論
0/150
提交評(píng)論