CosmoRun - 宇宙漫步
2020-10-18 ~ 2021-2-20
(1)
说明
CosmoRun是NoSixFive游戏工作室发布在Windows应用商店的一款魔性小游戏,觉得特别好玩所以仿做了一个。它的操作十分简单,点击鼠标可以让小球转向,控制小球在一个方块组成的世界中漫游~
游戏截图
代码概况
仓库地址:https://github.com/Nomango/CosmoRun-EasyX
编译环境:VS2010及以上
代码行数:1800+
由于这个游戏是 16 年 4 月份写的,当时我对游戏框架并不了解,完全按照自己的想法进行设计,注释写的很少,还有特别多的数字计算,所以代码阅读起来非常困难,尤其是 Floor 这个类,随机创建地板的算法复(hun)杂(luan)到我自己都不想再看见它…
源文件和类说明
- main.cpp:主函数,程序入口。创建了一个 GameUI 对象,运行 StartUI 函数进入游戏界面。
- GameAfx.h:包含了所有头文件,并对游戏中的常量做了宏定义。
- GameUI 类:游戏界面类,用于调度各个界面之间的切换。StartUI 函数创建出 easyx 的绘图窗口,并显示主菜单。
- Game 类:游戏主类,用于控制游戏进度、进行游戏运算和绘制游戏界面。Init 函数初始化游戏数据(包括开始游戏前的一小段动画),Play 函数开始游戏,Draw 函数绘制游戏画面,GetCommand 函数获取用户控制。
- Command 类:用于储存键盘鼠标消息,里面储存了鼠标左键是否按下、抬起,是否按下空格等信息,然后在 Game 类的 GetCommand 中处理这些信息(比如点击鼠标左键让小球拐弯)
- Cosmo 类:小球类,储存了小球半径、小球当前运动方向,当前所在板块等信息。
- Tail 类:小球的尾巴类,储存了尾巴长度,尾巴位置及运动方向等。
- Floor 类:板块类,储存了板块类型、板块所指方向、板块颜色
- Button 类:按钮类,储存了按钮大小,按钮文字,是否被点击等信息。
- Menu 类:菜单类,储存了菜单的宽和高,Show 和 Hide 函数用于显示和隐藏菜单。
题外话
写这个游戏的时候做了无数遍测试,对这个游戏都有感情了,于是我后续制作了这个游戏的javafx版本和基于kiwano引擎的C++版本,画面效果基本可以和游戏原作媲美了~ 可以到CosmoRun-JavaFX 和 CosmoRun-Kiwano 阅读源码~