欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:c語(yǔ)言簡(jiǎn)易掃雷游戲的實(shí)現(xiàn)

柚子快報(bào)激活碼778899分享:c語(yǔ)言簡(jiǎn)易掃雷游戲的實(shí)現(xiàn)

http://yzkb.51969.com/

c語(yǔ)言簡(jiǎn)易掃雷游戲的實(shí)現(xiàn)

一、前言?

首先我們要知道,在一個(gè)工程中,所有的代碼是不會(huì)放在一個(gè).c文件中的藍(lán)。這樣不利于程序員之間的協(xié)同合作。我們一般會(huì)創(chuàng)建.h和.c文件來(lái)放置我們的代碼,把函數(shù)的聲明放在頭文件(.h)中,把函數(shù)的定義放在源文件(.c)中,在使用的時(shí)候包含頭文件。

例如:我們要實(shí)現(xiàn)一個(gè)計(jì)算器的代碼(假設(shè)只有加、減、乘、除),我們一般會(huì)把計(jì)算器的各個(gè)功能模塊分配給不同的程序員來(lái)進(jìn)行編寫,各個(gè)模塊的程序員完成任務(wù)之后,我們有了#include"add.h"、#include"add.c"、#include"sub.h"、#include"sub.c"、#include"mul.h"、#include"mul.c"、#include"div.h"、#include"div.h"。最后由其他程序員進(jìn)行組合,這樣可以提高效率,節(jié)省時(shí)間?。

如下圖:

二、簡(jiǎn)易掃雷代碼的實(shí)現(xiàn)?

2.1 掃雷游戲的基本思路?

1.使用控制臺(tái)進(jìn)行掃雷游戲; 2.生成游戲菜單,實(shí)現(xiàn)選擇進(jìn)行和退出游戲; 3.生成9*9的方格; 4.在方格中隨機(jī)10個(gè)雷; 5.可以排查雷:

選擇位置不是雷,則打印周圍雷的信息選擇位置如果是雷,則游戲結(jié)束把非雷位置找出,挑戰(zhàn)成功,游戲結(jié)束

2.2代碼實(shí)現(xiàn)?

1.打印菜單?

這里我們使用do-while進(jìn)行打印菜單,利用switch進(jìn)行選擇是否游玩game,并把它們放到對(duì)應(yīng)的位置,如圖: 把menu函數(shù)的定義放在game.h中。 此時(shí)的運(yùn)行結(jié)果:

2.初始化掃雷的棋盤?

在9*9的方格中,我們需要的儲(chǔ)存信息,假設(shè)我們把雷視為1,把非雷的位置視為0。在進(jìn)行游戲時(shí),當(dāng)點(diǎn)擊一次位置(假設(shè)為非雷),棋盤需要顯示周圍雷的信息,如圖: 此時(shí)的1(周圍雷數(shù))會(huì)與我們一開始定義的1(雷)產(chǎn)生歧義,所以這里采用建立兩個(gè)棋盤來(lái)分別存儲(chǔ)數(shù)據(jù)來(lái)避免這個(gè)問(wèn)題。一個(gè)棋盤用來(lái)布置雷,另一個(gè)棋盤用來(lái)顯示雷的信息。

依據(jù)以上的思路,我們需要顯示周圍雷的信息,對(duì)于邊緣的雷,會(huì)存在越界的情況,我們無(wú)法用代碼實(shí)現(xiàn)周圍雷的信息。 因此,我們將棋盤擴(kuò)大來(lái)存儲(chǔ)信息,改為11*11。

我們利用二維數(shù)組來(lái)生成棋盤,將1和0設(shè)為字符形式來(lái)進(jìn)行存儲(chǔ),另一棋盤用”*"來(lái)進(jìn)行顯示,巧妙地將數(shù)組統(tǒng)一為字符形式。

3.對(duì)棋盤進(jìn)行打印藍(lán)

此時(shí)一定要注意打印9*9的棋盤就行!

運(yùn)行結(jié)果演示:

4.布置雷?

我們需要在9*9的棋盤上隨機(jī)布置10個(gè)雷,注意是9*9!,因?yàn)槭沁M(jìn)行隨機(jī)布置,我們使用rand進(jìn)行實(shí)現(xiàn),rand產(chǎn)生的是偽隨機(jī)數(shù),加以時(shí)間進(jìn)行隨機(jī)化,不要忘記寫頭文件!

運(yùn)行結(jié)果演示:

5.排查雷?

我們要排查的雷的信息儲(chǔ)存在mine數(shù)組中,在選擇坐標(biāo)后需要顯示信息,所以此時(shí)需要把mine數(shù)組和show數(shù)組的信息放在一個(gè)新的函數(shù)中,當(dāng)然所選擇的坐標(biāo)需要在9*9的棋盤中不能越界,對(duì)應(yīng)的坐標(biāo)(假設(shè)為下x、y)也需要傳到函數(shù)中。 我們首先寫第一次選擇就被炸死的情況,第一次存活的情況我們?cè)俳柚硪缓瘮?shù)實(shí)現(xiàn),先寫一個(gè)基本思路,最后我們進(jìn)行細(xì)化。現(xiàn)在我們還不太了解while中的條件,之后我們?cè)龠M(jìn)行修改。 現(xiàn)在我們建立一個(gè)新函數(shù)Getminecount來(lái)數(shù)我們選擇的坐標(biāo)附近雷的個(gè)數(shù)。我們只需要將8個(gè)坐標(biāo)的數(shù)值相加再減去‘0’(字符)就行,因?yàn)槲覀円婚_始在mine數(shù)組中就是選擇以字符形式存儲(chǔ)。

int Getminecount(char mine[ROWS][COLS], int x, int y)

{

return 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] +

mine[x - 1][y + 1]+mine[x-1][y] - 8 * '0';

}

進(jìn)一步優(yōu)化,顯示所選位置周圍的雷數(shù)。

void Findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)

{

int x = 0;

int y = 0;

while (1)

{

printf("請(qǐng)輸入排查的坐標(biāo):");

scanf("%d %d", &x, &y);

if (x >= 1 && x <= row && y >= 1 && y <= col)

{

if (mine[x][y] == '1')

{

printf("被炸死了\n");

Showboard(mine, ROW, COL);

break;

}

else

{

int c = Getminecount(mine, x, y);

show[x][y] = c + '0';

Showboard(show, ROW, COL);

}

}

else

{

printf("輸入的坐標(biāo)有誤,請(qǐng)重新輸入!\n");

}

}

}

現(xiàn)在我們需要加上while中的條件,游戲一旦找到71個(gè)位置沒有雷,則游戲結(jié)束,成功。我們不妨用win來(lái)作為一個(gè)計(jì)數(shù)的效果,如果掃完雷,win就等于71,成功掃雷。但是此時(shí)我們會(huì)發(fā)現(xiàn),10這個(gè)常量經(jīng)常被重復(fù)使用,上面的count也被定義為了10,為了使用方便,我們?cè)趃ame.h中添加#define EASY_COUNT 10。 分析到這里,有兩種情況跳出循環(huán),一個(gè)是break跳出,;另一個(gè)是挑戰(zhàn)成功。我們可以使用if語(yǔ)句實(shí)現(xiàn)。并展示雷的位置。

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- EASY_COUNT )

{

printf("請(qǐng)輸入排查的坐標(biāo):");

scanf("%d %d", &x, &y);

if (x >= 1 && x <= row && y >= 1 && y <= col)

{

if (mine[x][y] == '1')

{

printf("被炸死了\n");

Showboard(mine, ROW, COL);

break;

}

else

{

win++;

printf("還剩下%d個(gè)位置沒有排查\n", ROW * COL - EASY_COUNT - win);

int c = Getminecount(mine, x, y);

show[x][y] = c + '0';

Showboard(show, ROW, COL);

}

}

else

{

printf("輸入的坐標(biāo)有誤,請(qǐng)重新輸入!\n");

}

}

if (win == ROW * COL - EASY_COUNT)

{

printf("恭喜你,掃雷成功!\n");

Showboard(mine, ROW, COL);

}

}

現(xiàn)在我們可以說(shuō)這個(gè)簡(jiǎn)易版本的掃雷游戲已經(jīng)結(jié)束了!(超大聲)? 但是呢,掃雷的游戲其實(shí)并沒有結(jié)束,掃雷游戲的其他功能我還沒有學(xué)會(huì)?,更多內(nèi)容我會(huì)進(jìn)行學(xué)習(xí)更新,一定會(huì)補(bǔ)上的!?

柚子快報(bào)激活碼778899分享:c語(yǔ)言簡(jiǎn)易掃雷游戲的實(shí)現(xiàn)

http://yzkb.51969.com/

推薦閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19534313.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄