1

我创建了一个名为multiplay.

private boolean multiplay;

在我里面public Game()我有:

// make a player
player = new Player(this);
if(multiplay == true) {
   player2 = new Player(this);
}

在实际的类文件中,我创建了一个方法:

public void startMutliPlayer() {
   multiplay = true;
}

我想要做的是,当startMultiPlayer被调用时,它将布尔值设置multiplaytrue,因此,两个玩家将被添加到框架中,而不是一个。如果未调用“startMultiPlayer”,则只会添加一名玩家。

目前,当我跟注时,它只增加了一名玩家而不是两名startMultiPlayer

更新:

能够使用以下代码解决此问题:

// Make Players (Single & MultiPlayer)
        if (multiplay == false) {
            player = new Player(this);
            player.setPosition(startPosition);
            player.move(new Vec2(-210, 0));
            multiplay = true;
        } else if(multiplay == true) {
            player = new Player(this);
            player.setPosition(startPosition);
            player.move(new Vec2(-210, 0));player2 = new Player(this);
            player2.setPosition(startPosition);
            player2.move(new Vec2(-150, 0));
            multiplay = false;
        }

public static void startMutliPlayer() {
        multiplay = false;
    }

谢谢

4

3 回答 3

0

在你的类中创建一个方法Game,即

public void setMultiplay(boolean multiplay) {
  this.multiplay = multiplay; // scope
  if (multiplay) {
    player2 = new Player(this);
  }
}
于 2013-04-06T12:11:17.833 回答
0

您在哪个 Game 类的对象上调用 startMultiPlay?因为它总是在 Game 构造函数被调用之后被调用,所以它不会工作 - 因为当 Game ctor 被调用时,multiplay 将是 false。

解决这个问题的方法是

private boolean multiplay;

需要改为

private static boolean multiplay;

还要将 startMultiPlayer 设为静态并在创建 Game 对象之前调用它。

另一种方法是不在 Game 的 ctor 中创建 Player。必须方法 startMultiPlayer 和 startSinglePlayer - 在这些方法中分别创建一个或两个 Player 对象。

于 2013-04-06T12:11:27.667 回答
0

我猜你是在 Game 类的一个对象上调用 startMultiPlayer() 方法。但是,构造函数是在 Java 中创建对象时要执行的第一件事。游戏游戏 = 新游戏();game.startMultiPlayer(); 将按此顺序执行以下行:

// make a player
player = new Player(this);
if(multiplay == true) {
   player2 = new Player(this);
}
multiplay = true;

这意味着在您检查它是否为真后将多重播放设置为真。因此,您仍将处于单人模式。

在调用(或不调用)该startMultiPlayer()方法后尝试检查多重播放是否为真。

另请注意,您可以简单地编写if(multiplay)而不是if(multiplay==true)因为 Java 中的 if 语句只能采用布尔值。但这是个人喜好,无论如何这可能会自动优化。

于 2013-04-06T12:11:35.503 回答