2048游戏编程具体思路和实现(总览稿)
(更新中……)
参考博客:https://blog.csdn.net/qq_39151563/article/details/104283217
由于放在一篇会导致篇幅太长,所以分成了几篇。(可能有个10篇吧=.=)
目前写完的:
- 【C++】2048游戏系列—总览篇
- 【C++】2048游戏系列—功能模块第一稿【矩阵操作】
- 【C++】2048游戏系列—功能模块第二稿【键盘输入】
- 【C++】2048游戏系列—功能模块第三稿【添加新数】
- 【C++】2048游戏系列—功能模块第四稿【结束检测】
- 【C++】2048游戏系列—优化模块第一稿【加载图片】
- 【C++】2048游戏系列—优化模块第二稿【计分模块】
- 【C++】2048游戏系列—优化模块第三稿【类封装】
- 【C++】2048游戏系列—优化模块第四稿【补充整理】
本篇介绍游戏背景和游戏流程图,具体功能部分仅涉及环境准备。
一、游戏背景
-
思路很简单的游戏:
-
试玩截图:
二、 游戏流程图
-
游戏的本质是根据玩家键盘(或其他)输入的值对一个 4 * 4 的二维矩阵进行移动、合并、检查等操作。
三、具体的功能实现
-
编译环境:Dev C++ 和 EGE图形库(网上自己搜索一下,有详细的安装流程的)
-
编程语言:C++
-
丰富的图形只是数据的映射,编程语言只是思想实例化的工具,关键还是在于数据处理
-
环境准备:
-
定义数据:
- 4*4矩阵
- 空格数
- 方向
#include <iostream> using namespace std; int grid[4][4];// 4*4矩阵 int EmptyBlock = 16;//空格数 int dir;//方向 int main() { return 0; }
-
调试函数(为了方便给 grid 赋了初值)
-
打印函数-PrintGrid()
!要注意一点:二维数组遍历的时候图形上是(j, i)对应到数组取值上是grid[i][j]
这一点要是不注意会在后面的代码翻大车!!!
-
计算空格函数-CalculateEmpty()
#include <iostream> using namespace std; int grid[4][4]= {{0,1,2,3}, {0,1,2,3}, {0,1,2,3}, {0,1,2,3},};// 4*4矩阵 int EmptyBlock = 16;//空格数 int dir;//方向 //1. 打印函数-PrintGrid() void PrintGrid() { for(int i=0; i<4; i++)//行 { for(int j=0; j<4; j++)//列 { cout << grid[i][j] << "\t"; } cout << endl; } cout<< endl; } //2. 计算空格函数-CalculateEmpty() int CalculateEmpty() { int cnt = 0; for(int i=0; i<4; i++) for(int j=0; j<4; j++) if(grid[i][j]==0) cnt++; return cnt; } int main() { PrintGrid(); cout << "EmptyBlock = " << CalculateEmpty() << endl; return 0; }
-
根据流程图可以把其分为以下几个模块:
- 1-根据 dir 的值对 grid 进行操作
- 2-键盘输入
- 3-在随机位置添加数值
- 4-游戏结束检测
-
![](https://cdn.jsdelivr.net/gh/Qi-China/Picture-PicX@master/2048/2048程序流程图.4agh41xfvyc0.png)
接下来几篇稿子就是实现具体功能了,一步一步来吧!