最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言開發(fā)實(shí)現(xiàn)掃雷游戲

 更新時(shí)間:2020年11月12日 08:45:32   作者:F....  
這篇文章主要為大家詳細(xì)介紹了C語言開發(fā)實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言實(shí)現(xiàn)掃雷游戲的具體代碼,供大家參考,具體內(nèi)容如下

簡單描述:

輸入要要掃的位置.
如果是雷,則游戲失敗.
如果將所有不是雷的位置都掃了一遍,則游戲勝利.

主要細(xì)節(jié)

1、初始化(玩家掃雷圖,地雷布局圖)

展示出來的地圖(玩家能看到的地圖)showMap

for (int row = 0; row < ROW; row++){

 for (int col = 0; col < COL; col++){
 showMap[row][col] = '*';
 }
}

地雷的布局地圖(玩家看不到的地圖)mineMap

for (int row = 0; row < ROW; row++){

 for (int col = 0; col < COL; col++){
 mineMap[row][col] = '*';
 }
 }
 int count = 0;
 while (count<MINECOUNT){
 int row = rand() % 9;
 int col = rand() % 9;
 mineMap[row][col] = 'L';
 count++;
 }
}

3、打印地圖

void print(char Map[ROW][COL]){
 printf(" |0|1|2|3|4|5|6|7|8|\n");
 for (int row = 0; row < ROW; row++){
 printf("%d |", row);
 for (int col = 0; col < COL; col++){
 printf("%c ", Map[row][col]);
 }
 printf("\n");
 }
}

5、玩家輸入要掃的位置信息(9*9格子中某一特定位置)

void Input(char showMap[ROW][COL], char mineMap[ROW][COL], int* row, int* col){
 while (1){
 printf("請輸入您要點(diǎn)的位置坐標(biāo):");
 scanf("%d %d", row, col);
 if (((*row) < 0) || ((*row) >= ROW)
 || ((*col) < 0) || ((*col) >= COL)){
 printf("輸入有誤 ");
 continue;
 }
 if (showMap[*row][*col] == '*'){
 showMap[*row][*col] = ' ';
 break;
 }
 }
}

7、判斷某一位置是不是地雷

//返回1表示雷;返回0表示不是雷
int isMine(char mineMap[ROW][COL], int row, int col){
 if (mineMap[row][col] == 'L'){
 return 1;
 }
 return 0;
}

9、某一位置附近地雷的個(gè)數(shù)

int MineNerborhood(char mineMap[ROW][COL], int row, int col){
 if (row < 0 || row >= ROW
 || col < 0 || col >= COL){
 return '0';
 }
 int count = 0;
 for (int r = row - 1; r <= row + 1; r++){
 for (int c = col - 1; c <= col + 1; c++){
 if (mineMap[r][c] == 'L'){
 count++;
 }
 }
 }
 return count + '0';
}

源代碼:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define ROW 9
#define COL 9
#define MINECOUNT 10

void Input(char showMap[ROW][COL], char mineMap[ROW][COL], int* row, int* col){
 while (1){
 printf("請輸入您要點(diǎn)的位置坐標(biāo):");
 scanf("%d %d", row, col);
 if (((*row) < 0) || ((*row) >= ROW)
 || ((*col) < 0) || ((*col) >= COL)){
 printf("輸入有誤 ");
 continue;
 }
 if (showMap[*row][*col] == '*'){
 showMap[*row][*col] = ' ';
 break;
 }
 }
}

//返回1表示雷;返回0表示不是雷
int isMine(char mineMap[ROW][COL], int row, int col){
 if (mineMap[row][col] == 'L'){
 return 1;
 }
 return 0;
}
//
void init(char showMap[ROW][COL], char mineMap[ROW][COL]){

 for (int row = 0; row < ROW; row++){

 for (int col = 0; col < COL; col++){
 showMap[row][col] = '*';
 }
 }
 for (int row = 0; row < ROW; row++){

 for (int col = 0; col < COL; col++){
 mineMap[row][col] = '*';
 }
 }
 int count = 0;
 while (count<MINECOUNT){
 int row = rand() % 9;
 int col = rand() % 9;
 mineMap[row][col] = 'L';
 count++;
 }
}
void print(char Map[ROW][COL]){
 printf(" |0|1|2|3|4|5|6|7|8|\n");
 for (int row = 0; row < ROW; row++){
 printf("%d |", row);
 for (int col = 0; col < COL; col++){
 printf("%c ", Map[row][col]);
 }
 printf("\n");
 }
}
//(row,col)附近格子地雷的個(gè)數(shù)
int MineNerborhood(char mineMap[ROW][COL], int row, int col){
 if (row < 0 || row >= ROW
 || col < 0 || col >= COL){
 return '0';
 }
 int count = 0;
 for (int r = row - 1; r <= row + 1; r++){
 for (int c = col - 1; c <= col + 1; c++){
 if (mineMap[r][c] == 'L'){
 count++;
 }
 }
 }
 return count + '0';
}
//一局游戲
void game(){
 srand(time(0));
 //展示給玩家的地圖
 char showMap[ROW][COL];
 //雷的布局圖
 char mineMap[ROW][COL];
 //對兩個(gè)地圖進(jìn)行初始化
 init(showMap, mineMap);
 //print(mineMap);
 //玩家已經(jīng)掃到的不是雷的格子的數(shù)目
 int notMineCount = 0;
 printf("掃雷游戲開始啦!\n");
 while (1){
 //打印地圖
 print(showMap);
 //輸入地點(diǎn)
 int row, col;
 Input(showMap, mineMap, &row, &col);
 //判斷是否是雷區(qū)
 if (isMine(mineMap, row, col) == 1){
 printf(" 大兄弟,踩雷咧!\n給您看看雷的布局\n");
 print(mineMap);
 break;
 }
 //判斷附近雷的情況
 showMap[row][col]=MineNerborhood(mineMap, row, col);

 notMineCount++;
 //判斷是否贏了
 if (notMineCount == ROW*COL - MINECOUNT){
 print(mineMap);
 printf("恭喜您贏啦!\n");
 break;
 }
 }
 
}
int menu(){
 printf("===================\n");
 printf("1.開始游戲\n");
 printf("0.結(jié)束游戲\n");
 printf("===================\n");
 printf("請輸入您的選擇:");
 int choice;
 scanf("%d", &choice);
 return choice;
}
int main(){
 while (1){
 int choice = menu();
 if (choice == 1){
 game();
 }else if (choice==0){
 break;
 }else{
 printf("輸入有誤,請重新輸入\n");
 }
 }
 system("pause");
 return 0;
}

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



更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:

C++經(jīng)典小游戲匯總

python經(jīng)典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經(jīng)典游戲 玩不停

java經(jīng)典小游戲匯總

javascript經(jīng)典小游戲匯總

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++中stringstream的用法和實(shí)例

    C++中stringstream的用法和實(shí)例

    下面小編就為大家?guī)硪黄狢++中stringstream的用法和實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • 基于C語言實(shí)現(xiàn)的迷宮游戲代碼

    基于C語言實(shí)現(xiàn)的迷宮游戲代碼

    這篇文章主要介紹了基于C語言實(shí)現(xiàn)的迷宮游戲代碼,對于學(xué)習(xí)游戲開發(fā)的朋友相信有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • C語言鍵盤控制走迷宮小游戲

    C語言鍵盤控制走迷宮小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言鍵盤控制走迷宮小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++實(shí)現(xiàn)LeetCode(208.實(shí)現(xiàn)字典樹(前綴樹))

    C++實(shí)現(xiàn)LeetCode(208.實(shí)現(xiàn)字典樹(前綴樹))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(208.實(shí)現(xiàn)字典樹(前綴樹)),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語言解字符串逆序和單向鏈表逆序問題的代碼示例

    C語言解字符串逆序和單向鏈表逆序問題的代碼示例

    這篇文章主要介紹了C語言解字符串逆序和單向鏈表逆序問題的代碼示例,求逆序也是考研和面試中的基礎(chǔ)算法題類型,需要的朋友可以參考下
    2016-06-06
  • C++實(shí)現(xiàn)線程同步的四種方式總結(jié)

    C++實(shí)現(xiàn)線程同步的四種方式總結(jié)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)線程同步的四種方式,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C++有一定的幫助,需要的可以參考一下
    2022-11-11
  • 用C語言實(shí)現(xiàn)簡單的計(jì)算器功能

    用C語言實(shí)現(xiàn)簡單的計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了用C語言實(shí)現(xiàn)簡單的計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Matlab實(shí)現(xiàn)繪制有氣泡感的網(wǎng)絡(luò)圖

    Matlab實(shí)現(xiàn)繪制有氣泡感的網(wǎng)絡(luò)圖

    這篇文章主要介紹了如何利用Matlab實(shí)現(xiàn)繪制有氣泡感的網(wǎng)絡(luò)圖,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Matlab有一定的幫助,需要的可以參考一下
    2023-02-02
  • 通俗易懂的C++前綴和與差分算法圖文示例詳解

    通俗易懂的C++前綴和與差分算法圖文示例詳解

    這篇文章主要為大家非常通俗易懂的講解了C++前綴和與差分算法的圖文分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • C++中的移動構(gòu)造函數(shù)及move語句示例詳解

    C++中的移動構(gòu)造函數(shù)及move語句示例詳解

    這篇文章主要給大家介紹了關(guān)于C++中移動構(gòu)造函數(shù)及move語句的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10

最新評論

双牌县| 金乡县| 兰州市| 宾川县| 宣化县| 安义县| 吉安市| 射洪县| 鄯善县| 颍上县| 南部县| 东乡县| 陕西省| 通河县| 临海市| 乐业县| 闽清县| 威海市| 信阳市| 永顺县| 汉源县| 琼结县| 若尔盖县| 威宁| 响水县| 南安市| 齐齐哈尔市| 泰来县| 苗栗市| 临高县| 开化县| 吉木乃县| 木兰县| 搜索| 通江县| 鲁山县| 保山市| 青州市| 威远县| 府谷县| 综艺|