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

C++掃雷游戲的簡單制作

 更新時(shí)間:2020年03月17日 13:17:30   作者:我有顆小粒的痣  
這篇文章主要為大家詳細(xì)介紹了C++掃雷游戲的簡單制作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++實(shí)現(xiàn)掃雷游戲的具體代碼,供大家參考,具體內(nèi)容如下

#ifndef SAOLEI_H
#define SAOLEI_H

class Block
{
 friend class Saoleigame;
public:
 Block();
 bool isShown();
 void setnum(int);
 int getnum();
 bool isbomb();
protected:
 int num;
 bool flag_show;
 int x;
 int y;
};

class Saoleigame
{

public:
 Saoleigame();
 ~Saoleigame();
 void _init_();
 void gameStart();
 void reflash();
 void check(int x, int y);
 void click(int x, int y);
 void gameOver();
private:
 Block juzheng[100];
 bool flag;
 int b[10];
 unsigned int score;
};

#endif

以上是編寫的頭文件

#include<iostream>
#include<cstdlib>
#include<ctime>
#include"Saolei.h"
using namespace std;



Saoleigame::Saoleigame()
{
 _init_();
 flag = true;
 score = 0;
}
Saoleigame::~Saoleigame()
{

}
void Saoleigame::_init_()
{
 srand(time(NULL));
 for( int i = 0; i < 10; i++ )
 {
  b[i] = -1;
 }
 for(int i = 0; i < 10; i ++ )
 {
  bool temp_flag = false;
  do
  {
   int temp = (unsigned int)rand()%100;

   for( int j = 0; j < i; j ++)
   {
    if(temp == b[i])
    {
     temp_flag = true;
    }
   }
   if(!temp_flag)
   {
    b[i] = temp;
   }
  }while(temp_flag);
 }
 for(int i = 0; i < 10; i++ )
 {
  juzheng[b[i]].setnum(-1);
 }
 for( int i = 0; i < 10; i ++ )
 {
  for( int j = 0; j < 10;j++)
  {
   juzheng[i*10+j].x = i+1;
   juzheng[i*10+j].y = j+1;
  }
 }



 for(int m = 0; m < 10; m ++ )
 {
  for( int n = 0; n < 10 ; n++ )
  {
   check(m + 1, n + 1);
  }
 }

}
void Saoleigame::check(int x, int y)
{
 if(juzheng[(x - 1)*10 + (y - 1)].num == -1)return;
 int trans = (x - 1)*10 + (y - 1);
 int number = 0;
 for( int i = -1; i < 2; i ++ )
 {
  for(int j = -1; j < 2; j ++)
  {
   if(!(x + i<= 0 && x + i >= 10 || j + y <= 0 && y + j >= 10))
   {
    if(juzheng[(x + i - 1)*10 + (y + j - 1)].num == -1) number ++;
   }
  }
 }
 juzheng[(x - 1)*10 + (y - 1)].setnum(number);
}

void Saoleigame::click(int x, int y)
{

 if(juzheng[(x- 1)*10 + (y - 1)].num == 0)
 {
  for( int i = -1; i < 2; i ++ )
  {
   for(int j = -1; j < 2; j ++)
   {
    if(!((x + i<= 0 || x + i > 10 )|| (j + y <= 0 || y + j > 10)) && !(i == 0&& j ==0) && !juzheng[(x+i- 1)*10 + (y +j- 1)].flag_show){
     juzheng[(x+i- 1)*10 + (y +j- 1)].flag_show = true;
     click(x + i, y + j);
    }
   }
  }
 }
 juzheng[(x- 1)*10 + (y - 1)].flag_show = true;
 return;
}

void Saoleigame::gameStart()
{

 do
 {
  reflash();
  int x, y;
  cout<<"input the position: ";
  cin >> x>> y;
  if(juzheng[(x-1)*10 + (y-1)].isbomb())
  {
   gameOver();
   return;
  }
  else
  {
   click(x , y);

  }
 }while(flag);
}
void Saoleigame::reflash()
{
 system("cls");
 score = 0;
 cout<<"   掃雷"<<endl;
 cout<<" 1 2 3 4 5 6 7 8 9 10"<<endl;
 cout<<" -------------------"<<endl;
 for(int i = 0; i < 100; i ++ )
 {
  if(i%10 == 0)
  {
   if(i /10 + 1 == 10)cout<<10<<"|";
   else cout<<i /10 + 1<<" |";
  }

  if(juzheng[i].isShown())
  {
   if(juzheng[i].isShown() && (juzheng[i].getnum())!=-1)
   {
    score ++;
   }
   if((juzheng[i].getnum())==-1)cout <<"*"<<"|";
   else cout <<juzheng[i].getnum()<<"|";

  }
  else
  {
   cout<<" |";
  }
  if((i+1)%10 == 0)cout<<endl;
 }
 cout<<" -------------------"<<endl;
 cout<<"score:"<<(score*100)/95<<endl;
}
void Saoleigame::gameOver()
{
 for(int i = 0 ; i < 10 ; i++ )
 {
  juzheng[b[i]].flag_show = true;
 }
 reflash();
 cout<<"Game Over"<<endl<<endl;

 flag = false;
}


Block::Block()
{
 flag_show = false;
 num = 0;
}
bool Block::isShown()
{
 return flag_show;
}
void Block::setnum(int _num)
{
 num = _num;
}

int Block::getnum()
{
 return num;
}
bool Block::isbomb()
{
 return num == -1;
}

更多精彩游戲小代碼,請(qǐng)點(diǎn)擊《游戲?qū)n}》閱讀

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

相關(guān)文章

  • 一步步從底層入手搞定C++引用與內(nèi)聯(lián)函數(shù)

    一步步從底層入手搞定C++引用與內(nèi)聯(lián)函數(shù)

    內(nèi)聯(lián)函數(shù)是代碼插入到調(diào)用者代碼處的函數(shù),內(nèi)聯(lián)函數(shù)通過避免被調(diào)用的開銷來提高執(zhí)行效率,下面這篇文章主要給大家介紹了關(guān)于如何從底層入手搞定C++引用與內(nèi)聯(lián)函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • C語言編寫掃雷小程序

    C語言編寫掃雷小程序

    這篇文章主要為大家詳細(xì)介紹了C語言編寫掃雷小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 淺談C++11中=delete的巧妙用法

    淺談C++11中=delete的巧妙用法

    本文主要介紹了C++11中=delete的巧妙用法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言中操作進(jìn)程信號(hào)的相關(guān)函數(shù)使用詳解

    C語言中操作進(jìn)程信號(hào)的相關(guān)函數(shù)使用詳解

    這篇文章主要介紹了C語言中操作進(jìn)程信號(hào)的相關(guān)函數(shù)使用詳解,分別是signal()函數(shù)和kill()函數(shù)的用法,需要的朋友可以參考下
    2015-09-09
  • C語言實(shí)現(xiàn)自動(dòng)售貨機(jī)

    C語言實(shí)現(xiàn)自動(dòng)售貨機(jī)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)自動(dòng)售貨機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++11中的原子量和內(nèi)存序詳解

    C++11中的原子量和內(nèi)存序詳解

    這篇文章主要給大家介紹了關(guān)于C++11中原子量和內(nèi)存序的相關(guān)資料,文中通過示例代碼介紹地方非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • DLL加載設(shè)置相對(duì)路徑的方法

    DLL加載設(shè)置相對(duì)路徑的方法

    這篇文章給大家介紹了DLL加載設(shè)置相對(duì)路徑的方法,非常不錯(cuò),具有一定的參考借鑒加載,需要的朋友參考下吧
    2018-08-08
  • C語言多媒體框架GStreamer使用教程深講

    C語言多媒體框架GStreamer使用教程深講

    GStreamer 是用來構(gòu)建流媒體應(yīng)用的開源多媒體框架(framework),其目標(biāo)是要簡化音/視頻應(yīng)用程序的開發(fā),已經(jīng)能夠被用來處理像 MP3、Ogg、MPEG1、MPEG2、AVI、Quicktime 等多種格式的多媒體數(shù)據(jù)
    2022-07-07
  • C++設(shè)計(jì)一個(gè)簡單內(nèi)存池的全過程

    C++設(shè)計(jì)一個(gè)簡單內(nèi)存池的全過程

    利用C/C++開發(fā)大型應(yīng)用程序中,內(nèi)存的管理與分配是一個(gè)需要認(rèn)真考慮的部分,下面這篇文章主要給大家介紹了關(guān)于C++設(shè)計(jì)一個(gè)簡單內(nèi)存池的全過程,需要的朋友可以參考下
    2021-09-09
  • C語言中的搜索算法詳細(xì)解讀

    C語言中的搜索算法詳細(xì)解讀

    這篇文章主要介紹了C語言中的搜索算法詳細(xì)解讀,如果用樹構(gòu)建一個(gè)搜索樹,層層搜索關(guān)鍵字(的一個(gè)字母),搜索到后就是需要的描述,就會(huì)節(jié)約很多時(shí)間,需要的朋友可以參考下
    2023-10-10

最新評(píng)論