一、序言
建立乙個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 以上 可以去看一些簡單專案的源 一方面學習別人解決問題的方式,另一方面是加深語法知識的印象...