#ifndef __game_h_#define __game_h_#define ROW 10#define COL 10#define ROWS 12#define COLS 12
void set_mine(char mine[ROWS][COLS], int row, int col);
void display(char board[ROWS][COLS], int row, int col);
int get_mine_count(char mine[ROWS][COLS], int x, int y);
void play_game(char mine[ROWS][COLS], char board[ROWS][COLS]);
#endif
#include<stdio.h>#include<stdlib.h>#include"扫雷.h"#define MINE_CONUT 10void set_mine(char mine[ROWS][COLS], int row, int col)
{
int count = MINE_CONUT;
int x = 0;
int y = 0;
while (count)
{
x = rand() % 10 + 1;
y = rand() % 10 + 1;
if(mine[x][y] == '0')
{
mine[x][y] = '1';
count--;
}
}
}
void display(char board[ROWS][COLS], int row, int col)
{
int i = 0;
int j = 0;
printf(" ");
for (i = 1; i < row - 1; i++)
{
printf(" %d ", i);
}
printf("\n-------------------------------\n");
for (i = 1; i < row - 1; i++)
{
printf("%2d|", i);
for (j = 1; j < col - 1; j++)
{
printf(" %c ", board[i][j]);
}
printf("\n");
}
}
int get_mine_count(char mine[ROWS][COLS], int x, int y)
{
return (mine[x - 1][y - 1] - '0' + mine[x][y - 1] - '0' + mine[x + 1][y - 1] - '0'
+ mine[x - 1][y] - '0' + mine[x][y] - '0' + mine[x + 1][y] - '0'
+ mine[x - 1][y + 1] - '0' + mine[x][y + 1] - '0' + mine[x + 1][y + 1] - '0');
}
void play_game(char mine[ROWS][COLS], char board[ROWS][COLS])
{
while (1)
{
printf("请输入坐标:(x, y)\n");
int x = 0;
int y = 0;
int count = 0;
scanf("%d,%d", &x, &y);
if ((1 <= x && x <= ROW) && (1 <= y && y <= COL))
{
if (mine[x][y] == '1')
{
printf("你被炸死了\n");
display(mine, ROWS, COLS);
break;
}
else {
int ret = get_mine_count(mine, x, y);
board[x][y] = ret + '0';
if (ret == 0)
{
board[x][y] = board[x - 1][y - 1] = board[x][y - 1] = board[x + 1][y - 1]
= board[x - 1][y] = board[x + 1][y] = board[x - 1][y + 1]
= board[x][y + 1] = board[x + 1][y + 1] = ' ';
}
count++;
display(board, ROWS, COLS);
if (count == MINE_CONUT)
{
printf("恭喜你,你赢了\n");
display(mine, ROWS, COLS);
break;
}
}
}
elseprintf("越界,输入错误\n");
}
}
#include<stdio.h>#include<stdlib.h>#include<time.h>#include"扫雷.h"void menu()
{
printf("**************************\n");
printf("********* 1.play *********\n");
printf("********* 0.exit *********\n");
printf("**************************\n");
}
void game()
{
char mine[ROW + 2][COL + 2];
char board[ROW + 2][COL + 2];
int i = 0;
int j = 0;
for (i = 0; i < ROWS; i++)
{
for (j = 0; j < COLS; j++)
{
mine[i][j] = '0';
board[i][j] = '*';
}
}
set_mine(mine, ROWS, COLS);
//display(mine, ROWS, COLS);
display(board, ROWS, COLS);
play_game(mine, board);
}
int main()
{
int choose = 0;
srand((unsignedint)time(NULL));
do {
menu();
printf("请选择:");
scanf("%d", &choose);
switch (choose)
{
case1:
game();
break;
case0:
printf("退出游戏\n");
break;
default:
printf("瞎搞,重新输\n");
break;
}
} while (choose);
system("pause");
return0;
}