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

C語言實現(xiàn)簡單的掃雷游戲操作

 更新時間:2021年03月01日 11:27:01   作者:戀淺笑  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)簡單的掃雷游戲操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

掃雷小游戲的代碼實現(xiàn),供大家參考,具體內(nèi)容如下

編譯器使用的為VS2013

代碼分為三個部分

1、頭文件 game.h
2、源文件 game.c 用來存放游戲中所有的函數(shù)
3、源文件 test.c 用來存放游戲的主題部分

代碼如下:

game.h部分

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

#define EASY_COUNT 5  //存放雷的個數(shù),此處為5,可任意改變
#define ROW 5 //行
#define COL 5 //列

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

//初始化棋盤,將雷設(shè)計成字符‘1' ,注意不是數(shù)字1,沒有雷設(shè)計成字符‘0',此處設(shè)計是為后續(xù)統(tǒng)計雷的個數(shù)做鋪墊
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 mine[ROWS][COLS], int row, int col, int count);
//排雷
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;
 for (i = 1; i <= rows - 2; i++)
 {
 int j = 0;
 for (j = 1; j <= cols - 2; j++)
 {
  board[i][j] = set;
 }
 }
}

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

void SetMine(char mine[ROW][COL], int row, int col, int count)
{
 while (count)
 {
 int x = rand() % row + 1;
 int y = rand() % col + 1;
 if (mine[x][y] == '0')
 {

 //x,y坐標(biāo)出沒有雷
  mine[x][y] = '1';
  count--;
 }
 }
}

int GetMineCount(char mine[ROWS][COLS], int x, int y)//統(tǒng)計雷時,只需將該坐標(biāo)周圍的8個位置坐標(biāo)是否有雷計算一下即可,有就加字符‘1',沒有加字符‘0'等同于不加
{
 int i = 0;
 int count = 0;
 for (i = x - 1; i <= x + 1; i++)
 {
 int j = 0;
 for (j = y - 1; j <= y + 1; j++)
 {
  if (mine[i][j] == '1')
  {
  count++;
  }
 }
 }
 return count;
}
//對雷的情況進行排查
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
 int win = 0;
 while (win < row * col - EASY_COUNT)
 {
 int x;
 int y;
 printf("請輸入要排查的坐標(biāo):");
 scanf("%d%d", &x, &y);
 // 1.先判斷坐標(biāo)是否非法,即可能出現(xiàn)的越界行為
 // 2.坐標(biāo)合法,判斷該處坐標(biāo)是不是雷,如果是,則游戲結(jié)束
 if (x >= 1 && x <= row &&y >= 1 && y <= col)
 {
  if (mine[x][y] == '1')
  {
  printf("很遺憾,你被炸死了?。?!\n");
  DisplayBoard(mine, row, col);
  break;
  }
  else //坐標(biāo)合法時,且該坐標(biāo)不是雷時,統(tǒng)計該坐標(biāo)處雷的個數(shù)
  {
  int count = GetMineCount(mine, x, y);//設(shè)計GetMineCount函數(shù),統(tǒng)計該坐標(biāo)處雷的個數(shù)
  show[x][y] = count + '0';
  //將該坐標(biāo)周圍雷的信息打印在棋盤上
  DisplayBoard(show, row, col);
  win++;
  }
 }
 else
 {
  printf("坐標(biāo)非法,請重新輸入!!!\n");
 }
 }
 if (row*col - EASY_COUNT == win)
 {
 printf("恭喜你,你贏了,掃雷成功!!!\n");
 printf("雷的布局為:\n");
 DisplayBoard(show, row, col);
 }
}

test.c部分

#include "game.h"
void menu()
{
 printf("***************************\n");
 printf("*******  1.PLAY  ********\n");
 printf("*******  2.EXIT  ********\n");
 printf("***************************\n");
}
void game()
{
 //創(chuàng)建棋盤對應(yīng)的數(shù)組
 char mine[ROWS][COLS];
 char show[ROWS][COLS];

 InitBoard(mine, ROWS, COLS, '0');//存放布置雷的信息
 InitBoard(show, ROWS, COLS, '*');//存放排查出雷的信息

 //DisplayBoard(mine, ROW, COL);
 DisplayBoard(show, ROW, COL);
 //布置雷
 SetMine(mine, ROW, COL, EASY_COUNT);

 //DisplayBoard(mine, ROW, COL);
 FindMine(mine, show, ROW, COL);

}

int main()
{
 int input;
 srand((unsigned int)time(NULL));
 do
 {

 menu();
 printf("請輸入 1 開始游戲 輸入 0 退出游戲> \n");
 scanf("%d", &input);
 switch (input)
 {
 case 1:
  game();//掃雷游戲的實現(xiàn)
  break;
 case 0:
  printf("退出游戲\n");
  break;
 default:
  printf("選擇錯誤,請重新選擇\n");

 }
 } while (input);
 return 0;
}

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

相關(guān)文章

  • C語言 共用體(Union)詳解及示例代碼

    C語言 共用體(Union)詳解及示例代碼

    本文主要介紹C語言 共用體,這里整理了相關(guān)資料及示例代碼,幫助大家學(xué)習(xí)理解此部分的知識,有興趣的小伙伴可以參考下
    2016-08-08
  • Qt數(shù)據(jù)庫應(yīng)用之通用數(shù)據(jù)庫同步

    Qt數(shù)據(jù)庫應(yīng)用之通用數(shù)據(jù)庫同步

    數(shù)據(jù)庫同步的主要功能是將本地的數(shù)據(jù)庫記錄同步到遠(yuǎn)程的數(shù)據(jù)庫。本文將利用Qt實現(xiàn)通用數(shù)據(jù)庫同步功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-03-03
  • C語言數(shù)據(jù)的存儲超詳細(xì)講解下篇浮點型在內(nèi)存中的存取

    C語言數(shù)據(jù)的存儲超詳細(xì)講解下篇浮點型在內(nèi)存中的存取

    使用編程語言進行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個變量時,就會在內(nèi)存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲什么
    2022-04-04
  • C++拷貝構(gòu)造函數(shù)和賦值運算符重載詳解

    C++拷貝構(gòu)造函數(shù)和賦值運算符重載詳解

    拷貝構(gòu)造函數(shù)是特殊的構(gòu)造函數(shù),是用一個已經(jīng)存在的對象,賦值拷貝給另一個新創(chuàng)建的已經(jīng)存在的對象,這篇文章主要介紹了C++拷貝構(gòu)造函數(shù)和賦值運算符重載,需要的朋友可以參考下
    2024-05-05
  • C++實現(xiàn)String類實例代碼

    C++實現(xiàn)String類實例代碼

    這篇文章主要介紹了C++實現(xiàn)String類實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 淺析C++構(gòu)造函數(shù)虛擬化

    淺析C++構(gòu)造函數(shù)虛擬化

    這篇文章主要介紹了C++構(gòu)造函數(shù)虛擬化的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)c++構(gòu)造函數(shù),感興趣的朋友可以了解下
    2020-08-08
  • C/C++ 常用排序算法整理匯總分享

    C/C++ 常用排序算法整理匯總分享

    排序算法,就是如何使得記錄按照要求排列的方法。排序算法在很多領(lǐng)域得到相當(dāng)?shù)刂匾暎绕涫窃诖罅繑?shù)據(jù)的處理方面。一個優(yōu)秀的算法可以節(jié)省大量的資源。本篇整理了c語言和c++的常用的排序算法,感興趣的朋友可以參考下
    2021-06-06
  • C++實現(xiàn)推箱子游戲

    C++實現(xiàn)推箱子游戲

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)推箱子游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C++控制臺強化如何實現(xiàn)一定界面效果(簡潔版)

    C++控制臺強化如何實現(xiàn)一定界面效果(簡潔版)

    這篇文章主要介紹了C++控制臺強化如何實現(xiàn)一定界面效果(簡潔版),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++單鏈表實現(xiàn)大數(shù)加法

    C++單鏈表實現(xiàn)大數(shù)加法

    這篇文章主要為大家詳細(xì)介紹了C++單鏈表實現(xiàn)大數(shù)加法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評論

平阴县| 阳信县| 萍乡市| 蒙自县| 嘉峪关市| 涿鹿县| 延庆县| 周至县| 公安县| 新龙县| 柘荣县| 鹿泉市| 安平县| 宾川县| 汶上县| 博兴县| 和顺县| 延安市| 临桂县| 正蓝旗| 织金县| 平和县| 沽源县| 应城市| 庆云县| 文水县| 米易县| 瓦房店市| 平昌县| 交城县| 信宜市| 苏州市| 彭州市| 正宁县| 桂平市| 池州市| 唐海县| 梨树县| 通许县| 盐山县| 湘潭县|