当创建一个将以图形方式表示的对象,并且具有独立于该表示的数据和功能时(即,卡片游戏中的卡片将具有图形,但也知道其值,适合,也许可以翻转),从最佳实践方法,该对象应该知道自己的形象和位置?
如果不是,应该如何处理?我明白,至少应该有另一个班级负责绘制这个对象,并且它呼吁我说班级不需要关心它的图形:程序应该能够改变设计和外观在不影响课堂本身的情况下 - 无论你如何绘制图像,七个黑桃都是七个黑桃 - 但是我发现很难想出一个解决方案,让'抽屉'课知道图像和位置卡。
我现在的解决方案是有一个精灵类,并且卡包含一个精灵对象,它与卡一起构建 - 精灵只包含一个图像和矢量(位置),但我觉得我可以打破这个。
我错过了任何设计模式或常识解决方案?或者我只是错误地认为这应该分开?面向对象的图形和画家
0
A
回答
0
由于这是一个意见问题:我认为最好不要让对象知道自己的图像。它应该知道自己的立场。像你提到的那样,当一张卡被抽出时,七个黑桃是七个黑桃。将它留给不同的处理程序来根据它是什么类型的卡来绘制图像,而不是向卡片要求其图像。
当你画一张卡时,你可以进行方法调用,例如:drawCardImage(cardObject.type)。然后,该方法可以使用if语句检查“if card =='sevenofspades':draw(”/ images/sevenspades.png“)
相关问题
- 1. 面向对象和非面向对象之间的区别javascript
- 2. 用C++编写一个简单的面向对象的图形
- 3. 不向玩家移动的动画制作对象 - Unity
- 4. 面向对象的Python - 使用类和函数的矩形
- 5. Python图形和轴对象
- 6. 面向对象的图像ImageList设计
- 7. MusicBrainz的艺术家形象和信息
- 8. 面向对象的C++和C#
- 9. 面向对象的编程和路径
- 10. 面向对象的分析和设计
- 11. OpenACC和面向对象的C++
- 12. Facebook粉丝页面和相关的开放图形对象
- 13. 试图在d3中使用面向对象的方法生成条形图
- 14. 面向对象c#
- 15. Reactjs - 面向对象?
- 16. NSNotification面向对象
- 17. 使用面向对象的Python对象进行面向对象或精化
- 18. java界面 - 面向对象
- 19. 面向对象的分析和设计 - 类图
- 20. 关于面向对象和对象的问题
- 21. 面向对象的Javascript
- 22. 面向对象的PHP
- 23. 面向对象的json_encode PHP
- 24. 面向对象的执行
- 25. 面向对象的JavaScript锁
- 26. 面向对象的JavaScript
- 27. 面向对象的Python
- 28. 面向对象的PHP
- 29. 在PHP的面向对象
- 30. 面向对象的设计
我想提出的是,这不是一个OOP问题,而是更多的关注点分离问题 - 在游戏设置中,这取决于你正在与谁交谈(也可能受到你使用的引擎的影响) – 2014-09-12 19:41:45