调试模式我编完了,但是编游戏模式我就卡住了。
只用帮我编第一个 gamemode 的function就行了。
编完后应该是这样的。
这个4是输入进去的。
‘()’代表 雷。
‘ 01,02 ’ 是代表周围一圈有几个雷,如果一片空白就是周围没有雷。
‘ ## ’就代表不知道是不是雷。
编个大概就行。
我编到这里就不会了。
//这个是要创建的游戏界面的function。
void gamemode(int minefield[][SIZE], Point point[])
{
int i = 0;
while (i < 10)
{
int j = 0;
while (j < 10)
{
if (j == 1 || j == 10) {
printf("-------------------------");
}
if (i > 1 && j == 1) {
printf(" |");
}
if (i > 1 && j == 10) {
printf("| ");
}
if (i == 0) {
printf("0%d",j);
}
if (j == 0) {
printf("0%d",i);
}
}
//这个是主程序
int main(void)
{
int minefield[SIZE][SIZE];
int number;
printf("Welcome to minesweeper!\n");
printf("How many mines? ");
scanf("%d", &number);
Point point[SIZE];
printf("Enter pairs:\n");
int i = 0;
while (number > i)
{
scanf("%d%d", &point[i].y, &point[i].x);
i++;
}
init_field(minefield, point, number);
printf("Game Started\n");
print_minefield(minefield);
int a,b,c,d;
int r = 0;
int z = 0;
while (scanf("%d",&a) != EOF) {
if ((a == 1 || a == 2) && r >= 3) {
scanf("%d%d%d",&b,&c,&d);
printf("Help already used\n");
} else if (a == 1) {
scanf("%d%d%d",&b,&c,&d);
first_is_1(b,c,d,point,number);
r++;
} else if (a == 2) {
scanf("%d%d%d",&b,&c,&d);
first_is_2(b,c,d,point,number);
r++;
}
if (a == 3) {
scanf("%d%d",&b,&c);
first_is_3(b,c,point,number,minefield);
}
if (a == 4){
if (z%2 == 0){
printf("Gameplay mode activated\n");
printf(". .\n");
printf("\/\n");
gamemode(minefield, point);
}
if (z%2 == 1){
printf("Debug mode activated\n");
debugmode();
}
z++;
}
if (a == 1 || a == 2 || (z%2 == 1 && a == 3)) {
print_minefield(minefield);
}
}
return 0;
}
下面是其他代码。
#include <stdio.h>
#include <stdlib.h>
// 格子的定义
#define VISIBLE_SAFE 0
#define HIDDEN_SAFE 1
#define HIDDEN_MINE 2
//地图尺寸
#define SIZE 8
、、下面是其他的function
typedef struct _point
{
int x;
int y;
} Point;
void first_is_1(int b,int c,int d,Point point[],int number);
void first_is_2(int b,int c,int d,Point point[],int number);
void first_is_3(int b,int c,Point point[],int number,int minefield[][SIZE]);
void init_field(int minefield[][SIZE], Point point[], int number);
void print_minefield(int minefield[][SIZE]);
void gamemode(int minefield[][SIZE], Point point[]);
void debugmode(int minefield[][SIZE], Point point[]);
void init_field(int minefield[][SIZE], Point point[], int number)
{
int i = 0;
while (i < SIZE)
{
int j = 0;
while (j < SIZE)
{
minefield[i][j] = HIDDEN_SAFE;
j++;
}
i++;
}
i = 0;
while (i < number)
{
if (point[i].y < SIZE && point[i].x < SIZE && point[i].x >= 0 && point[i].y >= 0) {
minefield[point[i].y][point[i].x] = HIDDEN_MINE;}
i++;
}
}
void print_minefield(int minefield[][SIZE])
{
int i = 0;
while (i < SIZE)
{
int j = 0;
while (j < SIZE)
{
printf("%d ", minefield[i][j]);
j++;
}
i++;
printf("\n");
}
}