版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 人工智能project報告</p><p><b> 目錄</b></p><p> 1.自動掃雷…………………………………………………………3</p><p> 需求分析…………………………………………………………3</p><p> 游戲規(guī)則…………………………………………………………3
2、</p><p> 掃雷游戲設計……………………………………………………3</p><p> 自動掃雷設計……………………………………………………5</p><p> 用戶手冊…………………………………………………………5</p><p> 運行結(jié)果…………………………………………………………6</p><p>
3、; 結(jié)論………………………………………………………………7</p><p> 主要算法代碼……………………………………………………7</p><p><b> 1 自動掃雷</b></p><p><b> 問題描述、需求分析</b></p><p> 掃雷是Windows操作系統(tǒng)自帶的
4、桌面小游戲之一,由于其規(guī)則簡單,長期以來一直受到電腦用戶的歡迎。自動掃雷是開始掃雷后根據(jù)掃雷規(guī)則利用計算機進行掃雷。 開始棋局,單擊第一個按鈕,因為執(zhí)行第一個動作時所有按鈕是雷的概率都相等,為了方便起見每次開局后都按下第一個按鈕,如果不幸第一個按鈕就是雷,那么單擊--開始--重新開局。</p><p><b> 2.游戲規(guī)則</b></p><p> 游戲界面如下
5、圖所示,游戲區(qū)域是由M X N個格子組成的“雷區(qū)”,左上方的數(shù)字顯示雷區(qū)中未被標出的地雷的個數(shù),右上方的數(shù)字顯示用戶從第一次點擊開始所用的時間,單位是秒。中間的圖標指示游戲的狀態(tài)(完成:笑臉;失敗:哭臉)。用戶需要通過鼠標操作來確定雷區(qū)中所有地雷的位置:</p><p> 左鍵單擊:嘗試某個格子是否有地雷。如果該格子下有地雷,則游戲失敗·如果該格子下沒有地雷但其周圍八個格子下有地雷,該格子會顯示其周圍
6、八個格子中地雷的個數(shù);如果該格子下沒有地雷且其周圍八個格子下也沒有地雷,則此處被挖開。右鍵單擊:改變某個格子是否有雷的標志(工)?;蜃笥益I同時單擊:當該格子周圍已標地雷的個數(shù)與格子中的數(shù)字相同時,則挖開周圍的其余格子。當提示該格子周圍已標地雷的個數(shù)少于格子;</p><p><b> 3.掃雷游戲設計</b></p><p> 每個格子有如下幾種狀態(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; //按下按鈕的橫縱坐標</p><p><b> 成員函數(shù)</b></p><p>
9、 SetStatus(MINESTATUS nStatus)//設置狀態(tài)</p><p> GetStatus()//獲取狀態(tài)</p><p> SetMineNum(int nMineNum)//設置雷數(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);//左鍵與右鍵同時按下</p><p> RButtonDown(CPoin
14、t point);//右鍵按下</p><p> MouseMove(CPoint point,int bBothDown);//鼠標移動</p><p> LButtonUp(CPoint point);//左鍵彈起</p><p> BothButtonUp(CPoint point);//左鍵與右鍵同時彈起</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、中心點像素正右方像素點的位置</p><p> GetLeft(int nCurMine)//獲取四鄰域的中心點像素正下左像素點的位置</p><p> GetTop(int nCurMine)//獲取四鄰域的中心點像素正上方像素點的位置</p><p> GetBot(int nCurMine)//獲取四鄰域的中心點像素正下方像素點的位置</p>
17、<p><b> 布雷算法 :</b></p><p> 首先定義一個n*n的二維數(shù)組,該數(shù)組的i-1到i+1,j-1到j+1除去i,j本身。值為周 圍有幾個雷。如果該數(shù)組的值為10則本身是雷。然后自動生成m個雷,讓這m個雷分布在界面上。被選中的值i,j點的值為10,從i-1到i+1,從j-1到j+1的值都+1;然后在界面上想辦法區(qū)分出n*n個格子,然后把格子的坐標和
18、二維數(shù)組關(guān)聯(lián)起來做掃雷那首先一定是生成一個矩陣,比如10*10的區(qū)域,里面再用數(shù)字來表示有沒有雷用一個結(jié)構(gòu)體數(shù)組保存雷的隱藏,翻開和標志情況關(guān)于你所說的擴展,我想是不是數(shù)組的邊界問題?到了數(shù)組邊界上,遇到下標越界錯誤,為矩陣再加一道邊界比如你要生成3*3的雷區(qū),而實際上,需要定義5*5的數(shù)組,而數(shù)組的四周定義為沒有雷的空地,如下: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> 搜索的時候就
20、在數(shù)組中間這3*3的區(qū)域內(nèi)進行,比如點擊了ime(2,2)的區(qū)域,也就是顯示出來的雷區(qū)中的第一塊空地,則程序首先需要判斷這里有沒有雷,然后再計算周圍八個區(qū)域的雷的情況,將累加結(jié)果放到這個區(qū)域內(nèi),如下:</p><p> If ime(2,2)=1 then</p><p><b> 踩到地雷的代碼</b></p><p> else&
21、#39;沒踩到地雷</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)計出了該區(qū)域周圍雷的數(shù)量.
22、</p><p><b> 為程序添加背景音樂</b></p><p> PlaySound(MAKEINTRESOURCE(IDR_WAVE1),::GetModuleHandle(NULL),SND_ASYNC|SND_RESOURCE|SND_NODEFAULT|SND_LOOP);</p><p> 注意:要播放背景音樂必須加入以
23、下兩個頭文件</p><p> #include <mmsystem.h>//導入聲音頭文件 </p><p> #pragma comment(lib, "WINMM.LIB")//導入聲音頭文件庫 </p><p><b> 4. 自動掃雷設計</b></p><p> 在第一
24、次點擊前,所有格子下面有地雷的概率相同,因此隨意點擊任何一個即可,定義一個IsChange變量,用于循環(huán)掃雷。</p><p> 當某個格子(X)顯示的數(shù)字(Mine(X))等于它周圍被標為地雷的格子的個數(shù),那么它周圍未被標示的格子下一定沒有地雷。此時可以單擊它周圍初始狀態(tài)的格子,或者同時左、右鍵單擊這個顯示數(shù)字格子。</p><p> 如果中心點的格子數(shù)值與周圍不知狀態(tài)的格子數(shù)相等,
25、那么它周圍沒有被標為地雷的格子下面一定有地雷。此時可以右鍵單擊它周圍沒有被標為地雷的格子。</p><p> 以上兩步分別對應一個for循環(huán),第一重循環(huán)用于標識肯定是雷的格子(即插旗子),第二重循環(huán)用于尋找中心點的格子數(shù)值與周圍不知狀態(tài)的格子數(shù)相等的格子(即根據(jù)第一重循環(huán)的結(jié)果,找到肯定不是雷的格子并單擊),如果第一重循環(huán)執(zhí)行了插旗子的動作IsChange=1,第二種循環(huán)如果執(zhí)行了單擊的動作IsChange=1
26、;當IsChange!=0時一直執(zhí)行上兩重循環(huán),直到掃完為止,或者出現(xiàn)猜的情況(踩到雷的情況只有在第一步時才有可能出現(xiàn),也就是說如果第一步不是雷,那么接下來的整盤棋都不會踩到雷)。</p><p><b> 4.用戶手冊</b></p><p> 運行程序,單擊 游戲-->開始 正常情況下可以掃雷成功,偶然情況即出現(xiàn)猜的情況時給出提示對話框;</p
27、><p><b> 程序運行結(jié)果:</b></p><p> 第一次就踩到雷 掃雷成功 </p><p> 掃雷出現(xiàn)猜的情況如下:</p><p> 結(jié)論:此掃雷算法大部分情況可以完成掃雷任務;</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用于存儲獲取8鄰域MS_EXPLODE狀態(tài)的個數(shù),t用于獲取8領(lǐng)域點的位置</p><p> int AllItem=LandMine.GetRow()*LandMin
32、e.GetCol(); //獲得棋盤的大小,即一位數(shù)組的長度</p><p> OnLButtonDown(1,CPoint(LandMine.m_aLandMine[0]->m_nX,LandMine.m_aLandMine[0]->m_nY)); //每次都是按下第一個按鈕,因為第一次按下哪個概率都是相等的</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)); //每次都是按下第一個按鈕,因為第一次按下哪個概率都是相等的</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; //每次在累加的時候千萬別忘記初始化</p><p> if (LandMine.m_aLandM
38、ine[i]->m_nStatus==MS_OPEN && LandMine.m_aLandMine[i]->m_nMineNum>0) //對于打開的按鈕來說</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; //每次在累加的時候千萬別忘記初始化</p><p> if (LandMine.m_aLandMine[j]->m_nStatus==MS_OPEN && LandMine.m_aLandMine[j]-&
70、gt;m_nMineNum>0) //對于打開并顯示數(shù)字的按鈕來說</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論