首页 > 其他分享 >扫雷游戏的基本功能实现

扫雷游戏的基本功能实现

时间:2023-08-12 15:02:06浏览次数:34  
标签:ROWS 游戏 show int COLS mine char 基本功能 扫雷

1.game.h头文件

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 9
#define COL 9 
#define ROWS ROW+2
#define COLS COL+2
#define easy_count 80
char initboard(char board[ROWS][COLS],int row,int col,char set);
void displayboard(char board[ROWS][COLS],int row,int col);

void setmine(char board[ROWS][COLS],int row,int col);
void findmine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);

2.test.c源文件

#include"game.h"
void menu()
{
	printf("**********************\n");
	printf("****1.play  0.exit****\n");
	printf("**********************\n");
}
void game()
{
	char mine[ROWS][COLS]={0};//存放布置好的雷的信息
	char show[ROWS][COLS]={0};//存放排查出的雷的信息
	//初始化数组的内容为指定的内容
	//mine数组在设置雷的时候都是‘0’
	initboard(mine,ROWS,COLS,'0');
	//show数组在没有排查雷的时候都是‘*’
	initboard(show,ROWS,COLS,'*');
	
	displayboard(show,ROW,COL);
	//设置雷
	setmine(mine,ROW,COL);
   // displayboard(mine,ROW,COL);
	//排查雷
	findmine(mine,show,ROW,COL);
}
int main()
{
	int i=0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		printf("请选择:");
		scanf("%d",&i);
		switch(i)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	}while(i);
	return 0;
}

3.game.c源文件

#include"game.h"
char initboard(char board[ROWS][COLS],int row,int col,char set)
{
	int i=0;
	int j=0;
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
		{
			board[i][j]=set;
		}
	}
}

void displayboard(char board[ROWS][COLS],int row,int col)
{
	int i=0;
	int j=0;
	printf("-------扫雷-------\n");
	for(j=0;j<=col;j++)
	{
		printf("%d ",j);
	}
	printf("\n");
	for(i=1;i<=row;i++)
	{
		printf("%d ",i);
		for(j=1;j<=col;j++)
		{
			printf("%c ",board[i][j]);
		}
		printf("\n");
	}
	printf("-------扫雷-------\n");
}


void setmine(char board[ROWS][COLS],int row,int col)
{
	int count=easy_count;
	int x=0;
	int y=0;
	while(count)
	{
		x=rand()%row+1;
		y=rand()%col+1;
		if(board[x][y]=='0')
		{
			board[x][y]='1';
			count--;
		}
	}
}
int get_count(char mine[ROWS][COLS],int x,int y)
{
	return (mine[x-1][y]+
		 mine[x-1][y-1]+
		 mine[x-1][y+1]+
		 mine[x][y-1]+
		 mine[x][y+1]+
		 mine[x+1][y-1]+
		 mine[x+1][y]+
		  mine[x+1][y+1]-8*'0');
}
void findmine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
{
	int x=0;
	int y=0;
	int win=0;
	int count=0;
	while(win<row*col-easy_count)
	{
	   printf("请输入坐标:");
	   scanf("%d%d",&x,&y);
	   if(x>=1&&x<=row&&y>=1&&y<=col)
	   {
		   if(show[x][y]!='*')
		   {
			   printf("该坐标被排查过了请重新选择\n");
		   }
		   else
		   {

			   //如果是雷
			   if(mine[x][y]=='1')
			   {
				   printf("很遗憾,你被炸死了\n");
				   displayboard(mine,ROW,COL);
				   break;
			   }
			   else//不是雷
			   {
				   //统计mine数组中x,y坐标周围有几个雷
				   count=get_count(mine,x,y);
				   show[x][y]=count+'0';
				   displayboard(show,ROW,COL);
			   }
		     }
		   }
		   else
		   {
			   printf("坐标非法\n");
		   }
	   }
   if(win==row*col-easy_count)
	{
		printf("恭喜你,成功啦!!!\n");
	}
}

扫雷游戏的基本功能实现_#include

扫雷游戏的基本功能实现_游戏_02


标签:ROWS,游戏,show,int,COLS,mine,char,基本功能,扫雷
From: https://blog.51cto.com/u_16190077/7059141

相关文章

  • 4954: 矩阵游戏
    题目描述婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的\(n\)行\(m\)列的矩阵(你不用担心她如何存储)。她生成的这个矩阵满足一个神奇的性质:若用\(F[i,j]\)来表示矩阵中第\(i\)行第\(j\)列的元素,则\(F[i,j]\)满足下面的递推式:\[\begin{aligned}F[1,1]&=......
  • 联合省选 2023 填数游戏
    这是22年的我:https://www.luogu.com.cn/record/81067862这是23年的我:看我一个流过冲过A性质首先考虑判定。一个经典模型是:如果在\(T_{i,0}\)与\(T_{i,1}\)之间连一条无向边(若\(|T_i|=1\)则认为\(T_{i,1}=T_{i,0}\)),那么题目转化为给每条边定向,使得每个点的入度不超......
  • 矩阵游戏
    4954:矩阵游戏时间限制(普通/Java):2000MS/6000MS内存限制:65536KByte描述婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储)。她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行第j列的元素,则F[i][j]满足下......
  • [圣诞大礼]Macintosh苹果机精品游戏合集
    开篇:很多人求MBP...求到MBP问题马上就来了,mac苹果机上软件已经很不错了,PS、office、AutoCAD都有,问题有什么好游戏呢?年终给大家很多MAC苹果机游戏希望大家喜欢啊。感谢ZOD骑士lv_1_ss分流游戏说明一点:下面的游戏全部都是MAC原生游戏,非MAC原生游戏不做收录。全部游戏都是来源于苹果商店,所以应该不需要......
  • 猜数字小游戏
    #include<stdio.h>#include<stdlib.h>#include<time.h>voidmenu()//主菜单{printf("---1.开始游戏--------0.退出游戏----\n");}voidgame(){//1.生成一个随机数intret=0;intguess=0;ret=rand()%100+1;//生成1-100之间的随机数,随机数区间可以......
  • 代码随笔-某游戏网站数据的爬取
    importrequestsimportparselimportcsvimportre#将表头写入CSV文件withopen('xxxgame.csv',mode='a',encoding='utf-8-sig',newline='')asf:csv_writer=csv.DictWriter(f,fieldnames=['title','nu......
  • 恒创科技:游戏选香港主机会卡吗?
    ​经常会有用户问道:做游戏服务器,使用香港主机会很卡吗?要知道,游戏运营最看重的就是用户体验,而游戏流畅不流畅要看所使用香港服务器本身的稳定性。因此,卡不卡,这样的形式提问是比较笼统的,您应该从应用场景里出发考虑,今天我们就一起来解析一下。做游戏选中国香港服务器有什......
  • python猜数字小游戏
    importrandomdefguess_number():  target_number=random.randint(1,100)  attempts=0  whileTrue:    guess=int(input("请输入一个1到100之间的整数:"))    attempts+=1    ifguess<target_number:      print("猜......
  • 五子棋游戏
    #include<iostream>#include<iomanip>inth=16;intl=16;boolis_black=true;intall_list[16][16];boolblack_list[16][16];boolwhile_list[16][16];intx;inty;usingnamespacestd;voidf5(){ for(inti=0;i<=h;i++){ cout<<setw(......
  • 数字游戏
    P1043[NOIP2003普及组]数字游戏首先考虑链的情况怎么做。发现就是划分\(m\)次,直接考虑类似于乘积最大的DP,复杂度为\(O(n^2m)\)。对于环的情况,只需要暴力考虑\(n\)种破环的方式,所以总复杂度为\(O(n^3m)\)。注意取模和数组清空。code......