首页 > 解决方案 > 如何在字符数组中打印字符串?

问题描述

我正在研究龟兔赛跑,一切正常,除了我想在兔子和乌龟处于同一位置时打印出“OUCH”。我的赛道是一个字符数组,所以我只能输入“O”,每当我尝试将其打印为字符串“OUCH”时,它都会将其打印为单独的新行。有没有办法在不破坏游戏流程的情况下打印“OUCH”,并将其输出到与其他所有内容不同的行上?

public static int turtlePosition = 0;        // Turtle location
public static int harePosition = 0;          // Hare location
public static char[] track = new char [70];  // Array for Track


public static void main(String[] args) {

    System.out.println("AND THEY ARE OFF!!");

    while (!gameOver()){

        for (int i = 0; i < track.length; i++){

            track[i] = '-';
        }

        Random random = new Random();
        int r = random.nextInt(10) + 1;

        turtleMove(r);
        hareMove(r);

        if (gameOver()){
            break;
        }

        track[turtlePosition] = 'T';
        track[harePosition] = 'H';

        if (turtlePosition == harePosition){
            String str = String.valueOf(track[turtlePosition]);
            str = "OUCH";
            System.out.println(str);
        }

        for (int i = 0; i < track.length; i++)
        {
            System.out.print(track[i]);
        }

        System.out.println();
    }

    if (turtlePosition >= 70 && harePosition >= 70){
        System.out.println("IT'S A TIE!!");
    }
    else if (turtlePosition >= 70){
        System.out.println ("TORTOISE WINS!!");
    }
    else {
       System.out.println ("HARE WINS!!");
    }

标签: java2d-games

解决方案


我不相信,但您可以将文本区域放在一边。

像这样:

代码更改:

        if (turtlePosition>=6 || harePosition>=6){
            turtlePosition = 7;
            harePosition = 7;
        }

        track[turtlePosition] = 'T';
        track[harePosition] = 'H';
        
        if (turtlePosition == harePosition){
            insertintotrack("OUCH |");
        }else {
            insertintotrack("     |");
        }

新功能:

public static void insertintotrack(String in)
{
    char[] info = in.toCharArray();

    for (int i = 0; i < info.length; i++) {
        track[i] = info[i];
    }
}

推荐阅读