nomango

不吃芒果的空间

CosmoRun - 宇宙漫步

说明

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 阅读源码~

分享到

Comments (1) -