
#include
#include
using namespace std
int map[12][12] // 为避免边界的特殊处理,故将二维数组四周边界扩展1
int derection[3] = { 0, 1, -1 } //方向数组
int calculate ( int x, int y )
{
int counter = 0
for ( int i = 0i <3i++ )
for ( int j = 0j <3j++ )
if ( map[ x+derection[i]][ y+derection[j] ] == 9 )
counter++// 统计以(x,y)为中心的四周的雷数目
return counter
}
void game ( int x, int y )
{
if ( calculate ( x, y ) == 0 )
{
map[x][y] = 0
for ( int i = 0i <3i++ )
{ // 模拟游戏过判梁程,若点到一个空白,则系统自动向外扩展
for ( int j = 0j <3j++ )
if ( x+derection[i] <= 9 &&y+derection[j] <= 9 &&x+derection[i] >= 1 &&y+derection[j] >= 1
&&!( derection[i] == 0 &&derection[j] == 0 ) && map[x+derection[i]][y+derection[j]] == -1 )
game( x+derection[i], y+derection[j] )// 条件比较多,一是银闹不可以让两个方向坐标同时为0,否则
递归调用本身!
} //二是递归不能出界.三是要保证不返回调用。
}
else
map[x][y] = calculate(x,y)
}
void print ()
{
for ( int i = 1i <10i++ )
{
for ( int j = 1j <10j++ )
{
if ( map[i][j] == -1 || map[i][j] == 9 )
cout <<"#"
else
cout <>x >>y )
{
if ( map[x][y] == 9 )
{
cout <<"GAME OVER" <>ch
cout <<"\n\n"
} while ( ch == 'Y'掘搏运 )
return 0
}
c++:
#include<iostream>#include<fstream>
#include <ctime>
using namespace std
void layout(int n) {
char**cs = (char**) malloc(sizeof(char*) * n)
srand((unsigned) time(0))
for (int i = 0 i < n ++i) {
cs[i]=(char*) malloc(sizeof(char) * n)
for (int j = 0 j < n ++j) {
int r0 = rand() % 100
int r1 = rand() % 100
if (r1 >= r0 && r1>70) { //雷
cs[i][j] = '*'
} else {
cs[i][j] = ' '
}
}
}
//计算雷的个数
for (int i 册腊= 0 i < n ++i) {
for (int j = 0 j < n ++j) {
if (cs[i][j] == '*')
cout <<" "<< cs[i][j]
else {
int count = 0
for (int k = i - 1 k <= i + 缓腔1 k++) {
for (int 州哪滑l = j - 1 l <= j + 1 l++) {
if (k >= 0 && l >= 0 && k < n && l < n
&& cs[k][l] == '*'){
count++
}
}
}
cs[i][j]=(char)('0'+count)
cout <<" "<< cs[i][j]
}
}
cout << endl
}
}
int main() {
int n = 4
cout << "请输入行数:"
cin >> n
layout(n)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)