C 學習心得之掃雷遊戲

2022-09-29 11:51:09 字數 4576 閱讀 9304

一、序言

建立乙個9*9有10個雷的掃雷遊戲

文章的順序是按照我當時的程式設計順序寫的,順便寫下我當初的一點思路,總的**在文章最後,前面的都是分散的函式,有需要的朋友直接複製最後的

二、建立

建立乙個標頭檔案,乙個放遊戲的程式,乙個放執行測試的程式

#define _crt_secure_no_warnings 1

#include//生成隨機數

#include

#include//生成時間戳

#define row 9//行數

#define col 9//列數

#define rows row+2

#define cols col+2

#define easy 10//雷數

void initboard(char board[rows][cols], int rows, int cols, char set);//程式設計客棧初始函式

void displayboard(char board[rows][cols], int row, int col);//展示函式

void setboard(char board[rows][cols], int row, int col);//造雷函式

void checkboard(char mine[rows][cols], char show[rows][cols], int row, int col);//掃瞄函式

三、選擇介面

進入遊戲,可能出現情況三種,分別是退出,遊戲和輸入錯誤

也許有人一局完了還想玩,所以要設定迴圈,寫完**可以執行一下,避免最後出bug範圍太大

#include"game.h"

void test()

} while (input);

}void menu()

int main()

四、遊戲部分

1、宣告變數和初始化

建立儲存掃雷的元素的陣列,這裡咱們可以設定兩個字元形陣列,乙個是標識著炸彈『1'的mine陣列,乙個是用來給玩家展示的show陣列

雖然是99的大小,但是在之後要由電腦掃瞄咱們選中點周圍的區域,如果陣列為9行9列,電腦在掃瞄最外面一行時就跟中間的部分不一樣了,為了方便,咱們建立1111的陣列

void game()

void initboard(char board[rows][cols], int rows, int cols, char set)

} }2、展示函式

申明和定義好變數,肯定要讓玩家看到遊戲盤的變化情況才能玩,所以寫乙個展示函式

mine陣列中炸彈用『1'來表示,不是炸彈用『0'表示,show陣列中我們用『*'表示乙個區域,然後選中的點要是周圍無炸彈,就是『 ',否則就標識出周圍的炸彈數。

void displayboard(char board[rows][cols], int row, int col)

printf("\n");

for (i = 1; i <= row; i++)

printf("\n");

} printf("----------------------------");

printf("\n");

}3、造炸彈

這裡咱們在標頭檔案定義炸彈數,以後想玩多點炸彈,修改乙個數就行,方便快捷

void setboard(char board[rows][cols], int row, int col)

}}4、掃瞄函式

進入遊戲,玩家只有選擇了要檢查的點才能繼續,這裡有三種情況,因為要有很多次選擇,所以採用迴圈

(1)選中雷區,那麼直接跳出迴圈,遊戲結束

(2)沒選中雷區,電腦會掃瞄周圍的區域,把周圍無雷的點展開,展開周圍有雷的點

這裡還要說一下mine陣列為什麼要用『0'和『1'來做標記,因為0和1這兩個字元在ascii碼表裡是連續的,一會在電腦掃瞄周圍時可以直接通過減法算出周圍的雷數

void checkboard(char mine[rows][cols], char show[rows][cols], int row, int col)

else//沒踩中雷區 }

else }

if (ret == row * col - easy) }

void zeroline(char mine[rows][cols], char show[rows][cols], int x, int y)

if (mine[x][y - 1] == '0' && show[x][y - 1] == '*')

if (mine[x - 1][y] == '0' && show[x - 1][y] == '*')

if (mine[x + 1][y] == '0' && show[x + 1][y] == '*')

if (mine[x + 1][y + 1] == '0' && show[x + 1][y + 1] == '*')

if (mine[x - 1][y - 1] == '0' && show[x - 1][y - 1] == '*')

if (mine[x + 1][y - 1] == '0' && show[x + 1][y - 1] == '*')

if (mine[x - 1][y + 1] == '0' && show[x - 1][y - 1] == '*') }

else }

}int aroundnum(char mine[rows][cols], int x, int y)

五、總**

1、標頭檔案

#define _crt_secure_no_warnings 1

#include

#include

#include

#define row 9

#define col 9

#define rows row+2

#define cols col+2

#define easy 10

void initboard(char board[rows][cols], int rows, int cols, char set);

void displayboard(char board[rows][cols], int row, int col);

void setboard(char board[rows][cols], int row, int col);

void checkboard(char mine[rows][cols], char show[rows][cols], int row, int col);

2、遊戲部分

#include"game.h"

void initboard(char board[rows][cols], int rows, int cols, char set)

} }void displayboard(char board[rows][cols], int row, int col)

printf("\n");

for (i = 1; i <= row; i++)

printf("\n");

} printf("----------------------------");

printf("\n");

}void setboard(char board[rows][cols], int row, int col) }}

int aroundnum(char mine[rows][cols], int x, int y)

void zeroline(char mine[rows][cols], char show[rows][cols], int x, int y)

if (mine[x][y - 1] == '0' && show[x][y - 1] == '*')

if (mine[x - 1][y] == '0' && show[x - 1][y] == '*')

if (mine[x + 1][y] == '0' && show[x + 1][y] == 程式設計客棧'*')

if (mine[x + 1][y + 1] == '0' && show[x + 1][y + 1] == '*')

if (mine[x - 1][y - 1] == '0' && show[x - 1][y - 1] == '*')

if (mine[x + 1][y - 1] == '0' && show[x + 1][y - 1] == '*')

if (mine[x - 1][y + 1] == '0' && show[x - 1][y - 1] == '*') }

else }

}void checkboard(char mine[rows][cols], char show[rows][cols], int row, int col)

else }

else }

if (ret == row * col - easy)

}3、檢測部分

#include"game.h"

void menu()

void game()

void test()

} while (input);

}int main()

遊戲小**,《遊戲專題》閱讀

本文標題: c++學習心得之掃雷遊戲

本文位址:

C 學習心得

c 學習心得 c 是最難的語言 這個世界上最難的程式語言可能非 c 莫屬了。你千萬 不要以為 幾天就可以學好 c c 的學習曲線是相當 bt的,你可以看看 這篇文章 c 是一門很自由的語言,自由到了有點 bt和恐怖的地步 我甚至 認為c 並不是一門成熟的程式語言,因為太容易犯錯了。所以,你一定要在 ...

c 學習心得

1.typedef struct 結構體型別 c 提供了許多種基本的 資料型別 如int float double char等 供使用者使用。但是由於程式需要處理的問題往往比較複雜,而且呈多樣化,已有的 資料型別 顯得不能滿足使用要求。因此c 允許使用者根據需要自己宣告一些型別,使用者可以自己宣告的...

C 學習心得

我是乙個轉專業到計算機行業的,系統學習c 大概有兩年了,其中走了很多彎路,也陷入很多次迷茫,最近有一些新的感受,所以想總結下來,我所認為的學習一門語言所需要經歷的階段。當你覺得已經掌握大部分的語法知識後 60 以上 可以去看一些簡單專案的源 一方面學習別人解決問題的方式,另一方面是加深語法知識的印象...