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

C++語言實現(xiàn)開心消消樂

 更新時間:2020年12月16日 11:55:16   作者:mahaitao617  
這篇文章主要為大家詳細介紹了C++語言實現(xiàn)開心消消樂,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)開心消消樂的具體代碼,供大家參考,具體內(nèi)容如下

用C++實現(xiàn)的開心消消樂主要分成一個一個模塊去實現(xiàn)的,較少代碼的耦合性,在這里用了一個xiaoxiaogame類去實現(xiàn),其中構(gòu)造函數(shù)中對數(shù)組和變量的初始化 xiaoxiaogame(int row1, int col1); 用void display();這樣一個函數(shù)實現(xiàn)顯示,用bool isvalid(int x, int y);來判斷一個坐標所在的位置能不能消除, 用bool isgameover();判斷游戲有沒有結(jié)束,用void remove(int x, int y, int target);來消除方塊,然后用void adjustment()去調(diào)試消除方塊后的位置 用void playgame();來執(zhí)行游戲。

代碼如下:

#include<iostream>
#include<string>
#include<vector>
#include<ctime>
using namespace std;

class xiaoxiaogame
{
public:
 //構(gòu)造函數(shù)中對數(shù)組和變量的初始化
 xiaoxiaogame(int row1, int col1);
 //顯示
 void display();
 //判斷一個坐標所在的位置能不能消
 bool isvalid(int x, int y);
 //判斷游戲有沒有結(jié)束
 bool isgameover();
 //用深度遍歷去執(zhí)行消除功能
 void remove(int x, int y, int target);
 //消除方塊后剩余方塊的擺放位置的調(diào)整
 void adjustment();
 //執(zhí)行游戲
 void playgame();
private:
 //存放游戲開心消消樂的二維數(shù)組
 vector<vector<int>>nums;
 //記錄存在的狀態(tài)
 vector<vector<bool>>state;
 //記錄分數(shù)
 int score;
 //連在一起的相同數(shù)字的個數(shù)
 int cnt;
 //開心消消樂的行
 int row;
 //開心消消樂的列
 int col;
};
xiaoxiaogame::xiaoxiaogame(int row1, int col1)
{
 row = row1;
 col = col1;
 score = 0;
 cnt = 0;
 srand(time(0));
 vector<vector<int>>tmp(row1,vector<int>(col1,0));
 vector<vector<bool>>temp(row1, vector<bool>(col1, false));
 state = temp;
 for (int i = 0; i < row; i++)
 {
 for (int j = 0; j < col; j++)
 {
  tmp[i][j] = rand() % 3;
 }
 }
 nums = tmp;
 display();
}
void xiaoxiaogame::display()
{
 for (int i = 0; i < row; i++)
 {
 for (int j = 0; j < col; j++)
 {
  if (!state[i][j])
  cout << nums[i][j] << " ";
  else cout << " ";
 }
 cout << endl;
 }
 cout << "your score is :" << score << endl;
}
bool xiaoxiaogame::isvalid(int x, int y)
{
 if (x < 0 || x >= row || y < 0 || y >= col || state[x][y])return false;
 return true;
}
bool xiaoxiaogame::isgameover()
{
 for (int i = 0; i < row; i++)
 {
 for (int j = 0; j < col; j++)
 {
  int target = nums[i][j];
  int x = i;
  int y = j;
  if (!isvalid(i, j))return false;
  if ((isvalid(x + 1, y) && nums[x + 1][y] == target) || (isvalid(x - 1, y) && nums[x - 1][y] == target) || \
  (isvalid(x, y + 1) && nums[x][y + 1] == target) || (isvalid(x, y - 1) && nums[x][y - 1] == target))
  return false;
 }
 }
 return true;
}
void xiaoxiaogame::remove(int x, int y, int target)
{
 if (!isvalid(x, y))return;
 if (nums[x][y] != target)return;
 state[x][y] = true;
 cnt++;
 remove(x + 1, y, target);
 remove(x - 1, y, target);
 remove(x, y + 1, target);
 remove(x, y - 1, target);
}
void xiaoxiaogame::adjustment()
{
 for (int j = 0; j < col; j++)
 {
 vector<int>tmp;
 for (int i = row - 1; i >= 0; --i)
 {
  if (!state[i][j])tmp.push_back(nums[i][j]);

 }
 int r = row - 1;
 for (int i = 0; i < tmp.size(); i++)
 {
  nums[r][j] = tmp[i];
  state[r][j] = false;
  r--;
 }
 for (; r >= 0; r--)
 {
  state[r][j] = true;
 }
 }
}
void xiaoxiaogame::playgame()
{
 int x, y;
 while (cin >> x >> y)
 {
 if (!isvalid(x, y))continue;
 int target = nums[x][y];
 cnt = 0;
 if ((isvalid(x + 1, y) && nums[x + 1][y] == target) || (isvalid(x - 1, y) && nums[x - 1][y] == target) || \
  (isvalid(x, y + 1) && nums[x][y + 1] == target) || (isvalid(x, y - 1) && nums[x][y - 1] == target))
  remove(x, y, target);
 score += target*cnt;
 adjustment();
 display();
 if (isgameover())
 {
  cout << "gameover" << endl;
  break;
 }
 }
}
int main()
{
 xiaoxiaogame t(10, 10);
 t.playgame();
 cin.get();
 return 0;
}

更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:

C++經(jīng)典小游戲匯總

python經(jīng)典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經(jīng)典游戲 玩不停

javascript經(jīng)典小游戲匯總

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

相關(guān)文章

  • Qt網(wǎng)絡編程實現(xiàn)TCP通信

    Qt網(wǎng)絡編程實現(xiàn)TCP通信

    這篇文章主要為大家詳細介紹了Qt網(wǎng)絡編程實現(xiàn)TCP通信,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言變量和全局變量能否重名問題

    C語言變量和全局變量能否重名問題

    這篇文章主要介紹了C語言變量和全局變量能否重名問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • C++中BitBlt的使用方法詳解

    C++中BitBlt的使用方法詳解

    這篇文章主要介紹了C++中BitBlt的使用方法詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • C++11利用原子操作實現(xiàn)自旋鎖

    C++11利用原子操作實現(xiàn)自旋鎖

    C++自旋鎖是一種低層次的同步原語,用于保護共享資源的訪問,這篇文章主要為大家介紹了如何利用原子操作實現(xiàn)自旋鎖,感興趣的小伙伴可以了解下
    2023-09-09
  • C與C++ 無參函數(shù)的區(qū)別解析

    C與C++ 無參函數(shù)的區(qū)別解析

    在《C++ 編程思想》:“關(guān)于無參函數(shù)聲明,C與C++有很大的差別。在C語言中,聲明int fun1(),意味著一個可以有任意數(shù)目和類型的函數(shù);而在C++中,指的卻是一個沒有參數(shù)的函數(shù)”
    2013-07-07
  • C語言由淺入深講解文件的操作下篇

    C語言由淺入深講解文件的操作下篇

    C語言具有操作文件的能力,比如打開文件、讀取和追加數(shù)據(jù)、插入和刪除數(shù)據(jù)、關(guān)閉文件、刪除文件等。與其他編程語言相比,C語言文件操作的接口相當簡單和易學
    2022-04-04
  • OpenCV獲取鼠標左鍵點擊位置圖像的像素值

    OpenCV獲取鼠標左鍵點擊位置圖像的像素值

    這篇文章主要為大家詳細介紹了OpenCV獲取鼠標左鍵點擊位置圖像的像素值,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C語言實現(xiàn)模擬銀行系統(tǒng)

    C語言實現(xiàn)模擬銀行系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)模擬銀行系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++的sstream標準庫詳細介紹

    C++的sstream標準庫詳細介紹

    以下是對C++中的的sstream標準庫進行了詳細的介紹,需要的朋友可以過來參考下
    2013-09-09
  • 匯編語言常見錯誤信息中文注解

    匯編語言常見錯誤信息中文注解

    這篇文章主要介紹了匯編語言常見錯誤信息中文注解,本文收集大部分匯編中常見錯誤信息及對應的中文注解,需要的朋友可以參考下
    2014-09-09

最新評論

越西县| 佛山市| 内黄县| 阿拉善左旗| 河北区| 庆云县| 南充市| 二连浩特市| 桃园市| 忻州市| 玉环县| 修水县| 商丘市| 若羌县| 天气| 左贡县| 合作市| 玉门市| 湘潭县| 芦山县| 东安县| 洛浦县| 青海省| 信丰县| 镶黄旗| 慈利县| 屯门区| 巴南区| 乌拉特中旗| 沅陵县| 吉木乃县| 台安县| 汝城县| 玛纳斯县| 揭阳市| 永靖县| 五台县| 新建县| 红河县| 梓潼县| 昌平区|