#include "game.h"
void eaum()
{
printf("*****************************\n");
printf("****** 1.game 0.exit ******\n");
printf("*****************************\n");
}
void play()
{
char board[length][width] = { 0 };
char bombboard[lengths][widths] = { 0 };
Initboard(board);
Initbombboard(bombboard);
checkerboard(board);
bomb(bombboard);
player(board, bombboard);
}
void select(int a)
{
switch (a)
{
case Exit:
printf("退出游戏\n");
break;
case games:
printf("游戏开始\n");
play();
break;
default:
printf("选项错误,请重新选择\n");
break;
}
}
int main()
{
int a;
do
{
srand((unsigned int)time(NULL));
eaum();
printf("请输入你的选择:");
scanf("%d", &a);
select(a);
} while (a);
return 0;
}
#include "game.h"
void Initboard(char board[length][width])
{
int x, y;
for (x = 0; x < length; x++)
{
for (y = 0; y < width; y++)
{
board[x][y] = '0';
}
}
}
void Initbombboard(char bombboard[lengths][widths])
{
int x, y;
for (x = 0; x < lengths; x++)
{
for (y = 0; y < widths; y++)
{
bombboard[x][y] = ' ';
}
}
}
void checkerboard(char board[length][width])
{
int x, y;
for (x = 0; x <= length; x++)
{
printf("%d ", x);
}
printf("\n");
for (x = 0; x < length; x++)
{
printf("%d ", x + 1);
for (y = 0; y < width; y++)
{
printf("%c ", board[x][y]);
if (y < width - 1)
{
printf("|");
}
}
printf("\n");
if (x < length - 1)
{
printf(" ");
for (y = 0; y < width; y++)
{
printf("---");
}
printf("\n");
}
}
}
void bomb(char bombboard[lengths][widths])
{
int x, y;
int z = MAX;
while (z)
{
x = rand() % length + 1;
y = rand() % width + 1;
if (bombboard[x][y] == ' ')
{
bombboard[x][y] = '*';
z--;
}
}
}
int move(char bombboard[lengths][widths], int x, int y)
{
if (bombboard[x][y] == '*')
{
return -1;
}
else
{
int a, b, c = 0;
for (a = x - 1; a <= x + 1; a++)
{
for (b = y - 1; b <= y + 1; b++)
{
if (bombboard[a][b] == '*')
{
c++;
}
}
}
return c;
}
}
void flower(char board[length][width], char bombboard[lengths][widths], int x, int y)
{
int a, b, c;
for (a = x - 1; a <= x + 1; a++)
{
for (b = y - 1; b <= y + 1; b++)
{
if ((a > 0 && b > 0) && (a < lengths-1 && b < widths-1))
{
if (bombboard[a][b] != '*' && board[a - 1][b - 1] != ' ')
{
c = move(bombboard, a, b);
if (c != 0)
board[a - 1][b - 1] = c + '0';
else
{
board[a - 1][b - 1] = ' ';
flower(board, bombboard, a, b);
}
}
}
}
}
}
void player(char board[length][width], char bombboard[lengths][widths])
{
int x, y, z = 0;
do
{
printf("请输入你的坐标:");
scanf("%d %d", &x, &y);
if ((x > 0 && x <= length) && (y > 0 && y <= width))
{
if (board[x - 1][y - 1] == '0')
{
int c = move(bombboard, x, y);
if (c == -1)
{
board[x - 1][y - 1] = '*';
checkerboard(board);
printf("游戏失败\n");
break;
}
else if (c == 0)
{
board[x - 1][y - 1] = ' ';
flower(board, bombboard, x, y);
}
else
{
board[x - 1][y - 1] = '0' + c;
}
}
else
{
printf("坐标重复,请重新输入\n");
}
}
else
{
printf("坐标错误,请重新输入\n");
}
for (x = 0; x < length; x++)
{
for (y = 0; y < width; y++)
{
if (board[x][y] == '0')
{
z++;
}
}
}
checkerboard(board);
if (z == MAX)
{
printf("游戏胜利\n");
break;
}
} while (1);
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#pragma once
#define length 9
#define width 9
#define lengths length+2
#define widths width+2
#define MAX 10
enum
{
Exit,
games
};
void Initboard(char board[length][width]);
void Initbombboard(char bombboard[lengths][widths]);
void checkerboard(char board[length][width]);
void bomb(char bombboard[lengths][widths]);
void player(char board[length][width], char bombboard[lengths][widths]);