生成随机精灵

时间:2013-08-16 13:15:43

标签: random sprite

我只是一名初学者并且正在玩游戏并遇到问题

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坐标开始我怎么做呢

1 个答案:

答案 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)

是一个非常糟糕的游戏循环