使用Java制作棋盘游戏的基础知识

时间:2015-08-20 16:03:37

标签: java swing jframe

在棋盘游戏应用程序中,我尝试了以下代码,以便当玩家的名字在两个方格上时,它会离开前一个方块:

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个方位,就不会从之前的方块中删除。我该怎么解决?谢谢。

我也不知道如何在玩家轮流之间切换。我在电路板上列出了他们的名字。首先,我希望在轮到他们的时候突出显示一个玩家的名字,其次,当他们的回合结束时,将其取消。我也想改变他们的分数(棋盘上的每个方格都有一个增加/减少分数的数字。我应该如何根据广场上的数字改变玩家的分数?)。当它不是一个玩家的回合时,他们在棋盘上的名字应该保持静止,并且轮到它的玩家的名字应该移动。为此,我需要从第一个标签“开始”的所有玩家名字开始,然后根据轮到它移动他们的名字。我不知道该怎么做。任何人都可以解释如何做到这一点吗?

1 个答案:

答案 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;,否则这将无法工作。您需要验证您的逻辑是否正确。