1

我需要打印

......e......                
..e..........                
........e....                


.....iAi.....

其中 e 是一个位置的敌人,所以我用改变位置替换了一个点,0 分别是左侧和右侧的中心边界 -6 和 6。而 iAi 是有 2 把枪的玩家,所以我必须更换 3 个“。” 与 2 i 和 1 A 到目前为止,我对敌人的了解是

String asd = ".............";
    char cas;
    if ((isDead()== true)|| (justHit=true))
    cas = 'x';
    else 
    cas ='e';
    String wasd = asd.substring(0,position-1)+cas+asd.substring(position +1);
    return wasd;

但它没有在正确的地方替换

4

3 回答 3

1

试试这个,也许会有所帮助

    String s1 = ".............";
    String s2 = "xx";
    int p = 1;
    String s3 = s1.substring(0, p)  + s2 + s1.substring(p + s2.length());
    System.out.println(s1);
    System.out.println(s3);

输出

.............
.xx..........
于 2013-09-22T16:58:21.927 回答
1

使用字符串意味着在每个循环中重新创建一定数量的对象。使用 char[] 应该会显着降低占用空间:

    private char[] afd = {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'};
    private int prevPos = 0;

    public String placeEnemy(int newPos, boolean dead, boolean justHit) {
        afd[prevPos] = '.';
        afd[newPos] = 'e';
        prevPos = newPos;
        return afd
    }
于 2013-09-22T17:03:15.637 回答
1

在上面的代码中 使用asd.substring(0, position)而不是。asd.substring(0, position - 1)

于 2013-09-22T17:03:57.080 回答