2013-08-16 107 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