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

小博這里就說這么多了,大家有不懂的地方可以隨時問我!!

這里小博送給大家自己喜歡的一句話:“放棄去尋找標準答案,你的選擇就是答案!”加油!!

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

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

相關文章

數據結構之加餐篇 -順序表和鏈表加餐

目錄一、鏈表分割二、隨機鏈表的復制總結一、鏈表分割 鏈表分割 題目描述的意思就如下圖&#xff1a; 也就是把1&#xff0c;2挪到前面&#xff0c;6&#xff0c;3&#xff0c;5挪到后面&#xff0c;前者的相對順序不發生改變 這里要想往后挪就要先遍歷&#xff0c;遍歷到6…

JSP與Servlet整合數據庫開發:構建Java Web應用的全棧指南

JSP與Servlet整合數據庫開發&#xff1a;構建Java Web應用的全棧指南 概述 在Java Web開發領域&#xff0c;JSP&#xff08;JavaServer Pages&#xff09;與Servlet是構建動態Web應用的核心技術組合。Servlet作為Java EE的基礎組件&#xff0c;負責處理客戶端請求、執行業務邏…

設計五種算法精確的身份證號匹配

問題定義與數據準備 我們有兩個Excel文件&#xff1a; small.xlsx: 包含約5,000條記錄。large.xlsx: 包含約140,000條記錄。 目標&#xff1a;快速、高效地從large.xlsx中找出所有其“身份證號”字段存在于small.xlsx“身份證號”字段中的記錄&#xff0c;并將這些匹配的記錄保…

Spring 框架(IoC、AOP、Spring Boot) 的必會知識點匯總

目錄&#xff1a;&#x1f9e0; 一、Spring 框架概述1. Spring 的核心功能2. Spring 模塊化結構&#x1f9e9; 二、IoC&#xff08;控制反轉&#xff09;核心知識點1. IoC 的核心思想2. Bean 的定義與管理3. IoC 容器的核心接口4. Spring Bean 的創建方式&#x1f9f1; 三、AOP…

簡單工廠模式(Simple Factory Pattern)?? 詳解

?作者簡介&#xff1a;大家好&#xff0c;我是 Meteors., 向往著更加簡潔高效的代碼寫法與編程方式&#xff0c;持續分享Java技術內容。 &#x1f34e;個人主頁&#xff1a; Meteors.的博客 &#x1f49e;當前專欄&#xff1a; 設計模式 ?特色專欄&#xff1a; 知識分享 &…

新電腦硬盤如何分區?3個必知技巧避免“空間浪費癥”!

剛到手的新電腦&#xff0c;硬盤就像一間空蕩蕩的大倉庫&#xff0c;文件扔進去沒多久就亂成一鍋粥&#xff1f;別急&#xff0c;本文會告訴你新電腦硬盤如何分區&#xff0c;這些方法不僅可以幫你給硬盤分區&#xff0c;還可以調整/合并分區大小等。所以&#xff0c;本文的分區…

【微知】git submodule的一些用法總結(不斷更新)

文章目錄綜述要點細節如何新增一個submodule&#xff1f;如何手動.gitmodules修改首次增加一個submodule&#xff1f;git submodule init&#xff0c;init子命令依據.gitmodules.gitmodules如何命令修改某個成員以及同步&#xff1f;如果submodule需要修改分支怎么辦&#xff1…

【Spring Cloud微服務】9.一站式掌握 Seata:架構設計與 AT、TCC、Saga、XA 模式選型指南

文章目錄一、Seata 框架概述二、核心功能特性三、整體架構與三大角色1. Transaction Coordinator (TC) - 事務協調器&#xff08;Seata Server&#xff09;2. Transaction Manager (TM) - 事務管理器&#xff08;集成在客戶端&#xff09;3. Resource Manager (RM) - 資源管理器…

AI賦能!Playwright帶飛UI自動化腳本維護

80%的自動化腳本因一次改版報廢&#xff1f; 開發隨意改動ID導致腳本集體崩潰&#xff1f;背景UI自動化在敏捷開發席卷行業的今天&#xff0c;UI自動化測試深陷一個尷尬困局&#xff1a;需求迭代速度&#xff08;平均2周1次&#xff09;&#xff1e; 腳本維護速度&#xff08;平…

Redis、Zookeeper 與關系型數據庫分布式鎖方案對比及性能優化實戰指南

Redis、Zookeeper 與關系型數據庫分布式鎖方案對比及性能優化實戰指南 1. 問題背景介紹 在分布式系統中&#xff0c;多節點并發訪問共享資源時&#xff0c;如果不加鎖或加鎖不當&#xff0c;會導致數據不一致、超賣超買、競態條件等問題。常見的分布式鎖方案包括基于Redis、Zoo…

網絡安全A模塊專項練習任務十一解析

任務十一&#xff1a;IP安全協議配置任務環境說明&#xff1a; (Windows 2008)系統&#xff1a;用戶名Administrator&#xff0c;密碼Pssw0rd1.指定觸發SYN洪水攻擊保護所必須超過的TCP連接請求數閾值為5&#xff1b;使用組合鍵winR&#xff0c;輸入regedit打開注冊表編輯器&am…

金蝶中間件適配HGDB

文章目錄環境文檔用途詳細信息環境 系統平臺&#xff1a;Microsoft Windows (64-bit) 10 版本&#xff1a;5.6.5 文檔用途 本文章主要介紹金蝶中間件簡單適配HGDB。 詳細信息 一、金蝶中間件Apusic安裝與配置 1.Apusic安裝與配置 Windows和Linux下安裝部署過程相同。 &…

使用a標簽跳轉之后,會刷新一次,這個a標簽添加的樣式就會消失

<ul class"header-link"><li><a href"storeActive.html">到店活動</a></li><li><a href"fuwu.html">服務</a></li><li><a href"store.html">門店</a></l…

線程池實現及參數詳解

線程池概述 Java線程池是一種池化技術&#xff0c;用于管理和復用線程&#xff0c;減少線程創建和銷毀的開銷&#xff0c;提高系統性能。Java通過java.util.concurrent包提供了強大的線程池支持。 線程池參數詳解 1. 核心參數 // 創建線程池的完整構造函數 ThreadPoolExecu…

K8S 部署 NFS Dynamic Provisioning(動態存儲供應)

K8S 部署 NFS Dynamic Provisioning&#xff08;動態存儲供應&#xff09; 本文檔提供完整的 K8s NFS 動態存儲部署流程&#xff0c;包含命名空間創建、RBAC 權限配置、Provisioner 部署、StorageClass 創建及驗證步驟。 2. 部署步驟 2.1 創建命名空間 首先創建獨立的命名空間 …

JavaEE 進階第二期:開啟前端入門之旅(二)

專欄&#xff1a;JavaEE 進階躍遷營 個人主頁&#xff1a;手握風云 目錄 一、VS Code開發工具的搭建 1.1. 創建.html文件 1.2. 安裝插件 1.3. 快速生成代碼 二、HTML常見標簽 2.1. 換行標簽 2.2. 圖片標簽: img 2.3. 超鏈接 三、表格標簽 四、表單標簽 4.1. input標…

【RNN-LSTM-GRU】第二篇 序列模型原理深度剖析:從RNN到LSTM與GRU

本文將深入探討循環神經網絡&#xff08;RNN&#xff09;的核心原理、其面臨的長期依賴問題&#xff0c;以及兩大革命性解決方案——LSTM和GRU的門控機制&#xff0c;并通過實例和代碼幫助讀者徹底理解其工作細節。1. 引言&#xff1a;時序建模的數學本質在上一篇概述中&#x…

Qt---狀態機框架QState

QState是Qt狀態機框架&#xff08;Qt State Machine Framework&#xff09;的核心類&#xff0c;用于建模離散狀態以及狀態間的轉換邏輯&#xff0c;廣泛應用于UI交互流程、設備狀態管理、工作流控制等場景。它基于UML狀態圖規范設計&#xff0c;支持層次化狀態、并行狀態、歷史…

GitHub 熱榜項目 - 日榜(2025-09-02)

GitHub 熱榜項目 - 日榜(2025-09-02) 生成于&#xff1a;2025-09-02 統計摘要 共發現熱門項目&#xff1a;14 個 榜單類型&#xff1a;日榜 本期熱點趨勢總結 本期GitHub熱榜呈現AI Agent生態爆發趨勢&#xff0c;Koog、Activepieces等項目推動多平臺智能體開發框架成熟。語…

華為衛星對星引導技術深度解析:原理、實現與開源替代方案

利號&#xff1a;CNXXXXXX 涉及多傳感器融合/自適應波束成形/軌道預測算法一、技術原理剖析&#xff1a;衛星間高精度指向的核心挑戰在低軌衛星&#xff08;LEO&#xff09;星座中&#xff0c;衛星間鏈路&#xff08;ISL&#xff09;的建立面臨三大技術難題&#xff1a;1. 動力…