我是新Java的,但我的问题可能是语言无关。 我有一个球员类,在我的游戏逻辑中,我有一个地图商店创建的球员。 我写一个方法 - getNext()
- 即下一个玩家回到我和它的工作原理就像一个魅力。但是在比赛中,淘汰的球员不能排队。所以我写了一个新方法 - getNextAlive()
- 应该返回下一个活着(!isLoser)播放器。如果没有任何失败者,getNextAlive()正在工作,但如果存在,程序将进入while循环并无限循环。在while循环我切换到下一个球员,相信未来还活着,但我认为while(p.checkLose())
不会受到影响,而在变化,永远给这个输出:尽管在声明的Java无限循环,使病情假
球员:allyozturk
我不知道为什么这种情况发生在通过这种方式,我应该怎么做才能跳过所有失明球员并获得下一个活着的球员? (顺便说一句,我使用libgdx ArrayMap,我的地图,因为未来的球员的顺序进行排序是importont我的游戏)
在游戏中使用:
currPlayer = currPlayer.getNextAlive();
这里我Player.java是:
public class Player{
private static int counter;
public static int alives;
private int uniqueId;
private String name;
private boolean isLoser;
.
.
.
private Player getNext(){
int index = MyGdxGame.players.indexOfKey(uniqueId);
if(++index < MyGdxGame.players.size)
return MyGdxGame.players.getValueAt(index);
else
return MyGdxGame.players.getValueAt(0);
}
public Player getNextAlive(){
Player p = getNext();
while(p.checkLose()){
p = getNext();
MyGdxGame.logger.error("player: " + p.getName()); // just for testing purpose
}
return p;
}
}
和加法的问题,从一些好奇到来,一些做最好的:它是完全恰当的使用方法,在播放器类返回播放器?
调试你的索引值。 –
你的'checkLose()'功能在哪里? – AsheraH
恕我直言,返回其他有效玩家的方法应该在你的'MyGdxGame'中,而不是'Player'本身。也许这可能会让事情变得更容易理解。 –