-3

我有这个游戏,一个球落在屏幕上。问题是,球只会向右。我认为问题在于从 LR 方法到主游戏循环的过渡。我创建了一个变量,它采用 LR 方法并在每秒刷新和清除画布的循环中运行它。这是代码:

package cats;

public class BeanDrop {

public static void main(String[] args) throws InterruptedException {
    mainGameLoop();
    }
public static void mainGameLoop() throws InterruptedException{
    double x = .5;
    double y = .9;
    while (true){
    int choice = LR();
    arena();
    ball(x , y);
    if (choice == 1){
        // right outcome
        x = x + .1;
    }
    else if(choice == 2){
        //left outcome
        x = x -.1;
    }
    y = y - .1;
    Thread.sleep(1000);
    StdDraw.clear();
    }
}
public static void arena(){
    StdDraw.picture(.5, .5, "balldrop.jpeg");
}

private static int LR(){
    int choice = ((int) Math.random() * 2 + 1);
    return choice;
}
public static void ball(double x , double y){
    StdDraw.picture(x, y, "ball.jpeg",.05,.05);
}
}
4

1 回答 1

1

看看这个: 如何在 Java 中生成特定范围内的随机整数?

它所说的基本上是用它来获得一个随机数:

Random rand;

// nextInt is normally exclusive of the top value,
// so add 1 to make it inclusive
int randomNum = rand.nextInt((max - min) + 1) + min;

return randomNum;

所以对你来说,你可以使用这个:

private static int LR(){
    int choice = rand.nextInt(2) + 1;
    return choice;
}

编辑:您必须创建一个 Random 实例并将其命名为 rand 在您的代码顶部:

private Random rand;

在初始化游戏循环之前有这个:

rand = new Random();
于 2016-02-04T23:07:04.603 回答