如何解决将事件侦听器附加到多态对象
假设我有一个接口PlayerMoveStrategy,该接口有两种方法move(GameBoard b)和Utility(GameBoard b),它们通过一种策略来移动实施者并按某种度量来评估移动。
现在,实现类可以基于规则或基于学习的算法(神经网络,Q学习),其中将计算移动方法。但是,要测试游戏,我需要将一个实施类设置为HumanPlayer,由按键决定下一步。
由棋盘控制是否允许进行下一步动作,由玩家控制实际动作,请参见伪代码:
// Pseudocode GameBoard.java
while (gameLoop) {
Move m = this.player.move(this.board)
if (this.moveAllowed(m)) {
this.board.move(m)
}
}
现在的问题是,如果选择的播放器是人的话,如何将实际的侦听器附加到代表板的JPanel上。对我来说,这将永远是一个笨拙的案例
if (this.player instanceof HumanPlayer)
HumanPlayer humanPlayer = (HumanPlayer) this.player;
this.addKeyListener(new HumanKeyListener(humanPlayer));
与HumanKeyListener的一些不错的实现。下一个问题是,现在我需要为HumanPlayer实现提供移动所需的数据。
我将如何设计该系统以简化设计?我想念什么? HumanPlayer是否应该实现KeyListener?
我的课表(ish)。
游戏设有董事会;董事会有一名球员;板上有n * n个图块;玩家有策略
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。