我只是一名初学者并且正在玩游戏并遇到问题
package minigames;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class fallingball extends JPanel {
int x = 250;
int y = 0;
private void moveBall() {
y = y + 1;
}
public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(Color.black);
g2d.fillOval(x, y, 30, 30);
}
public static void main(String[] args) throws InterruptedException{
JFrame f = new JFrame("Falling Ball");
fallingball game = new fallingball();
f.add(game);
f.setSize(500, 500);
f.setResizable(false);
f.setLocationRelativeTo(null);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
while (true) {
game.moveBall();
game.repaint();
Thread.sleep(10);
}
}
}
只生成一个球并且它会下降。我想生成随机落下的球,从框架中的不同x坐标开始我怎么做呢
答案 0 :(得分:0)
对于你想要的随机x
import java.util.Random();
并使用
Random rnd = new Random();
x = rnd.nextInt(<HIGHEST X VALUE POSSIBLE>)+1;
这将产生从0到最大X值的随机整数并将其分配给x。注意(它是+1,因为rnd.nextInt(n)创建一个从0到n-1的值。
为了让更多的球继续下降,请在循环中尝试:
while (true) {
game.moveBall();
game.repaint();
Thread.sleep(10);
if (y >= <MAX y>) {
y = 0;
x = rnd.nextInt(<max x>)+1;
}
}
你只需要在屏幕关闭时重置y,否则它只是越来越低而不可见。这是一个快速的解决方案。理想情况下,你会在屏幕外使用对象并创建/销毁它们,这将使得只有1个随机下降。根据需要进行调整。
另请阅读此处了解游戏循环:
http://www.java-gaming.org/index.php?topic=24220.0
while (true)
是一个非常糟糕的游戏循环