本文实例为大家分享了C++实现开心消消乐的具体代码,供大家参考,具体内容如下

用C++实现的开心消消乐主要分成一个一个模块去实现的,较少代码的耦合性,在这里用了一个xiaoxiaogame类去实现,其中构造函数中对数组和变量的初始化 xiaoxiaogame(int row1, int col1); 用void display();这样一个函数实现显示,用bool isvalid(int x, int y);来判断一个坐标所在的位置能不能消除, 用bool isgameover();判断游戏有没有结束,用void remove(int x, int y, int target);来消除方块,然后用void adjustment()去调试消除方块后的位置 用void playgame();来执行游戏。

代码如下:

#include

#include

#include

#include

using namespace std;

class xiaoxiaogame

{

public:

//构造函数中对数组和变量的初始化

xiaoxiaogame(int row1, int col1);

//显示

void display();

//判断一个坐标所在的位置能不能消

bool isvalid(int x, int y);

//判断游戏有没有结束

bool isgameover();

//用深度遍历去执行消除功能

void remove(int x, int y, int target);

//消除方块后剩余方块的摆放位置的调整

void adjustment();

//执行游戏

void playgame();

private:

//存放游戏开心消消乐的二维数组

vector>nums;

//记录存在的状态

vector>state;

//记录分数

int score;

//连在一起的相同数字的个数

int cnt;

//开心消消乐的行

int row;

//开心消消乐的列

int col;

};

xiaoxiaogame::xiaoxiaogame(int row1, int col1)

{

row = row1;

col = col1;

score = 0;

cnt = 0;

srand(time(0));

vector>tmp(row1,vector(col1,0));

vector>temp(row1, vector(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++)

{

vectortmp;

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;

}

更多有趣的经典小游戏实现专题,分享给大家:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

消消乐要求 c语言程序,C++语言实现开心消消乐相关推荐

  1. 棱形旋转c语言程序_C 语言时隔 5 年重回巅峰,这 20 个热门项目拿去练手!

    在上个月的 TIOBE 编程语言排名中,C 语言和 Java 的差距只有 0.01%.在近日 TIOBE 公布的 2020 年 5 月编程语言排行榜中,C 语言成功超越了 Java,重返第一的王者宝座 ...

  2. 蜂鸣器发出7种音阶c语言程序_C语言编程新思路

    第一章 单元测试 1.单选题: 关于一个C语言程序执行的起点和终点,以下选项正确的是 ( ). 选项: A: main 任意 B: main 最后一个 C: main main D: 第一个 最后一个 ...

  3. 文件的记录c语言程序,c语言程序学生籍贯信息记录簿设计.docx

    c 语言程序学生籍贯信息记录簿设计 学生籍贯信息记录簿 课程设计报告书 班 级: 方 0909-1 学 号:姓 名: 苑 小 叶 指导教师 : 康 亚 男 石家庄铁道大学四方学院 2010年 07月 ...

  4. 学生实验平台搭建c语言程序,c语言程序设计实验学生用.doc

    c语言程序设计实验学生用 C语言程序设计 实验指导 (学生用) 计算机基础教研室 <C语言程序设计>课程组 2012年9月 前 言 <C语言程序设计>是计算机科学技术系面向全校 ...

  5. 插入法排序c语言程序,C语言之插入排序算法

    一.什么是直接插入算法? 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列. 选择 ...

  6. 青花瓷音乐的单片机c语言程序,c语言曲谱_单片机c语言音乐简谱代码

    51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...

  7. 框图c语言程序,C语言程序设计框图

    <C语言程序设计框图>由会员分享,可在线阅读,更多相关<C语言程序设计框图(86页珍藏版)>请在人人文库网上搜索. 1.第三章控制结构,返回总目录,目录,3.1节目结构框,3. ...

  8. 简单谱子C语言程序,c语言曲谱_单片机c语言音乐简谱代码

    51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...

  9. 用直接分解法求方程组的C语言程序,c语言编程求解线性方程组论文

    计算机编程求解线性方程组 第一章 绪 论 在自然科学.工程技术.经济和医学各领域中产生的许多实际问题都可以通过数学语言描述为数学问题,也就是说,由实际问题建立数学模型,然后应用各种数学方法和技巧来求解 ...

  10. 记得每天锻炼身体c语言程序,c语言程序

    一实验名称计算出1000以内10个最大素数之和二.实验目的1.熟练掌握if.if-else.if-else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和s ...

最新文章

  1. mysql awr v1.0.1发布
  2. 蓝桥杯第八届省赛JAVA真题----字母组串
  3. 位置采集[置顶] iPhone手机上的GPS位置信息采集与分享应用
  4. 数据结构上机实践第九周项目3 - 利用二叉树遍历思想解决问题
  5. 2021-08-10 C3P0连接池
  6. tecplot360的宏命令
  7. 时区时钟插件html,World Clocks插件,世界时钟Chrome插件,轻松查看各国日期时间...
  8. 基于大数据架构实现景点游客数据分析平台,全国景点游客数据管理系统
  9. 苹果计算机磁盘格式,苹果电脑上怎么进行格式化磁盘?
  10. 我是如何获得微信内置表情的
  11. pdf文档页码怎么添加
  12. 关于微信表情及输入法emoji显示问题解决方案
  13. 常微分方程组之龙格-库塔法
  14. 【机器学习】吴恩达机器学习Deeplearning.ai
  15. 人脸表情识别 (1) 下载fer2013数据集和数据的处理
  16. Elastic开源社区:开发者招募
  17. PyTorch 1.0 中文文档:torch.utils.model_zoo
  18. oracle查询年份的后两位,Oracle对2位年份的处理
  19. 《蹭课神器》Alpha版使用说明
  20. 微信小程序开发与mysql_微信小程序云开发之云数据库入门

热门文章

  1. NC | 肠道细胞和乳酸菌共同作用来防止念珠菌感染
  2. 驴妈妈旅游菜单导航带源码
  3. 从F型网页浏览看用户对网页的浏览习惯
  4. python正则匹配ABAC型词语
  5. 【机器学习算法介绍】朴素贝叶斯
  6. 零知识证明系列之一——初探零知识证明
  7. 将KITTI数据集的odometry部分velodyne的bin文件转换成rosbag
  8. 上网行为管理设备网桥部署方式
  9. 千亿级平台技术架构:为了支撑高并发,我把身份证存到了JS里
  10. 树状数组讲解(简洁好懂)