1.总结
到目前为止,整个游戏的开发已经完成了,整个开发过程跨时比较长,实现的基本上是比较完整的游戏了,当然了,单纯的农场类游戏目前可能有些无趣,所以下面我提供一个思路,以便于将不同游戏结合起来。
2.把游戏编码为模块的一个思路
一个游戏内有多种经典元素已经是司空见惯的,像我个人比较喜欢的符文工房3,就是集各种玩法为一体的游戏。
举个例子,现在的硬件厂家都是把各种传感器封装成一个模块,一般情况下模块需要:
- 供电。
- 规定的输入。
- 规定的输出。
而若想要把一个游戏封装为模块,最重要的同样也是处理好输入输出。
以农场游戏为例:
输入输出分为StaticData和DynamicData,其中StaticData仅为游戏的输入;而DynamicData既有输入,又有输出。
StaticData => FarmStaticDataDelegate
- CropStruct* getCropStructById(int id)
- ExtensibleSoilStruct* getExtensibleSoilById(int id)
- getValueForKey() 等三个和一些宏
DynamicData => FarmDataDelegate
- void updateCrop(Crop*crop);
- void updateSoil(Soil* soil);
- void shovelCrop(Crop* crop);
- int getFarmExpByLv(int lv);
- void addGood();
- void subGood();
- Value& getValueOfKey();
- void setValueOfKey();
这两个委托器可以放置到FarmScene中。除此之外,FarmScene需要成为单例类或者在子节点中使用强制类型转换来访问动静态数据,个人倾向于后者,单例类相对比较麻烦;最后,还需要有两个静态方法:
- preloadResources() 预加载资源
- unloadResources() 卸载资源
这两个函数来提供资源的加载和卸载。