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

使用C語言實現(xiàn)掃雷小游戲

 更新時間:2021年05月12日 08:33:28   作者:-A7  
這篇文章主要為大家詳細介紹了使用C語言實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

游戲規(guī)則

在一個9*9的地圖上一共有十個雷,翻開所有不是雷的位置 游戲即為勝利,
如果踩到雷,游戲結(jié)束

設(shè)計思路

1.創(chuàng)建地圖并初始化

2.打印地圖

兩張地圖,用一個函數(shù)就能實現(xiàn)

3.掃雷

玩家輸入要打開的位置。

4.判斷是否踩雷

踩雷的話就直接游戲結(jié)束

5.更新 showMap

顯示以當前位置為中心,周圍一共有幾個地雷

6.判斷游戲是否勝利

如果你打開了不是地雷的所有位置,游戲勝利

源碼實現(xiàn)

// An highlighted block
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:6031)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>


#define MAX_ROW 9
#define MAX_COL 9
#define MINE_COUNT 10

void init(char showMap[MAX_ROW][MAX_COL],char mineMap[MAX_ROW][MAX_COL]){
 // mem => memory 內(nèi)存
    // memset:把一段內(nèi)存上的每個字節(jié)都設(shè)置成一個具體的值
 memset(showMap, '*', MAX_ROW * MAX_COL);
 memset(mineMap, '0', MAX_ROW * MAX_COL);
 //隨機產(chǎn)生十個雷
 srand((unsigned int)time(0));
 int mineCount = 0;
 while (mineCount<MINE_COUNT) {
  int row = rand() % MAX_ROW;
  int col = rand() % MAX_COL;
  if (mineMap[row][col] =='1') {
   continue;
  }
  mineMap[row][col] = '1';
  mineCount++;
 }
 }
//打印地圖
void print(char theMap[MAX_ROW][MAX_COL]) {
 system("cls");
 for (int row = 0; row < MAX_ROW; row++) {
  for (int col = 0; col < MAX_COL; col++) {
   printf("%c ", theMap[row][col]);
  }
  printf("\n");
 }

}
//合法性判定
void update(char showMap[MAX_ROW][MAX_COL], char mineMap[MAX_ROW][MAX_COL], int row, int col) {
 int count = 0;
 for (int r = row - 1; r <= row + 1; r++) {
  for (int c = col - 1; c <= col + 1; c++) {
   if (r == row&& c == col) {
    continue;
   }
   //這個位置不需要判斷
   if (r<0 || r>MAX_ROW || c<0 || c>MAX_COL) {
    continue;
   }
   if (mineMap[r][c] == '1') {
    count++;
   }
  }
 }
 showMap[row][col] = '0' + count;
}
int main() {
 //1.創(chuàng)建地圖并初始化
 char showMap[MAX_ROW][MAX_COL] = { 0 };
 char mineMap[MAX_ROW][MAX_COL] = { 0 };
 init(showMap, mineMap);
 int openedCount = 0;
 while (1) {
     //2.打印地圖
  print(showMap);
     //3.玩家輸入坐標
  int row = 0;
  int col = 0;
  printf("請輸入坐標(row,col)\n");
  scanf("%d %d", &row, &col);
 //4,合法性判定
  if (row<0 || row>MAX_ROW || col<0 || col>MAX_COL) {
   printf("您輸入的位置有誤,請重新輸入\n");
   continue;
  }
  if (showMap[row][col] != '*') {
   printf("您輸入的位置重復(fù),請重新輸入\n");
   continue;

  }
 //5,判定是否踩雷
  if (mineMap[row][col] == '1') {
   printf("您踩雷了,游戲結(jié)束\n");
   break;
  }
 //6,更新showMap,顯示雷的個數(shù)
  update(showMap, mineMap, row, col);
 //7.判定游戲勝利
  openedCount++;
  if (openedCount == MAX_ROW * MAX_COL - MINE_COUNT) {
   printf("恭喜你,游戲勝利\n");
   break;
  }


 }
 return 0;
}

心得體會

用一個函數(shù)初始化兩個地圖,這個方法比較簡便,邏輯梳理很重要,有了邏輯才知道如何著手寫代碼,在進行勝負判斷是不要忘了一些步驟。

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

相關(guān)文章

  • C語言常見排序算法之交換排序(冒泡排序,快速排序)

    C語言常見排序算法之交換排序(冒泡排序,快速排序)

    這篇文章主要介紹了C語言常見排序算法之交換排序(冒泡排序,快速排序),冒泡排序即Bubble?Sort,類似于水中冒泡,較大的數(shù)沉下去,較小的數(shù)慢慢冒起來,假設(shè)從小到大,即為較大的數(shù)慢慢往后排,較小的數(shù)慢慢往前排
    2022-07-07
  • 7種排序算法的實現(xiàn)示例

    7種排序算法的實現(xiàn)示例

    這篇文章主要介紹了7種排序算法的實現(xiàn)示例,需要的朋友可以參考下
    2014-05-05
  • C/C++ 動態(tài)數(shù)組的創(chuàng)建的實例詳解

    C/C++ 動態(tài)數(shù)組的創(chuàng)建的實例詳解

    這篇文章主要介紹了C/C++ 動態(tài)數(shù)組的創(chuàng)建的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握這樣的功能,需要的朋友可以參考下
    2017-10-10
  • C++ ReSharper2021激活碼永久有效

    C++ ReSharper2021激活碼永久有效

    ReSharperC++是為c/c++開發(fā)者打造的一款實用Visual Studio擴展插件,這款插件旨在提升開發(fā)者的效率,今天給大家分享這款軟件的激活方法,需要C++ ReSharper2021激活碼的朋友參考下本文
    2021-06-06
  • C語言實現(xiàn)文件讀寫操作

    C語言實現(xiàn)文件讀寫操作

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)文件讀寫操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C語言實現(xiàn)一個通訊錄

    C語言實現(xiàn)一個通訊錄

    這篇文章主要為大家詳細介紹了用C語言實現(xiàn)一個通訊錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 如何利用C++實現(xiàn)mysql數(shù)據(jù)庫的連接池詳解

    如何利用C++實現(xiàn)mysql數(shù)據(jù)庫的連接池詳解

    為了提高MySQL數(shù)據(jù)庫的訪問的瓶頸,除了在服務(wù)器端增設(shè)緩存服務(wù)器緩存常用的數(shù)據(jù)之外(如redis),還可以增加數(shù)據(jù)庫連接池,來提高MySQL Server的訪問效率,這篇文章主要給大家介紹了關(guān)于如何利用C++實現(xiàn)mysql數(shù)據(jù)庫的連接池的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • QT5編譯使用QFtp的方法步驟

    QT5編譯使用QFtp的方法步驟

    這篇文章主要介紹了QT5編譯使用QFtp的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C/C++內(nèi)存管理基礎(chǔ)與面試

    C/C++內(nèi)存管理基礎(chǔ)與面試

    本章主要介紹C語言與C++的內(nèi)存管理,以C++的內(nèi)存分布作為引入,介紹C++不同于C語言的內(nèi)存管理方式(new?delete對比?malloc?free),感興趣的朋友來看看吧
    2022-07-07
  • Linux系統(tǒng)下如何使用C++解析json文件詳解

    Linux系統(tǒng)下如何使用C++解析json文件詳解

    JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數(shù)據(jù)交換格式。下面這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)下如何使用C++解析json文件的相關(guān)資料,需要的朋友可以參考下
    2021-06-06

最新評論

施秉县| 张家港市| 祥云县| 新余市| 黎川县| 泰顺县| 建瓯市| 杭锦后旗| 托克逊县| 韩城市| 通许县| 根河市| 翁牛特旗| 孟村| 湘乡市| 精河县| 安溪县| 宁强县| 景德镇市| 民勤县| 高州市| 胶南市| 新源县| 张北县| 南宁市| 宝清县| 驻马店市| 博湖县| 客服| 永州市| 巴东县| 涡阳县| 鄂伦春自治旗| 宁化县| 塔河县| 册亨县| 鄄城县| 北宁市| 延津县| 怀集县| 南充市|