#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("**********************************\n");
printf("*************扫雷游戏*************\n");
printf("***********1.开始游戏*************\n");
printf("***********0.结束游戏*************\n");
printf("**********************************\n");
}
void print(char arr[12][12],int rows,int cols)//打印
{
int i;
int j;
for(i=1;i<=rows;i++)
{
for(j=1;j<=cols;j++)
printf(" %c",arr[i][j]);
printf("\n");
}
}
void game()
{
char lei[12][12];
char xianshi[12][12];
int a=0;
int b=0;
int leishu=99;//雷的个数
int count=leishu;
int x;
int y;
int sum=0;
srand((unsigned int)time(NULL));
memset(lei,'0',sizeof(char)*12*12);//初始化字符0
memset(xianshi,'*',sizeof(char)*12*12);//初始化*
print(xianshi,10,10);
while(leishu)
{
a=rand()%10+1;
b=rand()%10+1;
if(lei[a][b]=='0')
{
lei[a][b]='1';
leishu--;
}
}
while(10*10-count)//当雷排完后跳出循环
{
//print(lei,10,10);
printf("请输入坐标:>");
scanf("%d%d",&x,&y);
if(lei[x][y]=='1')
{
printf("你被炸死了,游戏结束。\n");
//Sleep(2000);
break;
}
else
{
sum=lei[x-1][y-1]+lei[x][y-1]
+lei[x+1][y-1]+lei[x+1][y]
+lei[x+1][y+1]+lei[x][y+1]
+lei[x-1][y+1]+lei[x-1][y]
-'0'-'0'-'0'-'0'-'0'-'0'-'0'-'0';//字符1与数字1相差字符0 即‘1’-‘0’=1
xianshi[x][y]=sum+'0';
count++;
}
print(xianshi,10,10);
}
if(count==10*10)
printf("恭喜你,通关。\n");
print(lei,10,10);
}
int main()
{
int input=0;
do
{
menu();
printf("请选择:");
scanf("%d",&input);
switch(input)
{
case 1:
system("cls");//玩下一次清屏
game();
break;
case 0:
break;
default:
printf("输入错误,请重新输入。");
Sleep(1000);//停顿1秒
system("cls");
}
}while(input);
system("pause");
return 0;
}
扫雷小游戏(粗略写的,可以应该多用函数简单明了)
最新推荐文章于 2019-11-01 11:11:44 发布