继上一次写的那个扫雷游戏之后,我对它并不是很满意,在经过几天的思考之后,昨天晚上三点的多的时候,突然想到了解决办法,于是在今天给它加以实现,实现最终的版本,对于要实现和市面上玩的那种结构,目前以我的水准还做不到,但是它可以只用键盘输入的方式进行一个游玩,那么它就是成功的,代码如下:
头文件:
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<Windows.h>
void game(void);//游戏主体函数
void put_qipan(char** game, int wide); //输出棋盘函数
void chushiqipan(char** qipan, int wide, char set);//初始化棋盘的函数
void produce_lei(char** game, int wide, int lei_number);//产生雷的函数
void find_zhouwei(char** game, char** show, int x, int y, int* sum, int wide);//用于展开周围的不是雷的点
int find_lei(char** game, int x, int y);////给出周围该点周围有几个雷的函数
void intput_lei(char** game, char** show, int wide, int lei_number); //用户输入坐标找雷的函数
int nandu_menu();//选择难度的函数
void chaqizi(char** game, char** show, int wide);//用去插旗子的函数
void zhan_zhouwei(char** game, char** show, int* sum, int wide);//用于查看该点周围是否有0,判别是否继续啊展开的函数
测试文件:
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
void menu(void);//菜单函数
int main() {
int is_play = 1;
while(is_play){
menu();
scanf("%d", &is_play);
if (is_play < 0 || is_play > 1) {
printf("输入错误,请重新输入:>");
scanf("%d", &is_play);
}
else if (is_play == 1) {
//system("cls");
game();
}
}
return 0;
}
void menu(void) {
printf("**********************\n");
printf("***三月三款扫雷游戏***\n");
printf("****输入 1 开始游戏***\n");
printf("****输入 0 结束游戏***\n");
printf("**********************\n");
printf("请输入:>");
}
游戏函数文件:
#include"game.h"
void game(void) {
int wide = 11;
int lei_number = 10;
int nandu = nandu_menu();
switch (nandu) {
case 1: {
wide = 11;
lei_number = 10;
break;
}
case 2: {
wide = 17;
lei_number = 40;
break;
}
case 3: {
wide = 27;
lei_number = 99;
break;
}
}
srand(time);
//生成游戏棋盘
char** game = (char**)malloc(wide * sizeof(char*));
for (int i = 0;i < wide;i++) {
game[i] = (char*)malloc(wide * sizeof(char));
}
chushiqipan(game, wide, '0');//初始化游戏棋盘
//生成展示棋盘
char** show = (char**)malloc(wide * sizeof(char*));
for (int i = 0;i < wide;i++) {