我使用的Qt编译套件:Desktop Qt 6.5.8 MinGW 64-bit
(只要是Qt6框架即可)
Qt Creator版本:Qt Creator 15.0.0 (Enterprise)
将build/Desktop_Qt_6_5_8_MinGW_64_bit-Release/release文件夹中的exe文件下载下来,直接双击2048.exe文件运行即可(需要Qt6框架)
若没有qt框架,可以将整个release文件夹下载下来,在文件夹里面运行exe文件。
1.弹窗显示找不到Qt6Core.dll。要么是Qt框架太老,要么是没有将Qt编译器加载到环境变量
2.一直在加载。正常情况,因为wav音频文件比较大,并且打包了所有依赖环境,耐心等待即可🥹
- 克隆到本地:
git clone [email protected]:wang-jiahao/2048.git
-
删除
2048.pro.user
文件与build
文件夹。 -
Qt Creator打开项目,选择文件
2048.pro
,然后按默认步骤build即可。 -
打开
main.cpp
,运行即可。(build时间可能较长,因为wav音频文件比较大)
2048是一款很火的小游戏。2048在4×4的网格上进行。玩家可以使用上、下、左、右四个方向键移动所有方块。游戏开始时,网格上会出现两个数值为2或4的方块。每次移动后,另一个数值为2或4的新方块会随机出现在空方格上。方块会沿着指定的方向滑动,直到被其它方块或网格边缘阻挡。如果两个相同数值的方块碰撞,它们将合并成一个方块,其数值等于两个方块的数值之和。玩家获取胜利的条件是获得数值为2048的方块。当玩家没有合法的移动方法时,即出现了网格上没有空方格,且相邻方块的数值均不相同的情况,游戏就直接结束。
因为最近在自学21spring的CS61B,其中作业的proj0就是2048,而我前不久刚好用Java写了这个项目,看到课程的项目要求,索性就自学Qt,用C++重新写了功能更丰富的2048,增加了音乐,新游戏等功能。
- 2048官网: https://2048game.com/
- CS61B网址(21spring版): https://sp21.datastructur.es/
- proj0网址: https://sp21.datastructur.es/materials/proj/proj0/proj0
- 当初我完成的Java版2048: https://github.com/wang-jiahao/CS61B/tree/master/proj0
- 先参考助教建议视频自学qt。
- 下载最新版本的Qt Creator及其套件。
- 创建通过qmake管理的项目。
- 先在Qt的设计页面中增加对象,调整参数,得到美观的ui界面。
- 再在mainwindow.h文件中定义需要实现的函数等。
- 再在mainwindow.cpp文件中具体实现头文件中的函数,不会实现的功能通过google/StackOverflow/qt帮助文档/ChatGPT解决。
- 最后再main.cpp中调用。
- 通过得到的exe文件不断发现问题(比如音乐,重新开始,回退功能等),不断重复5-7步骤。
- 游戏流畅
- 玩家与单位交互流畅
- 用户交互界面完整美观
- 设计交互方式
- 用户操作反馈明确
- 实现存档功能
- 设计数值等机制
- git提交规范
- 体现C++面向对象特性
- 多文件编程
- 难度适中,游玩体验好
- 游戏界面设计美观
- 有与游戏内容相符的背景音乐
- 游戏场景(10分):游戏流畅,无卡顿,提供了try again与new game2个选项,满分
- 角色或单位(10分):该游戏中的单位为包含数字的方块,最初为2个,最高有16个,满分
- 完整界面(15分):用户交互界面(ui)完整美观,按钮提示明确,满分
- 交互方式(5分):设计了2种键盘交互方式,通过WSAD或↑↓←→控制方块的移动,满分
- 操作反馈(5分):用户操作反馈明确,按下方向键后画面变化流畅,满分
- 存档功能(10分):关闭游戏后再次打开从存档点可以继续游戏(如果是第一次打开,则为新游戏);将存档保存在build/debug/savegame.json文件中,可以直接修改实现进度调整。满分
- 数值或升级机制(10分):设计分数这一数值机制,每次合并得到更大的数字,分数就会加上该数字,5分
- git提交规范(10分):最开始初始化项目,之后不断优化,提交十余次,且提交合理,满分
- 体现C++面向对象特性(5分):代码封装了许多不同的类,如
QApplication
,MainWindow
等,其中MainWindow
继承自QMainWindow
。满分 - 多文件编程(5分):
2048.pro
文件定义如何编译、链接以及生成最终的可执行文件或库,main.cpp
文件用于管理主线程,mainwindow.h
用于定义主窗口(MainWindow
)的功能(包括事件处理,界面更新等),mainwindow.cpp
用于实现主窗口的功能,resources.qrc
用于管理资源文件(如音乐等)。代码注释清晰、变量名表意明确。满分
- 玩家游戏体验(5分):难度适中,设计的键盘交互方式符合操作逻辑(如W或↑代表上移等),游玩体验好,满分
- 酷炫UI(5分):游戏界面设计美观,用户每次按下方向键都有方块移动的动态效果,界面元素合理,满分
- 背景音乐(5分):使用C418的Subwoofer Lullaby(minecraft的背景音乐之一),与游戏内容相符,让人怀旧,涤荡心灵,满分