生成随机地图:游戏地图是一个二维数组,可以使用随机数生成器生成不同的元素。

打印地图:在控制台中打印当前的地图。

输入玩家选择:读取玩家输入的两个数字,代表玩家选择的两个元素的行和列。

检查匹配:检查玩家选择的两个元素是否相同,如果相同则可以消除。

消除匹配:将玩家选择的两个相同的元素消除。

移动元素:将消除后留下的空位向下移动,并在空位上填充新的元素。

循环游戏:在玩家选择结束游戏或无法继续消除时结束游戏。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define ROWS 10
#define COLS 10// 定义游戏地图
int map[ROWS][COLS];// 生成随机地图
void generateMap()
{// 使用当前时间作为随机数种子srand(time(0));for (int i = 0; i < ROWS; i++){for (int j = 0; j < COLS; j++){// 生成 1~9 的随机数作为地图元素map[i][j] = rand() % 9 + 1;}}
}// 打印地图
void printMap()
{printf("   ");for (int j = 0; j < COLS; j++){printf("%d  ", j);}printf("\n");printf("   ");for (int j = 0; j < COLS; j++){printf("---");}printf("\n");for (int i = 0; i < ROWS; i++){printf("%d  ", i);for (int j = 0; j < COLS; j++){printf("|%d ", map[i][j]);}printf("|\n");printf("   ");for (int j = 0; j < COLS; j++){printf("---");}printf("\n");}
}// 输入玩家选择
void getPlayerSelection(int *row, int *col)
{printf("请输入玩家选择的元素行和列:\n");scanf("%d %d", row, col);
}// 检查匹配
int checkMatch(int row1, int col1, int row2, int col2)
{return map[row1][col1] == map[row2][col2];
}// 消除匹配
void eliminateMatch(int row1, int col1, int row2, int col2)
{map[row1][col1] = 0;map[row2][col2] = 0;
}// 移动元素
void moveElements()
{// 从下往上遍历每一列for (int j = 0; j < COLS; j++){// 从下往上遍历每一行for (int i = ROWS - 1; i >= 0; i--){// 如果当前元素为 0,就向上移动直到找到第一个非 0 元素if (map[i][j] == 0){int k = i - 1;while (k >= 0 && map[k][j] == 0){k--;}// 如果找到了第一个非 0 元素,就将它移到当前位置if (k >= 0){map[i][j] = map[k][j];map[k][j] = 0;}}}}
}// 填充新的元素
void fillElements()
{// 从上往下遍历每一列for (int j = 0; j < COLS; j++){// 从上往下遍历每一行for (int i = 0; i < ROWS; i++){// 如果当前元素为 0,就在这里填充新的元素if (map[i][j] == 0){map[i][j] = rand() % 10 + 1;}}}
}// 判断游戏是否结束
int isGameOver()
{// 检查是否有相邻的相同元素for (int i = 0; i < ROWS - 1; i++){for (int j = 0; j < COLS - 1; j++){if (map[i][j] == map[i + 1][j] || map[i][j] == map[i][j + 1]){return 0;}}}// 检查最后一列是否有相邻的相同元素for (int i = 0; i < ROWS - 1; i++){if (map[i][COLS - 1] == map[i + 1][COLS - 1]){return 0;}}// 检查最后一行是否有相邻的相同元素for (int j = 0; j < COLS - 1; j++){if (map[ROWS - 1][j] == map[ROWS - 1][j + 1]){return 0;}}return 1;
}int main()
{// 生成随机地图generateMap();int row1, col1, row2, col2;while (1){// 打印地图printMap();// 输入玩家选择getPlayerSelection(&row1, &col1);getPlayerSelection(&row2, &col2);// 检查匹配if (checkMatch(row1, col1, row2, col2)){// 消除匹配eliminateMatch(row1, col1, row2, col2);// 移动元素moveElements();// 填充新的元素fillElements();}else{printf("选择的元素不相同,请重新选择!\n");}// 判断游戏是否结束if (isGameOver()){printf("游戏结束!\n");break;}}return 0;
}

C++实现 消消乐小游戏相关推荐

  1. 消消乐实现下坠_手把手教你如何实现iOS消消乐小游戏Demo

    引言 做消消乐Demo属于一个意外,本想借助学习iOS游戏开发把CoreAnimation学好,并完成第一个游戏Demo:俄罗斯方块.却在这过程中发现了一些实现消消乐的小技巧,于是兴起完成了这个小De ...

  2. 用Python写个开心消消乐小游戏!自己写的游戏就是好玩!

    提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 实现 消消乐的构成主要包括 ...

  3. 用Python 写个 开心消消乐小游戏

    源码在python学习交流q群:733089476 获取 提到开心消消乐这款小游戏,相信大家都不陌生,它曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Pytho ...

  4. python开心消消乐辅助_用Python写个开心消消乐小游戏

    提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 实现 消消乐的构成主要包括 ...

  5. html实现开心消消乐小游戏

    文章目录 1.设计来源 1.1 游戏界面 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_4315 ...

  6. Python实现消消乐小游戏

    本文主要介绍了Python实现消消乐小游戏,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,编程学习资料点击免费领取 提到开心消消乐这款小游戏,相信大家都不陌生,其曾 ...

  7. C#趣味消消乐小游戏

    引言 我们小时候可能都玩过这样一款小游戏,它就是开心消消乐.游戏刚开始会生成很多不同的小图标,我们需要交换两个图标的位置使三个(或以上)相同的图标紧挨在一起,这样相同的图标就会消去并随机生成其他图标. ...

  8. Appgamekit制作消消乐小游戏(附代码)# 1

    Appgamekit制作消消乐小游戏(附代码)# 1 其实作者我也是刚刚才接触的Appgamekit,而且以前我是学C/C++的,所以我学的东西拿来这里就只有代码的结构思路会清晰一点了.(但是思路其实 ...

  9. python 小游戏程序_用 Python 写个消消乐小游戏

    文 |野客 来源:Python 技术「ID: pythonall」 提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 ...

  10. python实现消消乐游戏_用Python写个开心消消乐小游戏

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受 ...

最新文章

  1. A/B 测试:以变应变,给用户更好的体验“宠爱”
  2. java每个阶段的学习时间_每个Java学习者都会犯的10个最常见的1个错误
  3. 高起专计算机专业答案,Windows知识题(高起专)答案
  4. 'vue-cli-service' 不是内部或外部命令,也不是可运行的程序 或批处理文件
  5. linux ssh原理
  6. 忽然感觉公司的工作环境有污染,墙壁和地面会散发异味,时间长了会头疼。...
  7. HttpSession介绍
  8. 前端开发常用又好用的几个软件
  9. 4 配置端口聚合提供冗余备份链路
  10. MATLAB绘制奈奎斯特图:nyquist命令
  11. 仿微博视频边下边播之滑动 TableView 自动播放
  12. python画圣诞帽_用Python给头像戴圣诞帽
  13. 雷霆战机服务器维护公告,雷霆战机停服公告 4月11日服务器维护
  14. 网站内容采集工具介绍
  15. 千峰python线下培训
  16. c语言字符型数据是,C语言字符型数据.doc
  17. R3LIVE:A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation 运行记录
  18. 2009年威客模式已经成熟
  19. 利用Pyecharts绘制漏斗图的案例【含参数详解】
  20. 【python练习题】随机生成福彩3D号码,模拟开奖并判断是否中奖

热门文章

  1. 占领手机,银行App的隐秘战事
  2. 如何优雅的跨平台输出log日志 C++
  3. 机器学习(一) 拟合
  4. 实用符号Alt+小键盘快输
  5. HDU 2504 JAVA
  6. unity中的动画转换条件参数 Exit Time,Fixed Duration
  7. Nodejs清理无用依赖包
  8. lookback地址
  9. vsco和lr哪个好_野软件│你可能需要一套颜值高 不网红 效果超赞媲美VSCO的LR预设...
  10. Xshell7连接ubuntu