C语言————实战项目“扫雷游戏”(完整代码)
无论是找工作面试,还是课设大作业、考研,都离不开实战项目的积累,如果你能把一个项目搞明白,并且给别人熟练的讲出来,即使你没有过项目经历,也可以说是非常加分的,下面来沉浸式体验一下这款扫雷游戏吧!!下载可玩!!
neverfadeaway2/saolei: 扫雷游戏体验https://github.com/neverfadeaway2/saolei
这是小博自己写的扫雷游戏,下面由我来为大家讲解一下主要的代码和原理。
该扫雷游戏主要是由数组和函数的知识编写的,雷区为9*9的正方形棋盘,主要有初始化棋盘,打印棋盘,布置雷,排查雷等步骤。具体详情可看下列代码:
test.c
#include "game.h"void meun()
{printf("********************\n");printf("********play********\n");printf("******>>0***>>1*****\n");printf("********************\n");printf("********************\n");
}void game()
{char mine[ROWS][COLS] = { 0 };char show[ROWS][COLS] = { 0 };//初始化棋盘InitBoard(mine, ROWS, COLS, '0');InitBoard(show, ROWS, COLS, '*');//打印棋盘//DisplayBoard(mine, ROW, COL);//DisplayBoard(show, ROW, COL);//布置雷SetMine(mine, ROW, COL);//排查雷FindMine(mine, show, ROW, COL);}int main()
{int input = 0;srand((unsigned int)time(NULL));//生成随机坐标,用于布置雷,保证每次雷的位置都不同do{meun();printf("请输入>");scanf("%d", &input);switch (input){case 0:printf("游戏结束\n");break;case 1:game();break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}
game.c
#include "game.h"void InitBoard(char Board[ROWS][COLS], int rows, int cols, char set)
{int i = 0;for (i = 0; i < rows; i++){int j = 0;for (j = 0; j < cols; j++){Board[i][j] = set;}}
}void DisplayBoard(char Board[ROWS][COLS], int row, int col)
{int i = 0;for (i = 0; i <= row; i++){printf("%d ", i);}.......
}void SetMine(char Board[ROWS][COLS], int row, int col)
{int count = COUNT;while (count){int x = rand() % row + 1;int y = rand() % col + 1;.......}
}void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{int x = 0;int y = 0;int win = 0;while (win < row * col - COUNT){printf("请输入要排查的坐标:>");scanf("%d %d", &x, &y);if (x > 0 && y > 0 && x <= row && y <= col){.......}}elseprintf("输入坐标非法,请重新输入\n");}if (win == row * col - COUNT){printf("恭喜你,闯关成功\n");DisplayBoard(mine, ROW, COL);}}int GetMine(char mine[ROWS][COLS], int x, int y)
{int i = 0;int j = 0;char sum='0';for (i = x - 1; i <= x + 1; i++){for (j = y - 1; j <= y + 1; j++){sum += mine[i][j];}}return sum - 9 * '0';
}
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 COUNT 10
//初始化棋盘
void InitBoard(char Board[ROWS][COLS], int rows, int cols, 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);
//排查周围雷个数
int GetMine(char mine[ROWS][COLS], int x, int y);
想要完整源代码文件可到小博的Gitee仓库下,自行查看下载。登录 - Gitee.comhttps://gitee.com/never-fade-away/test.c1/commit/e664a4818825894db76ca91816d867eaca8c6749
小博这里就说这么多了,大家有不懂的地方可以随时问我!!
这里小博送给大家自己喜欢的一句话:“放弃去寻找标准答案,你的选择就是答案!”加油!!