摘要:文章目錄一游戲簡介二代碼實現調用函數打印菜單函數函數初始化函數布置雷函數排雷函數三總代碼一游戲簡介一款小游戲,一張棋盤可以自己設計,,,都可以,或是添加一些自己喜歡的元素布滿許多未知是雷或是安全的格子,輸入坐標,若觸雷,游戲結束,反之,顯
文章目錄
一、游戲簡介
二、代碼實現
1.調用test函數
2.打印菜單(menu函數)
3.game函數
4.初始化(Initmine函數)
5.布置雷(SetMine函數)
6.排雷(FindMime函數)?
?三、總代碼
1.game.h
2.game.c
3.test.c
一、游戲簡介
一款小游戲,一張棋盤(可以自己設計,9*9 , 12*12 , 15*15? 都可以 ,?或是添加一些自己喜歡的元素)布滿許多未知是雷或是安全的格子,輸入坐標,若觸雷,游戲結束,反之,顯示周圍8個格子的雷的個數
二、代碼實現
1.首先調用test?函數
void test(){ int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("請選擇:>"); scanf("%d", &input); switch (input) { case 1: //掃雷 game(); break; case 0: printf("退出游戲/n"); break; default: printf("選擇錯誤/n"); break; } } while (input);}
2.打印菜單,進行選擇
void menu(){ printf("***********************/n"); printf("***** 1. play ****/n"); printf("***** 0. exit ****/n"); printf("***********************/n");}
3.實現game函數
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(mine, ROW, COL); //布置雷 SetMine(mine, ROW, COL); DisplayBoard(show, ROW, COL); //DisplayBoard(mine, ROW, COL); //排雷 FindMine(mine, show, ROW, COL);}
4.初始化棋盤及打印(可以按照自己的興趣自己設計)
void InitBoard(char board[ROWS][COLS], int rows, int cols, char set){ int i = 0; int j = 0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { board[i][j] = set; } }}void DisplayBoard(char board[ROWS][COLS], int row, int col){ //1~9 int i = 0; int j = 0; //列號的打印 for (i = 0; i <= col; i++) { printf("%d ", i); } printf("/n"); for (i = 1; i <= row; i++) { printf("%d ", i);//打印行號 for (j = 1; j <= col; j++) { printf("%c ", board[i][j]); } printf("/n"); }}
5.布置雷
void SetMine(char mine[ROWS][COLS], int row, int col){ int count = EASY_COUNT; while (count) { int x = rand() % row + 1; int y = rand() % col + 1; if (mine[x][y] == "0") { mine[x][y] = "1"; count--; } }}
6.排雷
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 - EASY_COUNT) { printf("請輸入要排查的坐標:>"); scanf("%d %d", &x, &y); if (x >= 1 && x <= row && y >= 1 && y <= col) { if (mine[x][y] == "1") { printf("很遺憾你被炸死了/n"); DisplayBoard(mine, row, col); break; } else { //計算x,y坐標周圍有幾個雷 int n = get_mine_count(mine, x, y); show[x][y] = n + "0"; DisplayBoard(show, row, col); win++; } } else { printf("輸入坐標非法,無法排雷,請重新輸入/n"); } } if (win == row * col - EASY_COUNT) { printf("恭喜你,排雷成功/n"); DisplayBoard(mine, row, col); }}
排雷內部的函數,用來在show棋盤上顯示雷的個數?
static int get_mine_count(char mine[ROWS][COLS], int x, int y){ return mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * "0";}
三、總代碼
1.game.h
#pragma once//頭文件的包含#include #include #include //符號的聲明#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define EASY_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 mine[ROWS][COLS], int row, int col);//排查雷void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
2.game.c
#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void InitBoard(char board[ROWS][COLS], int rows, int cols, char set){ int i = 0; int j = 0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { board[i][j] = set; } }}void DisplayBoard(char board[ROWS][COLS], int row, int col){ //1~9 int i = 0; int j = 0; //列號的打印 for (i = 0; i <= col; i++) { printf("%d ", i); } printf("/n"); for (i = 1; i <= row; i++) { printf("%d ", i);//打印行號 for (j = 1; j <= col; j++) { printf("%c ", board[i][j]); } printf("/n"); }}void SetMine(char mine[ROWS][COLS], int row, int col){ int count = EASY_COUNT; while (count) { int x = rand() % row + 1; int y = rand() % col + 1; if (mine[x][y] == "0") { mine[x][y] = "1"; count--; } }}static int get_mine_count(char mine[ROWS][COLS], int x, int y){ return mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + 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; while (win < row * col - EASY_COUNT) { printf("請輸入要排查的坐標:>"); scanf("%d %d", &x, &y); if (x >= 1 && x <= row && y >= 1 && y <= col) { if (mine[x][y] == "1") { printf("很遺憾你被炸死了/n"); DisplayBoard(mine, row, col); break; } else { //計算x,y坐標周圍有幾個雷 int n = get_mine_count(mine, x, y); show[x][y] = n + "0"; DisplayBoard(show, row, col); win++; } } else { printf("輸入坐標非法,無法排雷,請重新輸入/n"); } } if (win == row * col - EASY_COUNT) { printf("恭喜你,排雷成功/n"); DisplayBoard(mine, row, col); }}
3.test.c
#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu(){ printf("***********************/n"); printf("***** 1. play ****/n"); printf("***** 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(mine, ROW, COL); //布置雷 SetMine(mine, ROW, COL); DisplayBoard(show, ROW, COL); //DisplayBoard(mine, ROW, COL); //排雷 FindMine(mine, show, ROW, COL);}void test(){ int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("請選擇:>"); scanf("%d", &input); switch (input) { case 1: //掃雷 game(); break; case 0: printf("退出游戲/n"); break; default: printf("選擇錯誤/n"); break; } } while (input);}int main(){ test(); return 0;}
這只是掃雷的基礎版,還有很多功能沒有實現,我將會繼續改進,感謝觀看
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/123360.html
目錄 ?前言:●由于作者水平有限,文章難免存在謬誤之處,敬請讀者斧正,俚語成篇,懇望指教! ???????? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——By 作者:新曉·故知 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ...
摘要:上一期咱們用語言實現了三子棋的小游戲語言實現三子棋今天我們再來寫個掃雷的游戲,說起掃雷,相信大家都不陌生,可能許多朋友還是玩掃雷的高手。 ? ? ?上一期咱們用C語言實現了三子棋的小游戲? C語言實現三子棋? ? ? ?今天我們再來寫個掃雷的游戲,說起掃雷,相信大家都不陌生,可能許多朋友還是...
摘要:掃雷最原始的版本可以追溯到年一款名為方塊的游戲。兩年后,湯姆安德森在的基礎上又編寫出了游戲地雷,由此奠定了現代掃雷游戲的雛形。年,微軟公司的羅伯特杜爾和卡特約翰遜兩位工程師在系統上加載了該游戲,掃雷游戲才正式在全世界推廣開來。 掃雷最原始的版本可以追溯到1973年一款名為方塊的游戲。 不久,...
摘要:函數游戲菜單請選擇掃雷游戲退出游戲選擇錯誤解析函數內部利用時間戳,形成隨機數,主要目的是實現游戲中地雷的隨機埋放。 前言 本篇文章使用C語言實現簡單小游戲---掃雷。(文章最后有完整代碼鏈接) 想必大多數人都玩過或者了解過掃雷的游戲規則,但是在這里,我們在一起重溫一下掃雷的游戲規則,也更好...
閱讀 1673·2021-11-15 11:38
閱讀 4514·2021-09-22 15:33
閱讀 2332·2021-08-30 09:46
閱讀 2175·2019-08-30 15:43
閱讀 827·2019-08-30 14:16
閱讀 2068·2019-08-30 13:09
閱讀 1255·2019-08-30 11:25
閱讀 700·2019-08-29 16:42