【问题标题】:How to switch a boolean value of an object instantiated by a class? Javascript如何切换由类实例化的对象的布尔值? Javascript
【发布时间】:2018-04-28 19:19:00
【问题描述】:

我正在尝试在 2 名玩家之间实现基于回合的游戏,并且我有一个属性可以指示谁轮到了。

class Player{
  constructor(name){
    this.name = name;
    this.playerTurn = true;
  }
}

var p = new Player('mike');
var k = new Player('jeff');

除了在实例化后立即运行k.playerTurn = false;,有没有更优雅的方式在实例化时翻转玩家 k 的 playerTurn 属性?

【问题讨论】:

  • 使其成为构造函数参数
  • var k = new Player('jeff',false);这行不通
  • 为什么不行?
  • 我不知道如何回答你为什么它不起作用,因为这是我的问题......控制台记录两个玩家都会用 true 实例化他们
  • 显然你的构造函数需要constructor(name, isTurn) { ...; this.playerTurn = isTurn; }...

标签: javascript class properties boolean


【解决方案1】:

谁的回合不应该是玩家的属性,而是游戏状态的属性,例如:

class Game {
    constructor(players) {
        this.players = players;  // Player[]
        this.currentPlayer = players[0];
    }

    nextTurn() {
        // Or whatever your logic for rotating players is…
        this.players = this.players.concat([this.players.shift()]);
        this.currentPlayer = this.players[0];
    }
}

const game = new Game([new Player('jeff'), new Player('mike')]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2020-01-04
    相关资源
    最近更新 更多