2014-09-12 50 views
0



当创建一个将以图形方式表示的对象,并且具有独立于该表示的数据和功能时(即,卡片游戏中的卡片将具有图形,但也知道其值,适合,也许可以翻转),从最佳实践方法,该对象应该知道自己的形象和位置?

如果不是,应该如何处理?我明白,至少应该有另一个班级负责绘制这个对象,并且它呼吁我说班级不需要关心它的图形:程序应该能够改变设计和外观在不影响课堂本身的情况下 - 无论你如何绘制图像,七个黑桃都是七个黑桃 - 但是我发现很难想出一个解决方案,让'抽屉'课知道图像和位置卡。

我现在的解决方案是有一个精灵类,并且卡包含一个精灵对象,它与卡一起构建 - 精灵只包含一个图像和矢量(位置),但我觉得我可以打破这个。

我错过了任何设计模式或常识解决方案?或者我只是错误地认为这应该分开?面向对象的图形和画家

+0

我想提出的是,这不是一个OOP问题,而是更多的关注点分离问题 - 在游戏设置中,这取决于你正在与谁交谈(也可能受到你使用的引擎的影响) – 2014-09-12 19:41:45

回答

0

由于这是一个意见问题:我认为最好不要让对象知道自己的图像。它应该知道自己的立场。像你提到的那样,当一张卡被抽出时,七个黑桃是七个黑桃。将它留给不同的处理程序来根据它是什么类型的卡来绘制图像,而不是向卡片要求其图像。

当你画一张卡时,你可以进行方法调用,例如:drawCardImage(cardObject.type)。然后,该方法可以使用if语句检查“if card =='sevenofspades':draw(”/ images/sevenspades.png“)