Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我应该为瓷砖使用对象吗?_C++_Coding Style - Fatal编程技术网

C++ 我应该为瓷砖使用对象吗?

C++ 我应该为瓷砖使用对象吗?,c++,coding-style,C++,Coding Style,我正在制作一个2D小游戏,游戏中有一个可以跳跃的角色(侧滚)。现在,游戏中的关卡是由瓷砖制成的(像马里奥一样?)。现在我的角色现在可以跳跃,但他不能着陆(因为瓦片仍然不存在) 我的问题是,我是否应该制作类的tiles实例(看起来很OO)?我提出的另一种选择是将瓷砖绘制到标高中,并制作矩形来保持其位置,但我觉得这样做很难赋予它们特殊的属性。喜欢:能被摧毁,是固体吗 任何人都有其他的瓷砖实施方案吗?当然。 磁贴是程序逻辑中的一个实体。这些实体自然对应于对象。除此之外,还没有一个合理的替代方案,尽管当

我正在制作一个2D小游戏,游戏中有一个可以跳跃的角色(侧滚)。现在,游戏中的关卡是由瓷砖制成的(像马里奥一样?)。现在我的角色现在可以跳跃,但他不能着陆(因为瓦片仍然不存在)

我的问题是,我是否应该制作类的tiles实例(看起来很OO)?我提出的另一种选择是将瓷砖绘制到标高中,并制作矩形来保持其位置,但我觉得这样做很难赋予它们特殊的属性。喜欢:能被摧毁,是固体吗


任何人都有其他的瓷砖实施方案吗?

当然。

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

在某种程度上,这个问题甚至没有意义,因为面向对象的整个观点是一切都是对象。不过,您的问题可能更接近于瓷砖是否应该由类表示。但同样,答案是肯定的:否则,对平铺对象的推理将变得困难:您将有*不相交(数据(坐标、表示、动作)对应于单个磁贴。由于该数据是不相交的,因此很难连贯地对对象进行推理。无法编写将磁贴视为逻辑实体的代码

关于您的备选方案:

我提出的另一种选择是将瓷砖画入水平面,并制作保持其位置的矩形,但我觉得这会使赋予它们特殊属性变得非常困难。比如:可以被破坏,是固体吗

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

结构

结构和类在C++中是相同的(除了讨论的目的无关的细节)。 从屏幕上读取互动程序

就像你的第一个选择一样,这个选择没有任何好处


在某种程度上,一旦你掌握了编程技巧,这个问题就很难解释了,因为(无论你是否在寻找面向对象的解决方案),用对象表示瓷砖甚至不是一种选择,它是自动的。

感谢你给出了清晰的答案,关于:“并非每一种实体都必须由自己的类来表示”首选的实现方式是什么?继承?@Floris我的意思很简单:假设您有一个人员数据库(例如,公司的员工)现在,你可以用一个类来表示他们的名字,例如<代码>名称>代码>,它们的年龄是由<代码> > <代码> >的类,但用代码< >字符串 S及其年龄来表示它们的名称可能更简单,但是代码是>未签名的int > s。但这些仍然是对象。实际上,在C++语句中,内存中的所有类型都是A。根据定义,n对象。更一般地说(在面向对象中),你推理的每个实体都是一个对象。