我的任务是用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);
}
}
}
暂无答案!
目前还没有任何答案,快来回答吧!