用C語言實現簡單的掃雷遊戲

2021-08-20 00:16:17 字數 4340 閱讀 1513

簡單說明下設計掃雷時的幾個要求:

*第一下不會被雷炸死;

*顯示該座標點周圍雷的個數;

*該座標周圍沒有雷時,可以實現展開一片沒有雷的區域。

首先我們得建造出棋盤,乙個為設計者看的棋盤顯示所以雷的分布情況(方便設計者測試),還有乙個棋盤就是全部都是由*組成的遊戲棋盤來給玩家掃雷。

首先我們先用巨集定義陣列的大小,rows和cols為陣列的大小,row和col則為需要列印出來的陣列的大小。

#define col 10

#define row 10

#define cols col+2

#define rows row+2

定義雷的個數,雷的個數的多少也是掃雷遊戲難度級別的區別。

enum mine_count

;

開始我們掃雷的設計:

列印設計者棋盤用陣列real_mine,列印玩家棋盤用陣列show_mine,將兩個陣列初始化,在設計者棋盤中字元0代表不是雷,字元1代表雷:

void initboard()

}}

初始化設計者棋盤並在棋盤x軸和y軸方向列印座標方便測試過程中檢視雷的位置:

void printboard()

}}

設計乙個函式來統計當前座標周圍雷的個數並顯示在當前座標上:

int countmine(int x, int y)

設計乙個函式來實現我們前面說的,當第一下就直接踩到雷時不讓玩家第一下就直接結束遊戲,讓玩家感覺到遊戲體驗極差,當第一下踩到雷時,該位置的雷重被新分配到其它沒有雷的位置其它功能照常:

void safemine()

}break;

}if (real_mine[x][y] == '0')

}else

}}

接著就是實現非雷區的展開,設計乙個函式對輸入的座標周圍沒有雷的地方進行展開:

void openmine(int x, int y)

if (real_mine[x - 1][y] == '0')

if (real_mine[x - 1][y + 1] == '0')

if (real_mine[x][y - 1] == '0')

if (real_mine[x][y + 1] == '0')

if (real_mine[x + 1][y - 1] == '0')

if (real_mine[x + 1][y] == '0')

if (real_mine[x + 1][y + 1] == '0')

}

後面就是設計乙個掃雷的函式,判斷玩家輸入的座標,玩家是否踩到雷被雷炸死,玩家是否找到所有的雷獲得遊戲勝利:

int sweepmine()

} else if (real_mine[x][y] == '1')

}else

return 0;

}

為了判斷最後玩家取得勝利,設計乙個函式統計所剩餘區域為雷的個數時玩家取得勝利

int getminecount()

} }return count;

}

最好就是簡單掃雷遊戲三個組成部分:

第一部分:遊戲的標頭檔案

#ifndef __mines_h__

#define __mines_h__

#include#include#include#includetypedef unsigned int uint;

enum option

;enum mine_count

;#define col 10

#define row 10

#define cols col+2

#define rows row+2

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

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

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

void setmine();

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

void safemine();

void openmine(int row, int col);

int getminecount();

int sweepmine();

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

#endif//__mines_h__

第二部分:遊戲game()的函式部分

void printboard()

}break;

}if (real_mine[x][y] == '0')

}else

}}int sweepmine()

} else if (real_mine[x][y] == '1')

}else

return 0;

}void openmine(int x, int y)

if (real_mine[x - 1][y] == '0')

if (real_mine[x - 1][y + 1] == '0')

if (real_mine[x][y - 1] == '0')

if (real_mine[x][y + 1] == '0')

if (real_mine[x + 1][y - 1] == '0')

if (real_mine[x + 1][y] == '0')

if (real_mine[x + 1][y + 1] == '0') }

int getminecount()

} }return count;

}

第三部分是:遊戲測試部分

#include"test.h"

void game()

; char real_mine[rows][cols] = ;

int ret = 0;

initboard(show_mine,real_mine, row, col );

setmine();

mineboard(real_mine,row,col);)

printf("\n");

printboard(show_mine,row,col);

safemine();

if (getminecount() == easy_count)

mineboard(real_mine, row, col);

printf("\n");

printboard(show_mine, row, col);

while (1)

if (ret)

printboard(show_mine, row, col); }}

void menu()

int main()

} while (choice);

return 0;

}

醜陋**,還望多多包涵。

希望能得到大家的指點。

用C語言實現簡單的掃雷遊戲

1.通過觀察遊戲,我們可以想到需要用兩個二維陣列來實現掃雷的功能。2.遊戲剛開始,需要需要顯示棋盤,用 遮蓋雷的座標,所以要有乙個填充棋盤的函式。3.通過rand 函式,隨機生成雷的座標,埋雷的函式。4.每次掃過後,都要顯示新的棋盤,顯示棋盤的函式,同時顯示該座標周圍雷的個數,並在該座標上顯示出來。...

用C語言實現(掃雷遊戲)

include include include include pragma warning disable 4996 define rows 8 define cols 8 define mines 62 void menu 列印選單 void init mine char mine cols 2...

用C語言實現掃雷遊戲

本人能力不足,能力有待提公升,在敲 的過程中遇到了很多問題,在此不再一一贅述,現將 以及分析展示如下 include stdio.h include stdlib.h include time.h include string.h pragma warning disable 4996 define...