真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何利用C語言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲-創(chuàng)新互聯(lián)

這篇文章主要講解了“如何利用C語言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何利用C語言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲”吧!

創(chuàng)新互聯(lián)建站主打移動(dòng)網(wǎng)站、成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、域名與空間、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。

掃雷是一款大眾類的益智小游戲。游戲目標(biāo)是在短的時(shí)間內(nèi)根據(jù)點(diǎn)擊格子出現(xiàn)的數(shù)字找出所有非雷格子,同時(shí)避免踩雷,踩到一個(gè)雷即全盤皆輸。

首先帶大家簡(jiǎn)單來了解一下掃雷的游戲機(jī)制:

隨便點(diǎn)一個(gè)格子,會(huì)有一塊,上面的數(shù)字就代表數(shù)字周圍八個(gè)格子會(huì)有幾個(gè)雷,是1他周圍就只有1個(gè)雷,2就有兩個(gè)雷,以此類推,直到找出全部沒有雷的格子就算玩家贏。只要點(diǎn)到一個(gè)有雷的格子就判定玩家輸。

了解了 機(jī)制之后就來編寫程序。將程序分為test.c、game.c和game.h三個(gè)部分。其中test.c中編寫主函數(shù),game.c中實(shí)現(xiàn)游戲的功能,game.h中存放頭文件以及對(duì)于函數(shù)的聲明。

在test.c模塊中,首先定義一個(gè)menu來存放一個(gè)游戲開始的菜單

int menu(){ printf("********************\n"); printf("********************\n"); printf("****1、開始游戲*****\n"); printf("****0、退出游戲*****\n"); printf("********************\n"); printf("********************\n");}

編寫game函數(shù)用來存放游戲?qū)崿F(xiàn)模塊

void game(){}

編寫主函數(shù)來調(diào)用game。通過do–while循環(huán)來實(shí)現(xiàn)menu,并用switch語句來選擇游戲開始和結(jié)束

int main(){ int input = 0; do { menu(); printf("請(qǐng)選擇:\n"); scanf("%d", &input); switch (input) { case 1: printf("游戲開始:\n"); game(); break; case 0: printf("游戲退出\n"); break; default: printf("請(qǐng)輸入正確的數(shù)字:\n"); break; } } while (input); return 0;}

現(xiàn)在進(jìn)入game模塊的代碼實(shí)現(xiàn)

首先需要編寫一個(gè)函數(shù)來實(shí)現(xiàn)掃雷的界面這里我們用InitBoard函數(shù)來實(shí)現(xiàn)9x9的掃雷界面。用*代表沒有被點(diǎn)開的格子,用1表示雷,0表示空格子。

void InitBoard(char board[][COLS], int rows, int cols, char set){ int i = 0; int j = 0; for (i = 0;i < rows;i++) { for (j = 0;j < cols;j++) { board[i][j] = set; } }}

在test.c中的game函數(shù)中調(diào)用函數(shù)

//存放雷  char mine[ROWS][COLS] = { 0 }; //排查雷  char mineInfo[ROWS][COLS] = { 0 }; InitBoard(mine, ROWS, COLS, '0'); InitBoard(mineInfo, ROWS, COLS, '*');

在game.c模塊中編寫ShowBoard函數(shù)將之前編寫的掃雷界面打印出來

void ShowBoard(char board[][COLS],int row,int col){ int i = 0; int j = 0; printf("===================================\n"); for (i = 0;i <= row;i++) { printf("%d ", i);    //打印 橫坐標(biāo) } printf("\n"); for (i = 1;i <=col;i++) { printf("%d ",i);     //打印縱坐標(biāo) for (j = 1;j <= col;j++) { printf("%c ", board[i][j]); } printf("\n"); } printf("===================================\n");}

此時(shí)運(yùn)行結(jié)果為;

再來編寫SetMine函數(shù)設(shè)置雷用rand函數(shù)隨機(jī)設(shè)置雷的坐標(biāo),雷的數(shù)量為MINE_NUM這里我們?cè)O(shè)置10個(gè)雷。

void SetMine(char mine[][COLS], int row, int col){ int x = 0; int y = 0; int count = 0; while (count < MINE_NUM) { x = rand() % row + 1; y = rand() % col + 1; if (mine[x][y] == '0') { mine[x][y] = '1'; count++; } }}

用函數(shù)來計(jì)算當(dāng)前格子周圍雷的個(gè)數(shù)。注意由于我們定義的雷為char類型,在計(jì)算數(shù)量的時(shí)候需要將其轉(zhuǎn)化為int類型。將加起來的數(shù)據(jù)-8 * ‘0'。

static int GetMineCount(char mine[][COLS], int x, int y){ return mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][y + 1] + mine[x][y + 1] + mine[x + 1][y + 1] + mine[x + 1][y] +   + mine[x + 1][y - 1] + mine[x][y - 1] - 8 * '0';}

最后我們用FindMine函數(shù)來實(shí)現(xiàn)玩家掃雷的操作

void FindMine(char mine[][COLS], char mineInfo[][COLS], int row, int col){ int count = 0; int x = 0; int y = 0; while (count < row*col - MINE_NUM) { printf("請(qǐng)輸入坐標(biāo):"); scanf("%d%d", &x, &y); if (x >= 1 && y <= 9 && y >= 1 && x <= 9) { if (mine[x][y] == '1') { printf("你被炸死了\n"); ShowBoard(mine, row, col); break; } else { int ret = GetMineCount(mine, x, y); mineInfo[x][y] = ret + '0'; ShowBoard(mineInfo, row, col); count++; } } else { printf("輸入的坐標(biāo)不合法\n"); } }}

記得在test.c中的game函數(shù)中調(diào)用game.c中實(shí)現(xiàn)游戲功能的函數(shù)。

void game(){ char mine[ROWS][COLS] = { 0 }; char mineInfo[ROWS][COLS] = { 0 }; InitBoard(mine, ROWS, COLS, '0'); InitBoard(mineInfo, ROWS, COLS, '*'); ShowBoard(mineInfo, ROW, COL); SetMine(mine, ROW, COL); FindMine(mine, mineInfo, ROW, COL);}

頭文件的編寫:

#ifndef _GAME_H_#define _GAME_H_#include#include#include#define MINE_NUM 10#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2void InitBoard(char board[][COLS], int rows, int cols, char set);void ShowBoard(char board[][COLS], int row, int col);void SetMine(char mine[][COLS], int row, int col);void FindMine(char mine[][COLS], char mineInfo[][COLS], int row, int col);#endif // !_GAME_H

至此一個(gè)簡(jiǎn)單的掃雷程序編寫完畢

感謝各位的閱讀,以上就是“如何利用C語言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)如何利用C語言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


標(biāo)題名稱:如何利用C語言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://weahome.cn/article/iehsc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部