我已开始为iphone编写游戏编程,而且所有初学者都觉得我在黑暗中拍摄。我只想运行我的设计以及我的“图形引擎”如何工作,看看它是否接近标准设计或良好实践。让我解释它是如何工作的:
出于简化的原因,我只想说我有以下3个类:
LevelView :继承自UIViewController,是一个视图,每个级别的游戏都有10个按钮。单击按钮会创建一个新的GameViewController对象(使用initWithLevel),并根据玩家选择的级别用整数(1-10)实例化它。
GameViewController :继承自UIViewController并具有initWithLevel(int)方法和一个大的switch语句,该语句根据传递的int执行级别设置。因此,它根据每个级别实例化不同数量的两种类型的对象(机器人和行星)。它创建的每个对象都插入到属于单例的数组中。然后在最后它将启动gameloop,这是本课程中的另一种方法。
GameView :继承自UIView并且是绘制所有内容的地方(有一个drawRect方法)以及触摸Began,Moved和Ended方法的位置。每个gameLoop会发生什么,这将从全局数组(单例中的数组)中拉出所有对象,并根据它将在正确的位置绘制正确的图像。 (机器人和行星的位置作为变量存储在各自的对象中)
触摸Began,Moved,Ended方法根据用户的操作将相关对象从Singleton数组拉回并更新其位置/能力。因此,下次循环运行并再次绘制时,绘制方法将更新它们的位置或行为。
此时听起来是否合适?我应该实例化一个GameViewController对象来启动关卡吗? gameLoop应该在GameViewController中还是应该在GameView中。我已将GameView添加到InterfaceBuilder中的GameViewController上它将绘制初始对象,但我不确定如何更新它们。如何调用drawRect方法更新所有内容?
无论如何,对非常长的帖子感到抱歉。我不是在寻找一个特定的答案,只是来自更有经验的人的评论告诉我:
1)是的,你正朝着设计正确的方向前进
2)你不需要重新思考一些事情
感谢您的帮助
STAV
答案 0 :(得分:1)
我真的非常推荐使用像Cocos2d这样的好游戏框架,而不是自己动手。
使用它可以非常快速和轻松地进行滚动,并且使用它制作了很多的顶级游戏。
它甚至像你想要的那样处理“等级”。
我下载了它,并在24分钟内启动并运行了我的第一个测试应用程序!
请查看:
答案 1 :(得分:1)
我同意Cocos2d。另一方面,如果你对图形如何工作感兴趣,开始学习OpenGL ES,那就很难学习,但是一旦你知道它,你就不会像以前那样使用完成所有工作的框架了。
关于你的另一个问题,设计。应用程序构建在MVC模型上。根据应用程序的规模,您可以将游戏循环(逻辑)放在控制器类中,或者用于更大的项目(以及更好的设计),您应该将2分开。