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

C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷小游戲

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

我們經(jīng)常在電腦上面玩的掃雷游戲,很考驗(yàn)我們的判斷能力,但是實(shí)現(xiàn)一個(gè)掃雷游戲并不是很困難,只要多注意一些細(xì)節(jié)就好,就可以將一個(gè)簡(jiǎn)單的掃雷游戲?qū)懗鰜?lái)!

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

首先,要對(duì)雷陣進(jìn)行初始化,在初始化的時(shí)候要注意要定義兩個(gè)數(shù)組,一個(gè)是讓我們掃雷的陣,另外一個(gè)就是顯示某一個(gè)地方的周圍的雷的總個(gè)數(shù)的矩陣,在初始化的時(shí)候要注意為了避免傳址的問(wèn)題,我們把它寫在主函數(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] = '*';
 }
 }

接下來(lái)就是電腦在隨機(jī)布局雷陣的函數(shù),這個(gè)函數(shù)要用到rand()&nbsp;函數(shù),來(lái)產(chǎn)生隨機(jī)值,在雷陣?yán)锩骐S機(jī)布雷。

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--;
 }
 }
}

再有就是計(jì)算雷的個(gè)數(shù)的函數(shù),要講某一個(gè)坐標(biāo)位置的周圍8個(gè)位置的雷的個(gè)數(shù)算出來(lái),并且將個(gè)數(shù)顯示出來(lái)

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ù)的各個(gè)函數(shù)都實(shí)現(xiàn)了之后,我們來(lái)看一下完整的代碼

頭文件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);//計(jì)算雷的個(gè)數(shù)

實(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");
 }
}
 
//計(jì)算雷的個(gè)數(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("請(qǐng)輸入坐標(biāo):\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);//可以將雷的位置顯示出來(lái)
 Sweep(mine,show);
 return 0;
}

最后就是測(cè)試函數(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("請(qǐng)選擇:");
 scanf("%d", &input);
 if (input == 1)
 {
  printf("進(jìn)入游戲\n");
  Game(mine,show);
  break;
 }
 else if (input == 0)
 {
  printf("退出游戲!\n");
  exit(0);
  break;
 }
 else
 {
  printf("輸入有誤!\n");
 }
 }
 return 0;
}

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

相關(guān)文章

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

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

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

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

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

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

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

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易的三子棋游戲

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

    C++模板編程特性之移動(dòng)語(yǔ)義

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

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

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

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

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

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

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

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

    棧和隊(duì)列,嚴(yán)格意義上來(lái)說(shuō),也屬于線性表,因?yàn)樗鼈円捕加糜诖鎯?chǔ)邏輯關(guān)系為 "一對(duì)一" 的數(shù)據(jù),但由于它們比較特殊,因此將其單獨(dú)作為一章,做重點(diǎn)講解
    2021-11-11
  • c++ std::sort使用自定義的比較函數(shù)排序方式

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

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

最新評(píng)論

定安县| 安吉县| 阳江市| 池州市| 汉沽区| 鹤山市| 绍兴县| 昭通市| 修水县| 台中县| 广德县| 大渡口区| 明溪县| 忻城县| 麻江县| 龙井市| 梅州市| 新泰市| SHOW| 梅河口市| 涡阳县| 黄平县| 涟源市| 太康县| 吴川市| 洪泽县| 民和| 北流市| 建昌县| 镇安县| 宁阳县| 大埔区| 景德镇市| 印江| 老河口市| 大洼县| 西畴县| 新昌县| 伊川县| 延边| 衡阳市|