用c語言實現簡易c語言掃雷游戲

void test(void)
{int input = 0;do{menu();printf("請選擇: >");scanf("%d", &input);switch (input){menu();case 1:printf("掃雷\n");game();break;case 2:printf("退出游戲\n");break;default:printf("輸入錯誤,請重新輸入");break;}} while (input);//0退出游戲}
int main(void)
{test();return 0;
}

?1、主函數及游戲開始結束的界面設計

void menu()
{printf("*************************\n");printf("*******  1:開始游戲      *******\n");printf("*******  0:退出游戲      *******\n");printf("*************************\n");}

2、菜單函數

void game()
{char mine[ROWS][COLS] = { 0 };//存雷char show[ROWS][COLS] = { 0 };//存放排查出的雷的信息//初始化棋盤   盡量設計成一樣的InitBoard(mine,ROWS, COLS,'0');InitBoard(show,ROWS, COLS,'*');//調試時打印該表,玩的時候可以不打印//打印棋盤DisplayBoard(show, ROW, COL);//布置雷SetMine(mine, ROW, COL);DisplayBoard(mine, ROW, COL);//棋盤雷信息//排查雷FindMine(mine, show, ROW, COL);}

3、游戲模塊

? ? ? ? 頭文件參數封裝

#define ROW 9        //棋盤顯示區域
#define COL 9#define ROWS ROW + 2//棋盤寬度
#define COLS COL + 2#define EASY_COUNT 20//雷的數量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);

????????初始化棋盤 ? 盡量設計成一樣的

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 <= col;i++){printf("%d ", i);//打印行列}printf("\n");for (i = 1;i <= row;i++){printf("%d ", i);int j = 0;for (j = 1;j <= col;j++){printf("%c ", board[i][j]);}printf("\n");}}

????????布置雷

//布置雷是在棋盤上隨機的找10個坐標
//x范圍1~9
//y范圍1~9
void SetMine(char mine[ROWS][COLS], int row, int col)
{ int count = EASY_COUNT;//80個雷int x = 0;int y = 0;srand((unsigned int)time(NULL));//隨機數清空while (count){x = rand() % row + 1;//防止出界y = rand() % col + 1;if (mine[x][y] != '1'){mine[x][y] = '1';//判斷是否有雷count--;}}
}

???????

?排查雷

void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
{int x = 0;int y = 0;int win = 1;while (1){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{int count = GetMineCount(mine, x, y);show[x][y] = count + '0';DisplayBoard(show, ROW, COL);}}else{printf("輸入的坐標有誤x(1~9),y(1~9) 請重新輸入");}//游戲勝利if (win == row * col - EASY_COUNT){printf("恭喜你,排雷成功\n");break;}}
}
統計周圍有幾個雷

目錄

?1、主函數及游戲開始結束的界面設計

2、菜單函數

3、游戲模塊

????????初始化棋盤 ? 盡量設計成一樣的

????????打印棋盤

????????布置雷

???????

?排查雷

法2 統計周圍有幾個雷


int GetMineCount(char mine[ROWS][COLS], char x, char y)
{int i = 0;int count = 0;for(i = -1;i <= 1;i++){ int j = 0;for (j = -1;j <= 1;j++){count += mine[x + i][y + j] - '0';}}return count;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83838.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83838.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83838.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

系統辨識的研究生水平讀書報告期末作業參考

這是一份關于系統辨識的研究生水平讀書報告&#xff0c;內容系統完整、邏輯性強&#xff0c;并深入探討了理論、方法與實際應用。報告字數超過6000字 從理論到實踐&#xff1a;系統辨識的核心思想、方法論與前沿挑戰 摘要 系統辨識作為連接理論模型與客觀世界的橋梁&#xff…

開源、免費、美觀的 Vue 后臺管理系統模板

隨著前端技術的不斷發展&#xff0c;Vue.js 憑借其輕量、高效、易上手的特性&#xff0c;成為國內外開發者最喜愛的前端框架之一。在構建后臺管理系統時&#xff0c;Vue 提供了以下優勢&#xff1a; 響應式數據綁定&#xff1a;讓頁面和數據保持同步&#xff0c;開發效率高。 …

適合 Acrobat DC 文件類型解析

文件類型 (File Type)ProgID (Continuous)ProgID (Classic)主要用途.pdfAcroExch.Document.DCAcroExch.Document.20XX (版本特定)Adobe PDF文檔格式&#xff0c;用于存儲文檔內容和格式.pdfxmlAcroExch.pdfxmlAcroExch.pdfxmlPDF與XML結合的格式&#xff0c;可能用于結構化數據…

C/C++數據結構之漫談

概述 在當今的數字化時代&#xff0c;無論是刷短視頻、社交聊天&#xff0c;還是使用導航軟件、網絡購物&#xff0c;背后都離不開計算機技術的支持。但你是否想過&#xff1a;為什么同樣的功能&#xff0c;有的軟件運行得飛快&#xff0c;有的卻嚴重卡頓&#xff0c;半天沒有響…

4步使用 vue3 路由

路由的基本使用步驟分為以下4步 第一步&#xff1a;定義路由組件&#xff1a;略 第二步&#xff1a;定義路由鏈接和路由視圖&#xff1a; <template><div class"app-container"><h1>App根組件</h1><router-link to"/home">…

VScode使用npm啟動項目以及npm install ,npm start報錯問題處理

安裝啟動步驟 打開cmd 輸入指令 npm -v 查看npm是否安裝&#xff0c;需要先安裝node.js node.js安裝&#xff1a;node.js安裝 安裝包下載后&#xff0c;一直點擊next &#xff0c;安裝完成&#xff0c;打開cmd 輸入 node -v 查看安裝是否成功 使用VScode 打開項目&#xf…

《仿盒馬》app開發技術分享-- 回收金提現記錄查詢(端云一體)

開發準備 上一節我們實現了回收金提現的功能&#xff0c;并且成功展示了當前賬戶的支出列表&#xff0c;但是我們的提現相關的記錄并沒有很好的給用戶做出展示&#xff0c;用戶只知道當前賬戶提現扣款&#xff0c;并不知道回收金的去向&#xff0c;這一節我們就要實現回收金記…

芯片的起點——從硅到晶圓制造

第1篇&#xff1a;芯片的起點——從硅到晶圓制造 在討論汽車芯片如何“上車”之前&#xff0c;我們必須先回到源頭&#xff0c;從一顆芯片是如何從沙子一步步煉成講起。很多人知道芯片很復雜&#xff0c;卻未必清楚它的每一層結構、每一道工藝有何意義。本系列文章將從硅的提純…

vscode python debugger 如何調試老版本python

找到老版本資源&#xff1a; 找到老版本python debugger插件&#xff0c;現在官方github 都是24之后的release 了&#xff0c;調不了3.6 老項目 pdb&#xff1a; 太麻煩 debugpy vscode python debugger 的底層實現&#xff0c;我們可以指定老版本的debugger 來調試&#…

MVCC 怎么實現的

? 什么是 MVCC?它是怎么實現的?(適合基礎不牢固者) 一、MVCC 是什么? MVCC 全稱是:Multi-Version Concurrency Control,中文叫:多版本并發控制。 主要用于解決數據庫的讀寫并發沖突問題,它的作用是讓讀操作無需加鎖,也能讀到符合事務隔離要求的數據版本。 你可以…

深度解析企業風控API技術實踐:構建全方位企業風險畫像系統

引言 在當前的商業環境中&#xff0c;企業風險評估已成為各類商業決策的重要依據。本文將從技術實踐的角度&#xff0c;詳細介紹企業風控API的集成應用&#xff0c;重點關注API的調用方式、數據結構以及風險維度的劃分&#xff0c;幫助開發者快速構建企業風險畫像系統。 關鍵…

Mac 系統 Node.js 安裝與版本管理指南

Mac 系統 Node.js 安裝與版本管理指南 一、環境檢查 在終端執行以下命令驗證當前環境&#xff1a; node -v # 查看 Node.js 版本&#xff08;未安裝會提示命令不存在&#xff09; npm -v # 查看 npm 版本&#xff08;需 Node.js 安裝完成后生效&#xff09;二、安裝方法 …

設備健康管理系統搭建全技術解析:從架構設計到智能運維實踐

在工業 4.0 與智能制造深度融合的當下&#xff0c;設備健康管理系統已成為企業實現數字化轉型的核心基礎設施。據 Gartner 數據顯示&#xff0c;采用智能設備健康管理系統的企業&#xff0c;平均可降低 30% 的非計劃停機成本。如何基于現代技術棧構建一套高效、精準的設備健康管…

React-router 路由歷史的模式和原理

在現代Web開發中,React Router已成為管理React應用程序中路由的流行工具。它不僅簡化了在單頁應用程序(SPA)中導航的過程,還提供了多種路由歷史的模式來適應不同的開發需求和環境。了解這些模式及其背后的原理對于構建高效、可維護的Web應用程序至關重要。本文將深入探討Re…

C++題解(35) 2025年順德區中小學生程序設計展示活動(初中組C++) 換位(一)

題目描述 小明班上是n行m列的座位排列&#xff0c;座位按照行列順序編號&#xff0c;如6行7列&#xff0c;那么第1行第1列座位號為1號、第1行第7列為7號、第3行第4列為18號&#xff0c;如此遞推。 現在期中考剛結束要進行全班換座位。班主任剛剛公布了換位指令&#xff0c;指…

征程 6 Cache 使用場景

一、緩存機制基礎 1.1 緩存類型對比 1.2 典型應用場景 緩存緩沖區 &#xff1a;適用于高頻 CPU 訪問場景&#xff08;如 AI 推理中間數據&#xff09; 非緩存緩沖區 &#xff1a;適用于設備直傳場景&#xff08;如 DMA 數據流&#xff09; 二、數據一致性問題深度解析 2.1…

山東大學軟件學院項目實訓-基于大模型的模擬面試系統-個人博客(十)

開發博客&#xff1a;AI面試官個性化出題MCP功能最終完善 本周作為項目開發的最后沖刺階段&#xff0c;我們致力于進一步增強AI面試官在個性化題目生成方面的能力。核心工作是新增和優化了一系列MCP&#xff08;Multi-turn Conversation Protocol&#xff09;工具&#xff0c;…

Rabbitmq后臺無法登錄問題解決

rabbitmq pod正常運行&#xff0c;查看pod日志也沒有發現異常報錯。 我們進入容器查看插件是否正常啟用&#xff1a; $ kubectl exec -it rabbitmq-hitch-0 -n rabbitmq -- rabbitmq-plugins list Listing plugins with pattern ".*" ...Configured: E explicitly…

期權入門介紹

文章目錄 1.基本概念2.期權損益圖買入看漲期權賣出看漲期權買入看跌期權賣出看跌期權 3.買賣邏輯3.1 買賣邏輯買入看漲期權賣出看漲期權買入看跌期權賣出看跌期權 3.2 決策依據 4.行權方式美式期權 (American Style)歐式期權 (European Style)百慕大期權 (Bermudan Style)關鍵區…

useMemo vs useCallback:React 性能優化的兩大利器

文章目錄 什么是 useMemo&#xff1f;基本語法使用場景實際例子 什么是 useCallback&#xff1f;基本語法使用場景實際例子 核心區別對比什么時候使用它們&#xff1f;使用 useMemo 的時機使用 useCallback 的時機 常見誤區和注意事項誤區 1&#xff1a;過度使用誤區 2&#xf…