国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

深圳專業(yè)網(wǎng)站制作費(fèi)用怎么建一個自己的網(wǎng)站

深圳專業(yè)網(wǎng)站制作費(fèi)用,怎么建一個自己的網(wǎng)站,哪個網(wǎng)站可以做分期,一些有趣的網(wǎng)站目錄 一、前言: 二、游戲規(guī)則: 三、游戲前準(zhǔn)備 四、游戲?qū)崿F(xiàn) 1、打印菜單 2、初始化棋盤 3、打印棋盤 4、布置雷 5、排雷 五、完整代碼 一、前言: 用C語言完成掃雷游戲?qū)τ诔鯇W(xué)者來說,難度并不是很大,而且通…

目錄

一、前言:

二、游戲規(guī)則:

三、游戲前準(zhǔn)備

四、游戲?qū)崿F(xiàn)

1、打印菜單

2、初始化棋盤

3、打印棋盤

4、布置雷

5、排雷

五、完整代碼


一、前言:

用C語言完成掃雷游戲?qū)τ诔鯇W(xué)者來說,難度并不是很大,而且通過編程這個小游戲,會讓你對函數(shù)調(diào)用,分支循環(huán),連續(xù)輸入等有很好的掌握,該過程并不涉及指針及以后的內(nèi)容。

二、游戲規(guī)則:

掃雷游戲規(guī)則十分簡單,比如9*9網(wǎng)格中,就是在81個網(wǎng)格中找到其中的10顆雷,并不被雷炸死。

三、游戲前準(zhǔn)備

我們?yōu)榱俗尨a更加簡潔,將代碼分成三個文件中編寫,如圖所示,在test.c文件中放主函數(shù),

在game.h中放所需的頭文件,在gam.c中放調(diào)用的函數(shù)。

四、游戲?qū)崿F(xiàn)

為了方便下面的講解,我先把主函數(shù)和頭文件放出來

#include<stdio.h>
#include<time.h>
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define mine_count 10
void Initboard(char board[ROWS][COLS], int rows,int cols,char set);
void Printboard(char board[ROWS][COLS], int row, int col);
void Setmine(char board[ROWS][COLS],int row,int col);
void Finemine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);

?game.h文件中放入頭文件,并定義全文所需的宏變量,這樣方便改動,比如本篇講述的是9*9網(wǎng)格的,你只需將定義的9改成其他數(shù)據(jù),就可以得到一個10*10或其他的網(wǎng)格


#include"game.h"
void game()
{char mine[ROWS][COLS];char show[ROWS][COLS];//第一步,初始化棋盤Initboard(mine, ROWS, COLS,'0');Initboard(show, ROWS, COLS,'*');//第二步,打印棋盤Printboard(show, ROW, COL);//第三步,布置雷Setmine(mine, ROW, COL);//Printboard(mine, ROW, COL);//第四步,排雷Finemine(mine, show, ROW, COL);
}
void menu()
{printf("****************\n");printf("**** 1 play ****\n");printf("**** 0 exit ****\n");printf("****************\n");
}
int main()
{int count = 0;srand((unsigned int)time(NULL));do{menu();printf("請輸入你的選擇:");scanf("%d", &count);switch (count){case 1:game();break;case 0:printf("你已選擇退出游戲\n");break;default:printf("這是一個不規(guī)范的選擇,請重新選擇\n");break;}} while (count);return 0;
}

通過主函數(shù),你應(yīng)該能看出來我們實(shí)現(xiàn)這個游戲的邏輯是先打印出菜單,告訴你不同的選擇,然后通過你的選擇來判斷是否進(jìn)入游戲,所以游戲大體分成以下幾步:

1、打印菜單

2、初始化棋盤

3、隨機(jī)布置十顆雷

5、打印棋盤

4、排雷

下面我們逐步實(shí)現(xiàn)這幾點(diǎn):

1、打印菜單

void menu()
{printf("****************\n");printf("**** 1 play ****\n");printf("**** 0 exit ****\n");printf("****************\n");
}

運(yùn)行后可以打印出菜單

2、初始化棋盤

在game()函數(shù)中,我們定義了兩個字符數(shù)組

char mine[ROWS][COLS];
char show[ROWS][COLS];
//第一步,初始化棋盤
Initboard(mine, ROWS, COLS,'0');
Initboard(show, ROWS, COLS,'*');

其中第一個數(shù)組是雷盤,布置雷在上面,第二個數(shù)組是展示的,告訴玩家游戲進(jìn)行情況,我們用0表示無雷,可以先把雷盤全部初始化為‘0’,展示盤全部初始化為‘*’

具體函數(shù)如下:

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

3、打印棋盤

在主函數(shù)中,我們就提到了初始化后打印棋盤,其實(shí)打印棋盤和布置雷兩步可以互換先后順序,但是這里打印棋盤還可以用來檢測上面初始化是否成功

//第二步,打印棋盤Printboard(show, ROW, COL);

代碼如下:

void Printboard(char board[ROWS][COLS], int row, int col)
{int i = 0;int j = 0;for (i = 0; i <=row; i++)printf("%d ", i);printf("\n");for (i = 1; i <= col; i++){printf("%d ", i);for (j = 1; j <= row; j++){printf("%c ", board[i][j]);}printf("\n");}
}

運(yùn)行后結(jié)果如下:

4、布置雷

//第三步,布置雷Setmine(mine, ROW, COL);//Printboard(mine, ROW, COL);//這步可以用來檢測雷是否布置成功,如果怕出錯可以用上

初始化棋盤之后,就要在雷盤中隨即找十個位置放雷,也就是說要放進(jìn)去十顆雷

void Setmine(char board[ROWS][COLS], int row, int show)
{int num = mine_count;while (num){int i = rand() % 9 + 1;int j = rand() % 9 + 1;if (board[i][j] == '0'){board[i][j] = '1';num--;}}
}

用‘1’表示雷,就是將mine數(shù)組中隨即找十個位置,將‘0’換成‘1’,表示在這里埋雷

5、排雷

排雷過程中只有兩種結(jié)果,一種是正好是雷,那么就會炸死,另一種則是不是雷,如果不是雷,我們應(yīng)該把它周圍有幾個雷判斷出來,不然幾乎不可能通關(guān)

代碼如下:

int lei_count(char mine[ROWS][COLS], int a, int b)
{int count = mine[a - 1][b - 1] + mine[a - 1][b] + mine[a - 1][b + 1] + mine[a][b - 1] + mine[a][b + 1]+ mine[a + 1][b - 1] + mine[a + 1][b] + mine[a + 1][b + 1] - 8 * '0';return count;
}
void Finemine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{int a, b;int wulei = row * col - mine_count;while (wulei){printf("請輸入你要檢查的坐標(biāo):");scanf("%d %d", &a, &b);if (a > 0 && a <= row && b > 0 && b <= col){if (mine[a][b] == '1'){printf("抱歉,這是雷,你被炸死了\n");break;}else{//既然不是雷,那就統(tǒng)計(jì)雷的數(shù)量int count = lei_count(mine, a, b);show[a][b] = count + '0';Printboard(show, ROW, COL);wulei--;}}elseprintf("此坐標(biāo)不存在,請重新輸入\n");}
}

五、完整代碼

game.h

#include<stdio.h>
#include<time.h>
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define mine_count 10
void Initboard(char board[ROWS][COLS], int rows,int cols,char set);
void Printboard(char board[ROWS][COLS], int row, int col);
void Setmine(char board[ROWS][COLS],int row,int col);
void Finemine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);

test.c

#include"game.h"
void game()
{char mine[ROWS][COLS];char show[ROWS][COLS];//第一步,初始化棋盤Initboard(mine, ROWS, COLS,'0');Initboard(show, ROWS, COLS,'*');//第二步,打印棋盤Printboard(show, ROW, COL);//第三步,布置雷Setmine(mine, ROW, COL);//Printboard(mine, ROW, COL);//第四步,排雷Finemine(mine, show, ROW, COL);
}
void menu()
{printf("****************\n");printf("**** 1 play ****\n");printf("**** 0 exit ****\n");printf("****************\n");
}
int main()
{int count = 0;srand((unsigned int)time(NULL));do{menu();printf("請輸入你的選擇:");scanf("%d", &count);switch (count){case 1:game();break;case 0:printf("你已選擇退出游戲\n");break;default:printf("這是一個不規(guī)范的選擇,請重新選擇\n");break;}} while (count);return 0;
}

game.c

#include"game.h"
void Initboard(char board[ROWS][COLS], int rows, int cols,char set)
{for (int i = 0; i < rows; i++){for (int j = 0; j < cols; j++){board[i][j] = set;}}
}
void Printboard(char board[ROWS][COLS], int row, int col)
{int i = 0;int j = 0;for (i = 0; i <=row; i++)printf("%d ", i);printf("\n");for (i = 1; i <= col; i++){printf("%d ", i);for (j = 1; j <= row; j++){printf("%c ", board[i][j]);}printf("\n");}
}
void Setmine(char board[ROWS][COLS], int row, int show)
{int num = mine_count;while (num){int i = rand() % 9 + 1;int j = rand() % 9 + 1;if (board[i][j] == '0'){board[i][j] = '1';num--;}}
}
int lei_count(char mine[ROWS][COLS], int a, int b)
{int count = mine[a - 1][b - 1] + mine[a - 1][b] + mine[a - 1][b + 1] + mine[a][b - 1] + mine[a][b + 1]+ mine[a + 1][b - 1] + mine[a + 1][b] + mine[a + 1][b + 1] - 8 * '0';return count;
}
void Finemine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{int a, b;int wulei = row * col - mine_count;while (wulei){printf("請輸入你要檢查的坐標(biāo):");scanf("%d %d", &a, &b);if (a > 0 && a <= row && b > 0 && b <= col){if (mine[a][b] == '1'){printf("抱歉,這是雷,你被炸死了\n");break;}else{//既然不是雷,那就統(tǒng)計(jì)雷的數(shù)量int count = lei_count(mine, a, b);show[a][b] = count + '0';Printboard(show, ROW, COL);wulei--;}}elseprintf("此坐標(biāo)不存在,請重新輸入\n");}
}

用C語言解決掃雷游戲還是非常有意思的,上面這種還是最簡單的,還有許多有趣的東西值得探索,比如如何搞一個20*20的棋盤,或如何用遞歸的方法實(shí)現(xiàn)快速展開,如果想了解更多,點(diǎn)擊關(guān)注,去學(xué)習(xí)更多C語言的知識。

http://aloenet.com.cn/news/34475.html

相關(guān)文章:

  • 政務(wù)公開政府網(wǎng)站建設(shè)管理百度刷搜索詞
  • wordpress 首頁調(diào)用頁面標(biāo)題城關(guān)網(wǎng)站seo
  • 廣州 網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣網(wǎng)頁設(shè)計(jì)免費(fèi)推廣廣告鏈接
  • 學(xué)校網(wǎng)站推廣seo關(guān)鍵詞排名優(yōu)化怎樣
  • 國外炫酷網(wǎng)站外貿(mào)平臺app
  • 網(wǎng)業(yè)端云服務(wù)武漢seo網(wǎng)站排名優(yōu)化
  • 減肥網(wǎng)站源碼seo需求
  • 國內(nèi)最好的crm軟件南昌seo技術(shù)外包
  • 個人備案網(wǎng)站做企業(yè)網(wǎng)可以嗎北京搜索引擎優(yōu)化主管
  • 網(wǎng)站專題建設(shè)合同2024新聞熱點(diǎn)事件
  • wordpress布置網(wǎng)站教程友情鏈接只有鏈接
  • seo搜索引擎優(yōu)化技術(shù)教程關(guān)鍵詞排名優(yōu)化提升培訓(xùn)
  • 網(wǎng)站信息資料庫建設(shè)品牌seo是什么
  • 什么專業(yè)的會做網(wǎng)站網(wǎng)站統(tǒng)計(jì)
  • 建設(shè)銀行網(wǎng)站電腦上不去網(wǎng)絡(luò)營銷策劃書2000字
  • 煩惱可以做網(wǎng)站嗎搜索熱度查詢
  • 家教網(wǎng)站建設(shè)的推廣免費(fèi)網(wǎng)站流量
  • 倒計(jì)時網(wǎng)站模板搜索引擎關(guān)鍵詞seo優(yōu)化公司
  • 上海網(wǎng)站建設(shè)設(shè)計(jì)制作寧波seo排名方案優(yōu)化公司
  • 國內(nèi)出名的設(shè)計(jì)網(wǎng)站有哪些免費(fèi)網(wǎng)站制作軟件平臺
  • 好姑娘中文在線觀看國語高清免費(fèi)深圳白帽優(yōu)化
  • 廈門網(wǎng)站建設(shè)哪家好百度一級代理商
  • 房地產(chǎn)網(wǎng)站大全東莞日增感染人數(shù)超25萬
  • 青島專業(yè)網(wǎng)站制作團(tuán)隊(duì)肇慶百度快照優(yōu)化
  • 做宣傳圖冊在什么網(wǎng)站外國黃岡網(wǎng)站推廣平臺
  • 做潤滑油網(wǎng)站圖片直播回放老卡怎么回事
  • 做網(wǎng)站的屬于什么崗位網(wǎng)上推廣賺錢方法
  • wordpress 推薦環(huán)境關(guān)鍵詞seo排名優(yōu)化
  • 自適應(yīng)網(wǎng)站 seo怎么做濟(jì)南網(wǎng)站建設(shè)老威
  • 杭州網(wǎng)站建設(shè)咨詢藍(lán)韻網(wǎng)絡(luò)長尾關(guān)鍵詞挖掘站長工具