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

基于C語言實現掃雷小游戲

 更新時間:2021年07月28日 17:07:43   作者:fchwpo?  
這篇文章主要為大家詳細介紹了基于C語言實現掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

game.h

設置頭文件

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define ROW 9
#define COL 9
#define EASY_COUNT 10


#define ROWS ROW+2
#define COLS COL+2

//初始化
void InitBoard(char board[ROWS][COLS], int rows, int cols,char set);
//打印棋盤
void DisplayBoard(char board[ROWS][COLS], int row, int col);
//布置雷
void SetMine(char board[ROWS][COLS], int row, int col);
//掃雷
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);

game.c

實現掃雷游戲功能模塊

#include"game.h"

void InitBoard(char board[ROWS][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;
  }
 }
}

void DisplayBoard(char board[ROWS][COLS], int row, int col) {
 int i = 0;
 int j = 0;
 printf("-------------------------\n");
 //列號的打印
 for (i = 0; i <= col; i++) {
  printf("%d ", i);
 }
 printf("\n");
 
 for ( i = 1; i <= row; i++)
 {
  //行號的打印
  printf("%d ", i);
  for (j = 1; j <= col; j++) {
   printf("%c ", board[i][j]);
  }
  printf("\n");
 }
 printf("-------------------------\n");
}

void SetMine(char board[ROWS][COLS], int row, int col) {
 //隨機找坐標布置雷
 //布置多少雷
 int count = EASY_COUNT;
 while (count)
 {
  //布置成功一個雷 count--
  //生成隨機坐標
  int x = rand()%row+1;//1-9的數字
  int y = rand()%col+1;//1-9的數字
  //布置雷 
  //沒布置過才布置
  if (board[x][y] == '0') {
   board[x][y] = '1';
   count--;
  }
 }
}

int GetMineCount(char mine[ROWS][COLS], int x, int y) {
 //周圍字符相加 即是雷的個數
 return 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] + 
 mine[x - 1][y + 1]-8*'0';
}

void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) {
 int x = 0;
 int y = 0;
 int win = 0;
 //游戲結束條件
 //1、被炸死
 //2、排除了所有不是雷的位置
 while (win<ROW*COL-EASY_COUNT) {
  printf("請輸入要排查的坐標:");
  scanf("%d%d", &x, &y);
  //判斷坐標是否合法
  if (x >= 1 && x <= row && y >= 1 && y <= col) {
   //判斷坐標處是否有雷
   if (mine[x][y] == '1') {
    printf("你被炸死了\n");
    DisplayBoard(mine, row, col);
    break;
   }
   else {
    //不是雷 則統(tǒng)計周圍有幾個雷
    int count = GetMineCount(mine,x,y);
    show[x][y] = count + '0';
    DisplayBoard(show, row, col);
    win++;
   }
  }
  else
  {
   printf("坐標非法,請重新輸入\n");
  }
 }
 if (win == ROW * COL - EASY_COUNT) {
  printf("排雷成功!\n");
 }
}

test.c

主函數

#include"game.h"

void game() {
 //創(chuàng)建兩個數組 一個存放雷的消息 一個存放排查后的信息
 //存放布置好的雷
 char mine[ROWS][COLS] = { 0 };//9*9的棋盤 創(chuàng)建成11*11 避免越界訪問
 //存放排查出來的雷的信息
 char show[ROWS][COLS] = { 0 };
 InitBoard(mine, ROWS, COLS,'0');//初始化棋盤
 InitBoard(show, ROWS, COLS,'*');//初始化棋盤
 DisplayBoard(show,ROW,COL);
 //1、布置雷
 SetMine(mine,ROW,COL);
 DisplayBoard(mine, ROW, COL);
 //2、掃雷
 FindMine(mine,show, ROW, COL);
}

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

int main() {
 
 int input = 0;
 srand((unsigned int)time(NULL));//設置隨機數的生成起點
 do
 {
  menu();
  printf("請選擇:");
  scanf("%d", &input);
  switch (input)
  {
  case 1:
   game();//掃雷游戲
   break;
  case 0:
   printf("退出游戲");
   break;
  default:
   printf("選擇錯誤,重新選擇");
   break;
  }
 } while (input);

 return 0;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C/C++中的mem函數和strcopy函數的區(qū)別和應用

    C/C++中的mem函數和strcopy函數的區(qū)別和應用

    strcpy和memcpy都是標準C庫函數,strcpy提供了字符串的復制而memcpy提供了一般內存的復制。下面通過本文重點給大家介紹C/C++中的mem函數和strcopy函數的區(qū)別和應用,非常不錯,感興趣的朋友一起看下吧
    2016-08-08
  • C語言菜鳥基礎教程之判斷

    C語言菜鳥基礎教程之判斷

    C語言判斷結構要求程序員指定一個或多個要評估或測試的條件,以及條件為真時要執(zhí)行的語句(必需的)和條件為假時要執(zhí)行的語句(可選的)
    2017-10-10
  • 用c++實現x的y次冪的代碼

    用c++實現x的y次冪的代碼

    以下實例是對使用c++實現x的y次冪的解決方法進行了介紹。需要的朋友參考下
    2013-05-05
  • 基于Qt實現C/C++調用Matlab函數全過程

    基于Qt實現C/C++調用Matlab函數全過程

    這篇文章給大家詳細介紹了基于Qt平臺實現C/C++調用Matlab函數全流程,文中通過圖文和代碼示例給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • Visual Studio Code 2020安裝教程及CPP環(huán)境配置(教程圖解)

    Visual Studio Code 2020安裝教程及CPP環(huán)境配置(教程圖解)

    這篇文章主要介紹了Visual Studio Code 2020安裝教程、CPP環(huán)境配置,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C++ Qt實現瀏覽器網頁內嵌的音視頻播放器

    C++ Qt實現瀏覽器網頁內嵌的音視頻播放器

    這篇文章主要為大家詳細介紹了如何利用C++ Qt實現瀏覽器網頁內嵌的音視頻播放器,并支持軟硬解碼,支持音頻,支持錄像截圖,支持多路播放等,感興趣的可以了解下
    2024-01-01
  • C語言container of()函數案例詳解

    C語言container of()函數案例詳解

    這篇文章主要介紹了C語言container of()函數案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • C++實現對RGB圖片進行編碼的示例代碼

    C++實現對RGB圖片進行編碼的示例代碼

    這篇文章主要為大家詳細介紹了如何利用得到的RGB信息重新對RGB圖片進行編碼,以及對其他圖片如BMP所得到的RGB信息進行編碼從而得到*.jpg文件,感興趣的可以了解一下
    2023-05-05
  • C語言實現校園導游系統(tǒng)

    C語言實現校園導游系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現校園導游系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • VScode編譯C++ 頭文件顯示not found的問題

    VScode編譯C++ 頭文件顯示not found的問題

    這篇文章主要介紹了VScode編譯C++ 頭文件顯示not found的問題,本文給大家分享問題解決方法,通過截圖的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2020-03-03

最新評論

马公市| 平和县| 隆尧县| 长宁县| 永丰县| 喀什市| 章丘市| 拉萨市| 尼勒克县| 双城市| 黔东| 高陵县| 铁岭市| 平南县| 开封县| 婺源县| 泉州市| 中卫市| 宁德市| 阳曲县| 宜宾县| 松桃| 扶绥县| 阿拉善左旗| 石嘴山市| 通河县| 连南| 波密县| 英德市| 翁源县| 南投市| 司法| 黔南| 延长县| 绥宁县| 扶余县| 巨鹿县| 新泰市| 郸城县| 武夷山市| 达尔|