我想更改GridWorld GUI的DefaultDisplay
类,以便我可以在运行期间更改actor的图像,因为我正在使用代码的jar文件,所以我创建了一个子类{{1 } CustomDisplay
。
但是,由于创建子类会改变名称,因此我必须创建使用DefaultDisplay
的类的子类,以便更新它们以使用DefaultDisplay
而不是CustomDisplay
}。例如,我必须创建一个名为DefaultDisplay
的{{1}}的子类,而不是:{/ p>
DisplayMap
说了这个:
CustomMap
然后使用private Display defaultDisplay = new DefaultDisplay();
的任何其他类都必须更改为使用private Display customDisplay = new CustomDisplay();
。制作所有这些类的子类似乎非常低效,因为它们使用了我改变的类。
是否可以设置DisplayMap
而不是CustomMap
,因此我只需更改一个类?
答案 0 :(得分:1)
这个问题似乎是陈旧的,但我认为一般性答案可以帮助任何找到它的人。
问题是关于GridWorld,一个用于教学的简单框架。
OP希望进行特定更改,通过引入新的显示类来解决未说明的问题,但不能更改现有的类。因此,问题变成了如何引入新的显示类?
应用OO思考。框架是否支持引入新的显示类? 我们应该检查文档,如果失败,请检查框架的公共类接口:是否有设置显示的方法?我们可以检查网格,演员,以及使用它们或使用它们的其他人。
尽管OP说的是,但有一个明确的声明(@Andrew Thompson所说)解决了这个要求:
“渲染算法如下:
这就是这个问题所需要的。
有几个“学习”。
如果您正在阅读看似相关的文档(在这种情况下它会提到Display界面),而您对此不了解,那么请进行调查,直到您理解为止。
如果您对问题解决方案的想法遇到困难,那么在投入太多精力之前,请返回重新评估引导您的路径中的分支。
你的老师(在如此低级别的科目中)没有设定不可能完成的任务(除非他们做了大量的事情)。所以2.适用。
这与调试有关:我们最难的错误来自我们不知道的假设。我们可能是出于懒惰思维或无知而制造出来的。因此,重新审视思考并了解所涉及的技术和技术。在尝试更改之前了解正在发生的事情。