生成随机精灵



我只是一个初学者,在玩游戏时遇到了一个问题

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坐标随机落下的球,我该怎么做呢

对于你想要的随机x

import java.util.Random();

并使用

Random rnd = new Random();
x = rnd.nextInt(<HIGHEST X VALUE POSSIBLE>)+1;

这将生成一个从0到最大X值的随机整数,并将其分配给X。注意(它是+1,因为rnd.nextInt(n)创建了一个从零到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)

是一个相当糟糕的游戏循环

最新更新