您的位置:首页 > 编程语言 > C语言/C++

C语言简单实现扫雷

2017-11-05 00:00 573 查看

C语言简单实现扫雷

Game.h 文件

#define _CRT_SECURE_NO_WARNINGS
#ifndef __GAME_H__
#define __GAME_H__

#define  COLS 11
#define  ROWS 11
#define MAX 10
#define ABC 1

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>

void set_mine(char arr1[COLS][ROWS]);
void print(char arr1[COLS][ROWS],int col,int row);
int get_mine(char arr1[COLS][ROWS],int x, int y);

#endif

Game.c 文件

#include "game.h"
void set_mine(char arr1[COLS][ROWS])
{
char a = 0;
char b = 0;
int count=0;
srand((unsigned)time(NULL));
while(count<MAX)
{
a = rand()%9 + 1;
b = rand()%9 + 1;
if(arr1[a][b]!= 1+'0')
{
arr1[a][b]=1+'0';
count++;
}
}
}
void print(char arr1[COLS][ROWS],int col,int row)
{
int i = 0;
int j = 0;
printf("   ");
for(i=1;i<col-1;i++)
{
printf(" %d ",i);
}
printf("\n");
for(i=1;i<col-1;i++)
{
printf(" %d ",i);
for(j=1;j<row-1;j++)
{
printf(" %c ",arr1[i][j]);
}
printf("\n");
}
}

int get_mine(char arr1[COLS][ROWS],int x, int y)
{
return arr1[x-1][y-1]
+arr1[x-1][y]
+arr1[x-1][y+1]
+arr1[x][y-1]
+arr1[x][y+1]
+arr1[x+1][y-1]
+arr1[x+1][y]
+arr1[x+1][y+1]
-8*'0';
}

test.c 文件

#include "game.h"
void mnue()
{
printf("**************************************\n");
printf("**                                  **\n");
printf("**          1.开始   0.退出         **\n");
printf("**                                  **\n");
printf("**************************************\n");
}

void game()
{
char arr[COLS][ROWS] = {0};
char show[COLS][ROWS] = {0};
int x = 0;
int y = 0;
int i = 0;
int j = 0;
int temp = 0;
int ret = 0;
int count = 1;
memset(arr,'0',sizeof(arr[0][0])*COLS*ROWS);
memset(show,'*',sizeof(show[0][0])*COLS*ROWS);
set_mine(arr);
print(show,COLS,ROWS);
while(ret<(COLS-2)*(ROWS-2)-MAX)
{
printf("请输入你想查找的坐标:>");
scanf("%d%d",&x,&y);
if((x>=1)&&(x<=9)&&(y>=1)&&(y<=9))
{
if((count==1)&&(arr[x][y]=='1'))
{
set_mine(arr);
print(arr,COLS,ROWS);
count++;
}
else
{
if((count!=1)&&(arr[x][y]=='1'))
{
printf("你被炸死了!\n");
}
else
{
ret++;
for(i=x-ABC;i<x+ABC;i++)
{
for(j=y-ABC;j<y+ABC;j++)
{
temp = get_mine(arr,i,j);
show[i][j] = temp+'0';
}
}
print( show,COLS,ROWS);
}
}
}
else
{
printf("输入错误!请重新输入:>");
}
}
if(ret == (COLS-2)*(ROWS-2)-MAX)
{
printf("恭喜您!排雷成功。\n");
}
}

void main()
{  int input = 0;

do
{   mnue();
printf("请输入你的选择:>");
scanf("%d",&input);
switch(input)
{
case 1:
game();
break;
case 0:
break;
default:
printf("输入错误!请重新输入:>");
break;
}

}while(input);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息