gpt4 book ai didi

typescript - 如果不能动态更改对象的类怎么办?

转载 作者:搜寻专家 更新时间:2023-10-30 21:44:54 25 4
gpt4 key购买 nike

我正在用 typescript 制作一个小足球游戏,希望允许用户一次控制一名球员,但他们可以切换到控制另一名球员。我有一个包含属性和 getNextMove 方法的播放器类,无论播放器是由用户控制还是由 ai 控制,都需要该方法。但是,我希望 getNextMove 方法根据播放器是由用户还是由 ai 控制来实现不同的逻辑。

我正在考虑拥有一个 User 类和一个实现 Player 类以及随后的 getNextMove 方法的 AI 类。

这是我的想法

interface Player {
...
getNextMove()
}

class User implements Player{
getNextMove(){
// Take user input
}
}

class AI implements Player{
getNextMove(){
// Decide next move automatically
}
}

然而,当用户改变玩家时,他们刚刚控制的玩家将需要切换回使用 AI 逻辑。我不认为这些类可以动态切换,我无法在这个对象结构之外思考或找到可以实现我想要的东西。非常感谢任何建议。

最佳答案

我同意 JB Nizet 的观点。

使用strategy模式。

class UserState {
// properties
}

class User {
constructor(){
this.state = new UserState();
}

activateUserControl(){
this.moveStrategy = new UserControlStrategy(this.state);
}

activateAI(){
this.moveStrategy = new AIControlStrategy(this.state);
}

getNextMove(){
this.moveStrategy.nextMove();
}
}

关于typescript - 如果不能动态更改对象的类怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57265026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com