【发布时间】:2019-12-07 10:54:00
【问题描述】:
我正在用打字稿制作一个小足球游戏,并希望允许用户一次控制一个玩家,但他们可以切换到控制另一个玩家。我有一个包含属性和 getNextMove 方法的播放器类,无论播放器是由用户控制还是由 ai 控制,都将需要该方法。但是,我希望 getNextMove 方法根据播放器是由用户控制还是由 ai 控制来实现不同的逻辑。
我正在考虑有一个 User 类和一个 AI 类来实现 Player 类以及随后的 getNextMove 方法。
这和我想的一样
interface Player {
...
getNextMove()
}
class User implements Player{
getNextMove(){
// Take user input
}
}
class AI implements Player{
getNextMove(){
// Decide next move automatically
}
}
但是,随着用户更改玩家,他们刚刚控制的玩家将需要切换回使用 AI 逻辑。我不认为这些类可以动态切换,我不能在这个 Object 结构之外思考或找到可以实现我想要的东西。非常感谢任何建议。
【问题讨论】:
-
委托给一个策略。比方说,每个玩家都有一个引擎,它可以是 AIEngine 或 UserEngine。切换时,改变播放器的引擎。
-
用你实际写作的语言思考。
标签: typescript oop inheritance