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

C語言實現(xiàn)簡易掃雷小游戲

 更新時間:2019年10月21日 16:25:42   作者:筱肖  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

我們經(jīng)常在電腦上面玩的掃雷游戲,很考驗我們的判斷能力,但是實現(xiàn)一個掃雷游戲并不是很困難,只要多注意一些細節(jié)就好,就可以將一個簡單的掃雷游戲?qū)懗鰜恚?/p>

接下來先介紹掃雷游戲要實現(xiàn)的功能:

首先,要對雷陣進行初始化,在初始化的時候要注意要定義兩個數(shù)組,一個是讓我們掃雷的陣,另外一個就是顯示某一個地方的周圍的雷的總個數(shù)的矩陣,在初始化的時候要注意為了避免傳址的問題,我們把它寫在主函數(shù)里面。

char mine[rows][cols];
char show[rows][cols];
 int i = 0;
 int j = 0;
 for (i = 0; i < rows - 1; i++)
 {
 for (j = 0; j < cols - 1; j++)
 {
  mine[i][j] = '0';
  show[i][j] = '*';
 }
 }

接下來就是電腦在隨機布局雷陣的函數(shù),這個函數(shù)要用到rand()&nbsp;函數(shù),來產(chǎn)生隨機值,在雷陣里面隨機布雷。

void set_mine(char mine[rows][cols])
{
 int count = Count;
 int x = 0;
 int y = 0;
 srand((unsigned)time(NULL));
 while (count)
 {
 x = rand() % 9 + 1;
 y = rand() % 9 + 1;
 if (mine[x][y] == '0')
 {
  mine[x][y] = '1';
  count--;
 }
 }
}

再有就是計算雷的個數(shù)的函數(shù),要講某一個坐標位置的周圍8個位置的雷的個數(shù)算出來,并且將個數(shù)顯示出來

int get_num(char mine[rows][cols], int x, int y)
{
 int count = 0;
 if (mine[x - 1][y - 1] == '1')//左上方
 {
 count++;
 }
 if (mine[x - 1][y] == '1')//左邊
 {
 count++;
 }
 if (mine[x - 1][y + 1] == '1')//左下方
 {
 count++;
 }
 if (mine[x][y - 1] == '1')//上方
 {
 count++;
 }
 if (mine[x][y + 1] == '1')//下方
 {
 count++;
 }
 if (mine[x + 1][y - 1] == '1')//右上方
 {
 count++;
 }
 if (mine[x + 1][y] == '1')//右方
 {
 count++;
 }
 if (mine[x + 1][y + 1] == '1')//右下方
 {
 count++;
 }
 return count;
}

將掃雷函數(shù)的各個函數(shù)都實現(xiàn)了之后,我們來看一下完整的代碼

頭文件game.h 

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define rows 11
#define cols 11
#define Count 10
 
int menu();//菜單函數(shù)
void display(char show[rows][cols]);
int Game(char mine[rows][cols],char show[rows][cols]);//游戲
void set_mine(char mine[rows][cols]);//設(shè)置雷的位置
int Sweep(char mine[rows][cols], char show[rows][cols]);//開始掃雷
int get_num(char mine[rows][cols], int x, int y);//計算雷的個數(shù)

實現(xiàn)函數(shù) game.c

#include"game.h"
 
//菜單函數(shù)
int menu()
{
 printf("********************************************\n");
 printf("********************************************\n");
 printf("*************welcome to saolei*************\n");
 printf("*************  1.   play  *************\n");
 printf("*************  0.   exit  *************\n");
 printf("********************************************\n");
 printf("********************************************\n");
 return 0;
}
 
 
//設(shè)置雷的位置
void set_mine(char mine[rows][cols])
{
 int count = Count;
 int x = 0;
 int y = 0;
 srand((unsigned)time(NULL));
 while (count)
 {
 x = rand() % 9 + 1;
 y = rand() % 9 + 1;
 if (mine[x][y] == '0')
 {
  mine[x][y] = '1';
  count--;
 }
 }
}
 
//打印下棋完了顯示的界面
void display(char show[rows][cols]) 
{
 int i = 0;
 int j = 0;
 printf(" ");
 for (i = 1; i < cols - 1; i++)
 {
 printf(" %d ", i);
 }
 printf("\n");
 for (i = 1; i < rows - 1; i++)
 {
 printf("%d", i);
 for (j = 1; j < cols - 1; j++)
 {
  printf(" %c ", show[i][j]);
 }
 printf("\n");
 }
}
 
//計算雷的個數(shù)
int get_num(char mine[rows][cols], int x, int y)
{
 int count = 0;
 if (mine[x - 1][y - 1] == '1')//左上方
 {
 count++;
 }
 if (mine[x - 1][y] == '1')//左邊
 {
 count++;
 }
 if (mine[x - 1][y + 1] == '1')//左下方
 {
 count++;
 }
 if (mine[x][y - 1] == '1')//上方
 {
 count++;
 }
 if (mine[x][y + 1] == '1')//下方
 {
 count++;
 }
 if (mine[x + 1][y - 1] == '1')//右上方
 {
 count++;
 }
 if (mine[x + 1][y] == '1')//右方
 {
 count++;
 }
 if (mine[x + 1][y + 1] == '1')//右下方
 {
 count++;
 }
 return count;
}
//掃雷
int Sweep(char mine[rows][cols], char show[rows][cols])
{
 int count = 0;
 int x = 0;
 int y = 0;
 while (count!=((rows-2)*(cols-2)-Count))
 {
 printf("請輸入坐標:\n");
 scanf("%d%d", &x, &y);
 if (mine[x][y] == '1')
 {
  printf("你踩到雷了!\n");
  return 0;
 }
 else
 {
  int ret = get_num(mine, x, y);
  show[x][y] = ret + '0';
  //set_mine(mine);
  display(show);
  count++;
 }
 }
 printf("恭喜你贏了!\n");
 display(mine);
 return 0;
}
 
 
//游戲
int Game(char mine[rows][cols],char show[rows][cols])
{
 set_mine(mine);
 display(show);
 //display(mine);//可以將雷的位置顯示出來
 Sweep(mine,show);
 return 0;
}

最后就是測試函數(shù) text.c

#include"game.h"
 
int main()
{
 int input = 0;
 char mine[rows][cols];
 char show[rows][cols];
 int i = 0;
 int j = 0;
 for (i = 0; i < rows - 1; i++)
 {
 for (j = 0; j < cols - 1; j++)
 {
  mine[i][j] = '0';
  show[i][j] = '*';
 }
 }
 menu();
 while (1)
 {
 printf("請選擇:");
 scanf("%d", &input);
 if (input == 1)
 {
  printf("進入游戲\n");
  Game(mine,show);
  break;
 }
 else if (input == 0)
 {
  printf("退出游戲!\n");
  exit(0);
  break;
 }
 else
 {
  printf("輸入有誤!\n");
 }
 }
 return 0;
}

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

相關(guān)文章

  • C語言刷題判斷鏈表中是否有環(huán)題解

    C語言刷題判斷鏈表中是否有環(huán)題解

    這篇文章主要為大家介紹了C語言刷題判斷鏈表中是否有環(huán)題解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • OpenCV圖像旋轉(zhuǎn)Rotate的詳細介紹

    OpenCV圖像旋轉(zhuǎn)Rotate的詳細介紹

    這篇文章主要介紹了OpenCV圖像旋轉(zhuǎn)Rotate,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 用VC++6.0的控制臺實現(xiàn)2048小游戲的程序

    用VC++6.0的控制臺實現(xiàn)2048小游戲的程序

    本文是作者拜讀劉地同學的《C語言控制臺版2048》之后感覺非常不錯,添加了注釋之后分享給大家的,方便更多的初學者閱讀學習,有需要的小伙伴參考下。
    2015-03-03
  • C語言實現(xiàn)簡易的三子棋游戲

    C語言實現(xiàn)簡易的三子棋游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易的三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++模板編程特性之移動語義

    C++模板編程特性之移動語義

    首先,移動語義和完美轉(zhuǎn)發(fā)這兩個概念是在C++的模板編程的基礎(chǔ)上,新增的特性,主要是配合模板來使用。本篇會從C++的值類型,到移動拷貝與移動賦值來理解移動語義與完美轉(zhuǎn)發(fā)
    2022-08-08
  • C++ 格式化日志輸出實現(xiàn)代碼

    C++ 格式化日志輸出實現(xiàn)代碼

    這篇文章主要介紹了C++ 格式化日志輸出實現(xiàn)代碼,需要的朋友可以參考下
    2019-04-04
  • 詳解C/C++ Linux出錯處理函數(shù)(strerror與perror)的使用

    詳解C/C++ Linux出錯處理函數(shù)(strerror與perror)的使用

    我們知道,系統(tǒng)函數(shù)調(diào)用不能保證每次都成功,必須進行出錯處理,這樣一方面可以保證程序邏輯正常,另一方面可以迅速得到故障信息。本文主要為大家介紹兩個出錯處理函數(shù)(strerror、perror)的使用,需要的可以參考一下
    2023-01-01
  • OpenCV reshape函數(shù)實現(xiàn)矩陣元素序列化

    OpenCV reshape函數(shù)實現(xiàn)矩陣元素序列化

    reshape函數(shù)是OpenCV中一個很有用的函數(shù),不僅可以改變矩陣的通道數(shù),還可以對矩陣元素進行序列化。本文將主要介紹如何通過reshape實現(xiàn)矩陣元素序列化,需要的小伙伴可以參考一下
    2021-12-12
  • C語言數(shù)據(jù)結(jié)構(gòu)進階之棧和隊列的實現(xiàn)

    C語言數(shù)據(jù)結(jié)構(gòu)進階之棧和隊列的實現(xiàn)

    棧和隊列,嚴格意義上來說,也屬于線性表,因為它們也都用于存儲邏輯關(guān)系為 "一對一" 的數(shù)據(jù),但由于它們比較特殊,因此將其單獨作為一章,做重點講解
    2021-11-11
  • c++ std::sort使用自定義的比較函數(shù)排序方式

    c++ std::sort使用自定義的比較函數(shù)排序方式

    文章介紹了使用std::sort對容器內(nèi)元素進行排序的基本方法,包括自定義排序函數(shù)和在類中調(diào)用自定義成員函數(shù)進行排序的方法,文章還指出了在傳遞成員函數(shù)指針時可能會遇到的錯誤,并提供了使用Lambda表達式的解決辦法
    2025-02-02

最新評論

维西| 西充县| 永丰县| 望谟县| 九江县| 新密市| 衢州市| 彰化县| 岐山县| 孟津县| 千阳县| 陈巴尔虎旗| 绥德县| 宁远县| 北京市| 梨树县| 山东省| 广西| 钟祥市| 晴隆县| 灵武市| 平阴县| 陆川县| 芷江| 武汉市| 称多县| 罗源县| 滨海县| 巢湖市| 青阳县| 扎赉特旗| 星子县| 石首市| 莱芜市| 易门县| 新宁县| 富宁县| 平舆县| 和龙市| 蚌埠市| 阿巴嘎旗|