一、c#實現掃雷
1、在form中
bombclass bombclass = new bombclass();/*布雷按鈕事件*/
private void initbombbtn_click(object sender, eventargs e)
/*雷盤的滑鼠點選事件:方法一 */
private void bombpanel_mouseclick(object sender, mouseeventargs e)
else if (bombclass.bombdata[row, column] == bombclass.bombint)
else if (bombclass.bombdata[row, column] == 0)
if (bombclass.checkfinishfirst())
else
bombclass.bombdraw();
}
/*掃雷panel重繪事件*/private void bombpanel_paint(object sender, painteventargs e)
}
2、掃雷類
public class bombclass;/*雷數*/
public int bombcount;
/*雷陣列*/
public int[,] bombdata;
/*是否點選的標誌*/
public int[,] bombdataflag;
/*棋子大小*/
public int cellsize = 30;
/*表示地雷的數字*/
public const int bombint = -2;
public system.intptr winhandle;
public int width;
public int height;
#endregion
/*初始化雷陣列(點選布雷按鈕之後才用)*/
public void initbombdata()
/*隨機數生成雷的位置*/
protected listradombomb(int bombcount)
}if (checkflag)
else
;bombs.add(newpoint);}}
return bombs;
}/*布雷(以雷為中心訪問四周)*/
protected void setbomb(listbombs)}}
/*獲取四周合法的座標並返回*/
public int getroundlocation(int row, int column)
int i = 0;
//左上
if (row - 1 >= 0 && column - 1 >= 0)
//上if (row - 1 >= 0)
//右上
if (row - 1 >= 0 && column + 1 < bombcount)
//左if (column - 1 >= 0)
//右if (column + 1 < bombcount)
//左下
if (row + 1 < bombcount && column - 1 >= 0)
//下if (row + 1 < bombcount)
//右下
if (row + 1 < bombcount && column + 1 < bombcount)
return locationround;
}/*使用畫圖方法:畫雷盤一 */
public void bombdraw()
//畫方格及數字
for (int i = 0; i < bombcount; i++)
//如果點選到的是空
else if (bombdata[i, j] == 0 || bombdata[i, j] == -1)
//如果點選到的是地雷
else if (bombdata[i, j] == -2)
}g.fillrectangle(brush, (cellsize + 1) * j + 1
, (cellsize + 1) * i + 1, cellsize, cellsize);
g.drawstring(strtemp, font, new solidbrush(color.black),
(cellsize + 1) * j + 8, (cellsize + 1) * i + 8);}}
graphics gg = graphics.fromhwnd(winhandle);
//graphics gg = bombpanel.creategraphics();
gg.drawimage(myimage, 0, 0);
}/*踩到空時處理方法(深度優先搜尋):方法一*/
public void nulldepthfindfirst(int row, int column)}}
}/*踩到空時處理方法(廣度優先搜尋):方法一*/
public void nullwidthfindfirst(int row, int column)
waitcheck[0] = row;
waitcheck[1] = column;
int frontcount = 0; //隊頭
int backcount = frontcount + 2; //隊尾
//隊頭不等於隊尾
while (frontcount != backcount)}}
frontcount += 2; //佇列指標移動}}
/*檢查掃雷是否完成:方法一*/
public bool checkfinishfirst()}}
if (flag)
break;
}if (leftcount == bombcount)
else
return false;
}/*踩到雷時顯示所有:方法一*/
public void showallbomb()
}bombdraw();
}}
C 掃雷遊戲程式設計
一 概述 最近買了心機nokia6300,上面有一款掃雷遊戲,閒暇時光總是在玩,玩難度的級別還挺難過的。呵呵 後來就想使用c 寫個掃雷程式玩玩,遊戲玩多了,遊戲的思想就不知不覺的有了,下面所有的 是沒有任何參考的情況下,自己寫出來的,有許多瑕疵,程式也沒經過什麼優化,主要的演算法思想其實就那麼幾行。...
掃雷遊戲。。c 編寫。。
我知道很簡單,就這樣吧。掃雷 2012 11 20 include include include include include include using namespace std struct node queueq int map 1010 1010 already 1010 1010 i...
C語言 掃雷遊戲
標頭檔案 ifndef mine h define mine h define line 10 define list 10 define rows 6 define cows 6 int game char userboard line 2 list 2 char playerboard line...