test.c
#include"game.h"
int main()
{
int input = 0 ;
char mine[rows][cols];
char show[rows][cols];
int i = 0 ;
int j = 0 ;
for (i = 0 ; i < rows - 1 ; i++)
{
for (j = 0 ; j < cols - 1 ; j++)
{
mine[i][j] = '0' ;
show[i][j] = '*' ;
}
}
menu();
while (1 )
{
printf ("请选择:" );
scanf ("%d" , &input);
if (input == 1 )
{
printf ("进入游戏\n" );
Game(mine, show);
break ;
}
else if (input == 0 )
{
printf ("退出游戏!\n" );
exit (0 );
break ;
}
else
{
printf ("输入有误!\n" );
}
}
system("pause" );
return 0 ;
}
game.c
#include"game.h"
int menu()
{
printf ("********************************************\n" );
printf ("********************************************\n" );
printf ("*************welcome to saolei*************\n" );
printf ("************* 1. play *************\n" );
printf ("************* 0. exit *************\n" );
printf ("********************************************\n" );
printf ("********************************************\n" );
return 0 ;
}
void set_mine(char mine[rows][cols])
{
int count = Count;
int x = 0 ;
int y = 0 ;
srand((unsigned )time(NULL));
while (count)
{
x = rand() % 9 + 2 ;
y = rand() % 9 + 2 ;
if (mine[x][y] == '0' )
{
mine[x][y] = '1' ;
count--;
}
}
}
void display(char show[rows][cols])
{
int i = 0 ;
int j = 0 ;
printf (" " );
for (i = 1 ; i < cols - 1 ; i++)
{
printf (" %d " , i);
}
printf ("\n" );
for (i = 1 ; i < rows - 1 ; i++)
{
printf ("%2d" , i);
for (j = 1 ; j < cols - 1 ; j++)
{
printf (" %c " , show[i][j]);
}
printf ("\n" );
}
}
int get_num(char mine[rows][cols], int x, int y)
{
int count = 0 ;
if (mine[x - 1 ][y - 1 ] == '1' )
{
count++;
}
if (mine[x - 1 ][y] == '1' )
{
count++;
}
if (mine[x - 1 ][y + 1 ] == '1' )
{
count++;
}
if (mine[x][y + 1 ] == '1' )
{
count++;
}
if (mine[x + 1 ][y + 1 ] == '1' )
{
count++;
}
if (mine[x + 1 ][y] == '1' )
{
count++;
}
if (mine[x + 1 ][y -1 ] == '1' )
{
count++;
}
if (mine[x][y - 1 ] == '1' )
{
count++;
}
return count;
}
int Sweep(char mine[rows][cols], char show[rows][cols])
{
int count = 0 ;
int x = 0 ;
int y = 0 ;
while (count != ((rows - 2 )*(cols - 2 ) - Count))
{
printf ("请输入坐标:\n" );
scanf ("%d%d" , &x, &y);
if (mine[x][y] == '1' )
{
printf ("踩到雷!\n" );
return 0 ;
}
else
{
int ret = get_num(mine, x, y);
show[x][y] = ret + '0' ;
display(show);
count++;
}
}
printf ("你赢了!\n" );
display(mine);
return 0 ;
}
int Game(char mine[rows][cols], char show[rows][cols])
{
set_mine(mine);
display(show);
Sweep(mine, show);
return 0 ;
}
game.h
int menu();
void display(char show[rows ][cols ]);
int Game(char mine[rows ][cols ], char show[rows ][cols ]);
void set_mine(char mine[rows ][cols ]);
int Sweep(char mine[rows ][cols ], char show[rows ][cols ]);
int get_num(char mine[rows ][cols ], int x, int y);