? ? ? ? 無論是找工作面試,還是課設大作業、考研,都離不開實戰項目的積累,如果你能把一個項目搞明白,并且給別人熟練的講出來,即使你沒有過項目經歷,也可以說是非常加分的,下面來沉浸式體驗一下這款掃雷游戲吧!!下載可玩!!
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
小博這里就說這么多了,大家有不懂的地方可以隨時問我!!
這里小博送給大家自己喜歡的一句話:“放棄去尋找標準答案,你的選擇就是答案!”加油!!