在java控制台中创建雪花

fnatzsnv  于 2021-06-26  发布在  Java
关注(0)|答案(0)|浏览(245)

我的任务是用java创建一个程序,在大学给我们的控制台上显示下雪。我从在屏幕顶部创建随机雪花开始,这些雪花应该向下移动,直到它们碰到控制台的底部。
我的想法是创建一个表示控制台字段(80x25)的二维布尔数组,然后通过嵌套for循环遍历该数组,每次字段为真时打印“*”,然后将当前字段设置为假,将下一个字段(垂直)设置为真,这样看起来雪花正在向下移动。
不幸的是,虽然它一次只显示一片雪花,但从上到下都进入了边界外异常。
它应该产卵一个雪花,移动它下来2或3线,然后产卵下一个等。
我已经想了至少两天了,但我就是没办法解决:/

import java.awt.*;

public class Snow {

public static final int WIDTH = 80;
public static final int HEIGHT = 25;

public static void checkSnowflakes(boolean[][] snow) {

    for (int i = 0; i < WIDTH; i++) {
        for (int j = 0; j < HEIGHT; j++) {
            if (snow[i][j]) {
                Console.gotoXY(i, j);
                Console.write("*");
                Console.wait(50);
                snow[i][j + 1] = true;
            }
            snow[i][j] = false;
            if (!snow[i][j]) {
                Console.gotoXY(i, j);
                Console.write(" ");
            }
        }
    }
}

public static void main(String[] args) {

    boolean[][] snow = new boolean[WIDTH][HEIGHT];

    Console.showCursor(false);
    Console.setBackground(Color.black);

    // run endlessly

    while (true) {
        // Generate new Snowflakes at the top of the console
        int rnd = (int) (Math.random() * 80);
        snow[rnd][0] = true;

        checkSnowflakes(snow);

    }
}
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题