在棋盘游戏应用程序中,我尝试了以下代码,以便当玩家的名字在两个方格上时,它会离开前一个方块:
for (int e = 0; e < squares.length; e++) {
//squares is an
//array containing all the labels that players
//play on
tmp = squares[e].getText();
//this is supposed to be the text the squares
//originally had without
//any player's name
for (int i = 0; i < 6; i++) {
//i = 6 because the die has 6 numbers. If a
//square 1-6 before another
//square has the player's name it should be removed from it.
if (squares[e].getText().equals(plyr1 + tmp)) {
squares[e - i].getText().replaceAll(tmp + plyr1, tmp);
}
}
}
问题是球员的名字一旦进入前方的1-6个方位,就不会从之前的方块中删除。我该怎么解决?谢谢。
我也不知道如何在玩家轮流之间切换。我在电路板上列出了他们的名字。首先,我希望在轮到他们的时候突出显示一个玩家的名字,其次,当他们的回合结束时,将其取消。我也想改变他们的分数(棋盘上的每个方格都有一个增加/减少分数的数字。我应该如何根据广场上的数字改变玩家的分数?)。当它不是一个玩家的回合时,他们在棋盘上的名字应该保持静止,并且轮到它的玩家的名字应该移动。为此,我需要从第一个标签“开始”的所有玩家名字开始,然后根据轮到它移动他们的名字。我不知道该怎么做。任何人都可以解释如何做到这一点吗?
答案 0 :(得分:0)
squares[e-i].getText().replaceAll(tmp+plyr1,tmp);
String对象是不可变的。您需要将其重写为
squares[e-i].setText(squares[e-i].getText().replaceAll(tmp+plyr1,tmp));
编辑:在您的代码中,您正在匹配字符串
plyr1+tmp
但是在代码中,您正在尝试替换
tmp+plyr1
除非将tmp或plyr1定义为&#34;&#34;,否则这将无法工作。您需要验证您的逻辑是否正确。