我应该使用Tiles对象吗?

问题描述:

我正在制作一个小型的2D游戏,它有一个可以跳跃的角色(侧滚动)。现在游戏中的关卡是用瓷砖制作的(马里奥喜欢?)。现在我的角色可以在此刻跳跃,但他无法登陆(因为地砖仍然不存在)。我应该使用Tiles对象吗?

我的问题是,我应该使类的瓷砖实例(看起来非常OO)?我想出的另一种方法是将瓷砖绘制到关卡中,并制作矩形以保持其位置,但是我觉得这会让它很难赋予它们特殊的属性。喜欢:可以被破坏,是固体?

任何人都有任何替代解决方案瓷砖实施?

当然。

瓷砖是您的程序逻辑中的一个实体。这些实体自然对应于对象。除此之外,还没有一个合理的替代方案,尽管当然不是每个类型的实体都必须由它自己的自己的类来表示。

从某种意义上说,这个问题甚至都没有意义,因为整个对象方向的角度是所有东西都是是一个对象。不过,你的问题可能更多的是是否应该由一个班级来表示瓦片。但是,答案会是肯定的:否则关于你的tile对象的推理会变得很难:你将有*不相交(数据(坐标,表示,动作)对应于一个tile。因为这些数据是不相交的,所以很难推理关于连贯的对象,您可以不写代码,把瓷砖作为逻辑实体

关于您的选择:

我来到了刚刚绘制砖入水平,使矩形的替代哪些抓住那里的位置,但我觉得这样会让它很难赋予它们特殊的属性。像:可以被破坏,是固体的?

你已经注意到了缺点。这根本不是一个明智的选择,它会让一些简单的任务变得非常复杂(或不可能)。

结构

结构和类在C同样的事情++(除了用于本讨论的目的不相关的详细信息)。

从屏幕上读取瓦

就像你的第一选择,这只是一个没有提供好处。

从某种意义上来说,这个问题很难一蹴而就,因为(不管你是否在寻找一个面向对象的解决方案),代表对象的贴图甚至不是一个选择,它是自动的。

+0

感谢您的明确回答,关于:“不是每一种类型的实体都必须用自己的类来表示”,那么实现的首选方式是什么?遗产? – 2013-05-01 09:46:25

+0

@弗洛里斯我的意思就是:说你有一个人的数据库(例如公司的雇员)。现在,你*可以*通过'Name'的类来代表他们的名字,他们的年龄由'Age'等的类来表示。但是用'unsigned int'来表示他们的名字可能更简单。但仍然是*对象*。事实上,用C++的说法,根据定义,驻留在内存中的所有类型都是一个对象。更一般地(以对象为导向),你推理的每个实体都是一个对象。 – 2013-05-01 09:48:33