【C語言極簡自學筆記】項目開發——掃雷游戲

一、項目概述

1.項目背景

掃雷是一款經典的益智游戲,由于它簡單而富有挑戰性的玩法深受人們喜愛。在 C 語言學習過程中,開發掃雷游戲是一個非常合適的實踐項目,它能夠綜合運用 C 語言的多種基礎知識,如數組、函數、循環、條件判斷等,有助于提升編程能力和邏輯思維能力。

2.項目目標

本次項目旨在使用 C 語言開發一個控制臺版本的掃雷游戲,實現以下基本功能:

  1. 初始化游戲棋盤,包括雷區的布置和非雷區域周圍雷數的計算。
  2. 玩家通過輸入坐標來翻開棋盤格子,若翻開雷則游戲失敗,若翻開所有非雷格子則游戲勝利。
  3. 提供標記雷的功能,方便玩家識別可能有雷的區域。
  4. 具備良好的用戶交互界面,顯示棋盤狀態和游戲提示信息。

二.游戲設計?

?1.界面設置

由于進入游戲之后首先需要顯示選擇是否進行游戲的界面,因此需要利用do...while循環至少執行一次的特點來顯示界面,并根據用戶的選擇來決定是否進入游戲,對主函數的編碼如下所示:

int main()
{int input = 0;do{menu();printf("請選擇:>");scanf("%d",&input);switch (input){case 1:printf("開始游戲\n");break;case 0:printf("退出游戲\n");break;default:printf("選擇錯誤請重新選擇\n");break;}} while (input);return 0;
}

通過switch語句,根據輸入的值來選擇是否進入游戲,若輸入0,則退出游戲;若輸入1,則開始游戲;若輸入其他數字,提醒選擇錯誤請重新輸入。

菜單函數編輯如下:

void menu()
{printf("******************************\n");printf("********    1.play    ********\n");printf("********    0.exit    ********\n");printf("******************************\n");
}

2.游戲環節設置

當用戶選擇開始游戲后,需要進入游戲,因此需要創建一個函數來實現游戲的過程。由于需要同時布置雷和排查雷,因此需要創建兩個二維數組來實現對雷的布置與排查。

(1)初始化棋盤

void Initboard(char board[ROWS][COLS], int row, int col, char ret)
{int i = 0;int j = 0;for (i = 0; i < row; i++){for (j = 0; j < col; j++){board[i][j] = ret;}}
}

將布置雷的數組的所有元素初始化0,將排查雷的數組的所有元素初始化為*,因此需要一個字符變量來傳遞參數。

(2)打印棋盤

void Displayboard(char board[ROWS][COLS], int row, int col)
{int i = 0;int j = 0;printf("-------------------掃雷-----------------------\n");for (j = 0; j <= col; j++){printf("%d ",j);}printf("\n");for (i = 1; i <= row; i++){printf("%d ",i);for (j = 1; j <= col; j++){printf("%c ",board[i][j]);}printf("\n");}printf("-------------------掃雷-----------------------\n");
}

為了更好的識別數組中的哪一個元素,增加了打印行和列的部分

(3)設置雷

void Setmine(char board[ROWS][COLS], int row, int col)
{int count = EASY_COUNT;while (count){int x = rand() % row + 1;int y = rand() % col + 1;if (board[x][y] == '0'){board[x][y] = '1';count--;}}
}

通過調用srand函數生成隨機數的生成起點,然后通過取模運算即可隨機設置雷的位置。

此時游戲函數的代碼如下:

void game()
{char mine[ROWS][COLS] = { 0 };char show[ROWS][COLS] = { 0 };Initboard(mine, ROWS, COLS,'0');Setmine(mine, ROW, COL);//Displayboard(mine, ROW, COL);//為了展示設置雷和初始化后的結果,正式游戲不用打印Initboard(show, ROWS, COLS,'*');Displayboard(show, ROW, COL);
}

?代碼整體運行結果如下:

?可以看到,已經隨機設置了十個雷,而且排查雷的數組所有元素被初始化為*。

欲知后事如何,且看下篇文章!!!!!

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

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

相關文章

unix/linux source 命令,其發展歷程詳細時間線、由來、歷史背景

追本溯源,探究技術的歷史背景和發展脈絡,能夠幫助我們更深刻地理解其設計哲學和存在的意義。source 命令(或者說它的前身和等效形式)的歷史,與 Unix Shell 本身的發展緊密相連。 讓我們一起踏上這段追溯之旅,探索 source 命令的由來和發展歷程。 早期 Unix Shell 與命令…

720全景展示:VR全景的技術原理及應用

VR720全景展示&#xff1a;技術原理及應用探索 720全景技術&#xff0c;作為當前全球范圍內迅速崛起流行的視覺新技術&#xff0c;為用戶帶來了全新的真實現場感和交互式的體驗。憑借全方位、無死角的視覺展示特性&#xff0c;在VR&#xff08;虛擬現實&#xff09;領域中得到…

Python爬蟲實戰:研究Requests-HTML庫相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網數據量的爆炸式增長,網絡爬蟲已成為數據獲取的重要工具,廣泛應用于市場調研、輿情分析、學術研究等領域。傳統爬蟲技術在面對現代 JavaScript 動態渲染網頁時面臨挑戰,而 Requests-HTML 庫通過集成瀏覽器渲染引擎,為解決這一問題提…

VectorStore 組件深入學習與檢索方法

考慮到目前市面上的向量數據庫眾多&#xff0c;每個數據庫的操作方式也無統一標準&#xff0c;但是仍然存在著一些公共特征&#xff0c;LangChain 基于這些通用的特征封裝了 VectorStore 基類&#xff0c;在這個基類下&#xff0c;可以將方法劃分成 6 種&#xff1a; 相似性搜…

【PyQt5】從零開始的PyQt5 - QLabel篇

從零開始的PyQt5 - QLabel篇 引言一、簡述二、例程2.1 顯示到QWidget窗口上2.2 重新設置Label大小和對齊方式2.3 添加內容&#xff0c;設置邊框2.4 顯示富文本 三、參考 引言 QLabel主要用于顯示文本或圖像&#xff0c;不提供用戶交互功能。本文主要簡述PyQt5中的QLabel以及展…

論文略讀:Uncertainty-Aware Graph Structure Learning

WWW 2025 1 intro 傳統GNN忽視了圖結構自身存在的缺陷: 圖結構常常會出現錯誤邊和缺失邊等數據問題&#xff0c;從而限制模型的效果 —>為了解決上述問題&#xff0c;產生了圖結構學習算法&#xff08;GSL&#xff09; 目的在于優化結點連接和邊權重來生成新的鄰接矩陣主流…

HCIE-STP復習

文章目錄 STP STP &#x1f3e1;作者主頁&#xff1a;點擊&#xff01; &#x1f916;Datacom專欄&#xff1a;點擊&#xff01; ??創作時間&#xff1a;2025年05月31日13點17STP通過三要素選舉消除環路&#xff1a; 根橋&#xff08;BID最小&#xff0c;建議設優先級為0&…

leetcode17.電話號碼的字母組合:字符串映射與回溯的巧妙聯動

一、題目深度解析與字符映射邏輯 題目描述 給定一個僅包含數字 2-9 的字符串 digits&#xff0c;返回所有它能表示的字母組合。數字與字母的映射關系如下&#xff08;與電話按鍵相同&#xff09;&#xff1a; 2: "abc", 3: "def", 4: "ghi", …

【Unity】模型漸變技術 BlendShapes變形

模型fbx拖拽到場景并賦予腳本上SkinnedMeshRenderer參數 按下空格即可演示漸變 可去到3DsMax 或 Blender等軟件制作 這種帶有BlendShapes的模型 (Sphere002)是另一個模型&#xff0c;3DsMax叫變形器。 可參考&#xff1a;【技術美術百人計劃】美術 3.5 BlendShape基礎_嗶哩嗶哩…

CTFHub-RCE 命令注入-無過濾

觀察源代碼 判斷是Windows還是Linux 源代碼中有 ping -c 4 說明是Linux 查看有哪些文件 127.0.0.1|ls 發現除了index.php文件外&#xff0c;還存在一個可疑的文件 打開flag文件 我們嘗試打開這個文件 127.0.0.1|cat 19492844826916.php 可是發現 文本內容顯示不出來&…

DrissionPage ChromiumPage模式:瀏覽器自動化的高效利器

引言 在Python自動化領域&#xff0c;Selenium與Requests是開發者耳熟能詳的工具&#xff0c;但二者在功能側重上存在明顯割裂。DrissionPage的出現打破了這一局面&#xff0c;其創新的ChromiumPage模式通過整合瀏覽器自動化與HTTP請求能力&#xff0c;為網頁操作提供了全新解…

uniapp分包配置,uniapp設置subPackages

在使用uniapp開發過程中&#xff0c;由于項目比較大&#xff0c;無法直接上傳&#xff0c;需要分包后才可以上傳。 步驟&#xff1a; 1、在pages同級目錄下創建分包的目錄&#xff08;pages_second&#xff09;&#xff0c;把要分包的文件放到該目錄下&#xff1b; 2、在pag…

零基礎一站式端游內存輔助編寫教程(無密)

目錄如下&#xff1a; 基礎理論篇 內存基礎概念&#xff08;如內存地址、數據類型、讀寫原理&#xff09;端游內存機制簡介&#xff08;游戲進程與內存分配&#xff09; 工具與環境搭建 常用內存分析工具介紹&#xff08;如 Cheat Engine、x64dbg 等&#xff09;開發環境配…

汽車售后診斷數據流詳細分析

一、引言 隨著汽車電子化程度的不斷提升&#xff0c;電控系統已成為車輛運行的核心支撐。據羅蘭貝格 2025 年智能汽車白皮書數據顯示&#xff0c;中央計算 區域控制架構&#xff08;Zonal EEA&#xff09;的普及率已突破 58%&#xff0c;推動整車線束成本下降 41%12。與此同時…

智能守護電網安全:探秘輸電線路測溫裝置的科技力量

在現代電力網絡的龐大版圖中&#xff0c;輸電線路如同一條條 “電力血管”&#xff0c;日夜不息地輸送著能量。然而&#xff0c;隨著電網負荷不斷增加&#xff0c;長期暴露在戶外的線路&#xff0c;其線夾與導線在電流熱效應影響下&#xff0c;極易出現溫度異常。每年因線路過熱…

設計模式——單例設計模式(創建型)

摘要 本文詳細介紹了單例設計模式&#xff0c;包括其定義、結構、實現方法及適用場景。單例模式是一種創建型設計模式&#xff0c;確保一個類只有一個實例并提供全局訪問點。其要點包括唯一性、私有構造函數、全局訪問點和線程安全。文章還展示了單例設計模式的類圖和時序圖&a…

Lyra學習筆記 Experience流程梳理

目錄 前言1 創建2 加載3 Deactivate4 總結與圖示 前言 這篇主要將視角放在Experience的流程&#xff0c;所以不會涉及一些更深的東西 之后ULyraExperienceManagerComponent簡稱為EMC 1 創建 完事開頭難&#xff0c;首先找到了管理Experience的組件&#xff0c;那么它的初始化…

Ubuntu下編譯mininim游戲全攻略

目錄 一、安裝mininim 軟件所依賴的庫&#xff08;重點是allegro游戲引擎庫&#xff09;二、編譯mininim 軟件三、將mininim打包給另一個Ubuntu系統使用四、安卓手機運行mininim 一、安裝mininim 軟件所依賴的庫&#xff08;重點是allegro游戲引擎庫&#xff09; 1. 用apt-get…

SMT貼片制造流程關鍵環節解析

內容概要 現代電子制造領域中&#xff0c;SMT&#xff08;表面貼裝技術&#xff09;作為核心工藝&#xff0c;其流程的精密性與穩定性直接決定產品性能與生產良率。本文以SMT貼片制造流程為主線&#xff0c;系統解析焊膏印刷、元器件貼裝、回流焊接三大核心工藝的技術要點。其…

HTTP/2與HTTP/3特性詳解:為你的Nginx/Apache服務器開啟下一代Web協議

更多服務器知識&#xff0c;盡在hostol.com 嘿&#xff0c;各位站長和服務器管理員朋友們&#xff01;咱們天天跟網站打交道&#xff0c;都希望自己的網站能像火箭一樣快&#xff0c;用戶體驗“嗖嗖”的。但你知道嗎&#xff1f;除了服務器硬件配置、代碼優化、CDN加速這些“常…