创建main.c程序入口
#include"game.h"
void menu()
{
printf("##############################################\n");
printf("## 欢 迎 来 到 我 的 游 戏 世 界 ##\n");
printf("##############################################\n");
printf("### 1. PLAY 2.EXIT ##\n");
printf("##############################################\n");
printf("请选择:");
}
int main()
{
int select = 0;
while (!select)
{
menu();
int choose;
scanf("%d", &choose);
switch (choose)
{
case 1:
game();
break;
case 2:
select = 1;
break;
default:
printf("你的选择有误,请重新选择");
break;
}
}
return 0;
}
创建game.c
#include"game.h"
void show(char a[][size + 2])
{
int i, j;
for (i = 0; i < 11; i++)
{
printf("____");
}
printf("\n");
printf(" |");
for (i = 1; i < 11; i++)
{
printf("%2d |", i);
}
for (i = 1; i < 11; i++)
{
printf("\n");
printf(" %2d |", i);
for (j = 1; j < 11; j++)
{
printf(" %c |", a[i][j]);
}
}
printf("\n");
}
void init(char a[][size + 2], char s)
{
int i, j;
for (i = 0; i < 12; i++)
{
for (j = 0; j < 12; j++)
{
a[i][j] = s;
}
}
}
void put(char a[][size + 2], int* i, int* j)
{
srand((unsigned)time(NULL));
int times = sum + 1;
int x, y;
while (times)
{
x = rand() % 10 + 1;
y = rand() % 10 + 1;
if ('0' == (char)a[x][y])
{
times--;
if (times == 1)
{
*i == x;
*j == y;
break;
}
a[x][y]++;
}
}
}
int full(char a[][size + 2])
{
int i, j;
for (i = 1; i < 11; i++)
{
for (j = 1; j < 11; j++)
{
if (begin == (char)a[i][j])
{
return 0;
}
}
}
return 1;
}
void total(char a[][size + 2], char b[][size + 2], int x, int y)
{
if (begin == (char)a[x][y])
{
if (x > 0 && x<11 && y>0 && y < 11)
{
a[x][y] = b[x + 1][y + 1] + b[x + 1][y] + b[x + 1][y - 1] + b[x][y + 1] + \
b[x][y - 1] + b[x - 1][y + 1] + b[x - 1][y] + b[x - 1][y - 1] - 7 * '0';
if ('0' == (char)a[x][y])
{
a[x][y] = space;
total(a, b, x - 1, y);
total(a, b, x, y + 1);
total(a, b, x + 1, y);
total(a, b, x, y - 1);
}
}
}
}
void game()
{
int i=0, j=0;
int step = 0;
char game[size + 2][size + 2];
char see[size + 2][size + 2];
init(see, begin);
init(game, '0');
put(game, &i, &j);
int x, y;
while (1)
{
show(see);
printf("输入你选择的位置:");
scanf("%d %d", &x, &y);
if (x > 10 || x<1 || y>10 || y < 1)
{
printf("请输入一个合法位置!\n");
continue;
}
if (begin != (char)see[x][y])
{
printf("请选择一个空位置\n");
continue;
}
step++;
if ('0' == game[x][y])
{
total(see, game, x, y);
}
else
{
if (step == 1)
{
game[x][y]--;
game[i][j]++;
total(see, game, x, y);
}
else
{
printf("Game Over!\n");
show(game);
break;
}
}
if (1 == full(see))
{
printf("Win\n");
show(game);
break;
}
}
}
创建game.h
#pragma once
#include<stdio.h>
#include<time.h>
#pragma warning(disable: 4996)
#define size 10
#define sum 10
#define begin '*'
#define space ' '
void game();
void show(char a[][size + 2]);
void init(char a[][size + 2], char s);
void put(char a[][size + 2], int* i, int* j);
void total(char a[][size + 2], char b[][size + 2], int x, int y);
int full(char a[][size + 2]);