欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

編譯器使用的為VS2013

代碼分為三個(gè)部分

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  //存放雷的個(gè)數(shù),此處為5,可任意改變
#define ROW 5 //行
#define COL 5 //列

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

//初始化棋盤,將雷設(shè)計(jì)成字符‘1' ,注意不是數(shù)字1,沒有雷設(shè)計(jì)成字符‘0',此處設(shè)計(jì)是為后續(xù)統(tǒng)計(jì)雷的個(gè)數(shù)做鋪墊
void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);
//打印棋盤
void DisplayBoard(char board[ROWS][COLS], int row, int col);
//對(duì)雷進(jìn)行布置
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)計(jì)雷時(shí),只需將該坐標(biāo)周圍的8個(gè)位置坐標(biāo)是否有雷計(jì)算一下即可,有就加字符‘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;
}
//對(duì)雷的情況進(jìn)行排查
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("請(qǐng)輸入要排查的坐標(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)合法時(shí),且該坐標(biāo)不是雷時(shí),統(tǒng)計(jì)該坐標(biāo)處雷的個(gè)數(shù)
  {
  int count = GetMineCount(mine, x, y);//設(shè)計(jì)GetMineCount函數(shù),統(tǒng)計(jì)該坐標(biāo)處雷的個(gè)數(shù)
  show[x][y] = count + '0';
  //將該坐標(biāo)周圍雷的信息打印在棋盤上
  DisplayBoard(show, row, col);
  win++;
  }
 }
 else
 {
  printf("坐標(biāo)非法,請(qǐng)重新輸入!!!\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)建棋盤對(duì)應(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("請(qǐng)輸入 1 開始游戲 輸入 0 退出游戲> \n");
 scanf("%d", &input);
 switch (input)
 {
 case 1:
  game();//掃雷游戲的實(shí)現(xiàn)
  break;
 case 0:
  printf("退出游戲\n");
  break;
 default:
  printf("選擇錯(cuò)誤,請(qǐng)重新選擇\n");

 }
 } while (input);
 return 0;
}

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

相關(guān)文章

  • 簡單分析C++指針的操作和運(yùn)算

    簡單分析C++指針的操作和運(yùn)算

    這篇文章主要介紹了簡單分析C++指針的操作和運(yùn)算的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • C語言實(shí)現(xiàn)圖形化打磚塊游戲

    C語言實(shí)現(xiàn)圖形化打磚塊游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)圖形化打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 解析C++中的虛擬函數(shù)及其靜態(tài)類型和動(dòng)態(tài)類型

    解析C++中的虛擬函數(shù)及其靜態(tài)類型和動(dòng)態(tài)類型

    虛擬函數(shù)(Visual Function)亦常被成為虛函數(shù),是C++中的一個(gè)重要特性,本文我們就來解析C++中的虛擬函數(shù)及其靜態(tài)類型和動(dòng)態(tài)類型
    2016-06-06
  • C語言實(shí)現(xiàn)三子棋小游戲的示例代碼

    C語言實(shí)現(xiàn)三子棋小游戲的示例代碼

    這篇文章主要介紹了如何通過C語言實(shí)現(xiàn)三子棋小游戲,三子棋小游戲的實(shí)現(xiàn)主要依賴于循環(huán)語句、函數(shù)和數(shù)組,感興趣的小伙伴可以嘗試一下
    2022-10-10
  • C語言計(jì)算代碼執(zhí)行所耗CPU時(shí)鐘周期

    C語言計(jì)算代碼執(zhí)行所耗CPU時(shí)鐘周期

    本文給大家介紹的是使用C語言來計(jì)算代碼執(zhí)行所耗CPU時(shí)鐘周期的代碼,非常的簡單實(shí)用,不過要依托于sync,有需要的小伙伴自己參考下吧。
    2015-03-03
  • 利用C++實(shí)現(xiàn)雙鏈表基本接口示例代碼

    利用C++實(shí)現(xiàn)雙鏈表基本接口示例代碼

    雙鏈表:在單鏈表的每個(gè)結(jié)點(diǎn)中,再設(shè)置一個(gè)指向其前驅(qū)結(jié)點(diǎn)的指針域,下面這篇文章主要給大家介紹了關(guān)于利用C++實(shí)現(xiàn)雙鏈表基本接口的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • C++簡單輸出鉆石菱形圖效果

    C++簡單輸出鉆石菱形圖效果

    這篇文章主要介紹了C++簡單輸出鉆石菱形圖效果,涉及C++簡單的數(shù)組操作與圖形打印技巧,需要的朋友可以參考下
    2016-05-05
  • C++??STL?_?Vector使用及模擬實(shí)現(xiàn)

    C++??STL?_?Vector使用及模擬實(shí)現(xiàn)

    這篇文章主要介紹了C++ STL_Vector使用及模擬實(shí)現(xiàn),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • c++冒泡排序詳解

    c++冒泡排序詳解

    冒泡排序(Bubble Sort),是一種計(jì)算機(jī)科學(xué)領(lǐng)域的較簡單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。
    2017-05-05
  • C++實(shí)現(xiàn)圖片轉(zhuǎn)base64的示例代碼

    C++實(shí)現(xiàn)圖片轉(zhuǎn)base64的示例代碼

    Base64就是一種 基于64個(gè)可打印字符來表示二進(jìn)制數(shù)據(jù)的表示方法,本文主要為大家詳細(xì)介紹了如何使用C++實(shí)現(xiàn)圖片轉(zhuǎn)base64,需要的可以參考下
    2024-04-04

最新評(píng)論