2013-08-16 104 views
0

我只是一个初学者,在做了一段时间与游戏,所以产生生成随机精灵

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); 
     } 
    } 

} 

只有1球的问题,它就会落下。我想生成球随机从不同的x坐标落在帧

回答

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; 
    } 
    } 

你只需要重置ÿ当它离开屏幕时,否则它只是在不可见的情况下下降和下降,这是一个快速的解决方案,理想情况下你会使用对象并在屏幕外创建/销毁它们,这将使得随机随机下降1次,根据需要进行调整。

也请阅读这里一个游戏循环:
http://www.java-gaming.org/index.php?topic=24220.0

while (true) 

是一个非常糟糕的gameloop

+0

TX jrafferty的帮助,正如你说,我会与连杆还去尝试这些,如果出现任何问题,我会确保评论 –

+0

肯定,并不意味着听起来粗鲁;使用你的测试等是很好的,但是当你真的了解它时,有更好的方法可以更新在所有机器上运行得更好的游戏资产。我仍然在自己的工作。祝你好运 – jrafferty