扫雷简易版游戏(c语言实现)新手,初级,看得懂

 头文件,包括函数的声明 game.h

#pragma once

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

#define num1 11
#define num2 9


void setdata(char  arr[num1][num1], int);
void print(char arr[num1][num1], int sz);
void setmine(char  arr[num1][num1], int  sz);
void game();
void menu();
void func(char base[num1][num1], char mine[num1][num1], int row, int col);
int minenums(char arr[num1][num1],int ,int);
void findmine(char  base[num1][num1], char  mine[num1][num1]);

函数的定义,游戏的具体实现 game.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"



void menu()
{
	printf("***************************************\n");
	printf("**************1.开始游戏***************\n");
	printf("**************2.退出游戏***************\n");
	printf("***************************************\n");
	printf("————————————————————\n");
}

void setdata(char arr[num1][num1], int sz)
{
	for (int i = 0; i < num1; i++)
	{
		for (int j = 0; j < num1; j++)
		{
			arr[i][j] = 1;
		}

	}
}

void setmine(char arr[num1][num1], int sz)
{
	int count = sz;
	while (count)
	{
		int i = rand() % num2 + 1;
		int j = rand() % num2 + 1;
		if (arr[i][j] != '*')
		{
			arr[i][j] = '*';
			count--;
		}
	}

}
void print(char arr[num1][num1], int sz)
{
	printf("-------------------扫雷游戏------------\n");
	for (int i = 0; i < sz - 1; i++)
	{
		printf("%d ", i);
	}
	printf("\n");
	for (int i = 1; i < sz - 1; i++)
	{
		printf("%d ", i);
		for (int j = 1; j < sz - 1; j++)
		{

			printf("%c ", arr[i][j]);

		}
		printf("\n");
	}
}


int minenums(char arr[num1][num1],int row,int col)
{
	if (arr[row][col] == '*')
	{
		return 1;
	}
	int count = 48;
	if (arr[row+1][col] =='*') count++;
	if (arr[row][col-1] == '*') count++;
	if (arr[row+1][col+1] == '*') count++;
	if (arr[row+1][col-1] == '*') count++;
	if (arr[row-1][col+1] == '*') count++;
	if (arr[row-1][col-1] == '*') count++;
	if (arr[row-1][col] == '*') count++;
	if (arr[row][col+1] == '*' ) count++;

	
	return count;

}

void findmine(char base[num1][num1], char mine[num1][num1])
{
	int row;
	int col;
	while (1)
	{
		
		print(base, num1);
		int temp=0;
		for (int i =1 ; i <num1-1; i++)
		{
			for (int j = 1; j <num1-1; j++)
			{
				if (base[i][j] == 1)
					temp ++;
			}
		}
		if (temp == num1) {
			printf("游戏·胜利·!~");
			print(mine, num1);
			break;
		}
		//print(mine, num1);
		printf("输入你要排查的行列:\n");
		
		scanf("%d %d", &row, &col);

		if (mine[row][col] == '*')
		{
			printf("你死了!\n");
			print(mine, num1);
			break;
		}
		else
		{
			 base[row][col] =minenums(mine,row,col);
	 
			 base[row + 1][col] = minenums(mine, row + 1, col);
			 base[row][col-1] = minenums(mine, row, col - 1);
			 base[row+1][col+1] = minenums(mine, row + 1, col + 1);
			 base[row+1][col-1] = minenums(mine, row + 1, col - 1);
		     base[row-1][col+1] = minenums(mine, row - 1, col + 1);
			 base[row-1][col-1] = minenums(mine, row - 1, col - 1);
			 base[row-1][col] = minenums(mine, row - 1, col);
			 base[row][col+1] = minenums(mine, row, col + 1);

			//func(mine,base,row,col);
			
			print(base, num1);
			
		}
		system("cls");
	}



	return;
}

 主函数 test.c

#define _CRT_SECURE_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"



void game()
{

	menu();

	int choose;
	while (~scanf("%d", &choose))
	{
		
		switch (choose)
		{
		case 1:
		{
			system("cls");
			char base[num1][num1] = { 0 };//展示给玩家
			char mine[num1][num1] = { 0 };//雷的信息
			setdata(mine, num1);
			setdata(base, num1);
			setmine(mine, num1);//设置雷,num1个
			//print(mine, num1);
			
			//print(base, num1);
			findmine(base, mine);
			//print(mine, num1);


			break;
		}
		case 2:
			printf("成功退出游戏!");

		default:
			printf("输入错误,请重新输入:\n");
		}
	}

}



int main()
{
	srand((unsigned int)time(NULL));
	game();



	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值