2016-05-19 4 views
-1

私はJavaのグラフィックスを初めて使用しており、現在ゲームを行っています。本質的に、上昇する気泡があり、ユーザはそれらの上にマウスを動かすことによってそれらをポップしなければならない。配列内のオブジェクトのインスタンス変数を返す方法

私はすでに泡を作っていますが、今は衝突検出のために、xと座標と円の直径を見つけることができる必要があります。 Bubblesオブジェクト配列から各バブルのインスタンス変数を返すにはどうすればよいですか?下のコードを見ることができます。コーディングエラーが見つかった場合は、私にお知らせください。

ゲームクラス:

public class Game extends JPanel{ 

    public static final int WINDOW_WIDTH = 600; 
    public static final int WINDOW_HEIGHT = 400; 

    private boolean insideCircle = false; 
    private static boolean ifPaused = false; 
    private static JPanel mainPanel; 
    private static JLabel statusbar; 
    private static int clicks = 0; 
    //Creates a Bubbles object Array 
    Bubbles[] BubblesArray = new Bubbles[5]; 

    public Game() { 

    //initializes bubble objects 
    for (int i = 0; i < BubblesArray.length; i++) 
     BubblesArray[i] = new Bubbles(); 
    } 

public void paint(Graphics graphics) { 

    //makes background white 
    graphics.setColor(Color.WHITE); 
    graphics.fillRect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); 

    //paints square objects to the screen 
    for (Bubbles aBubblesArray : BubblesArray) { 
    aBubblesArray.paint(graphics); 
    } 
} 

public void update() { 

//calls the Square class update method on the square objects 
for (Bubbles aBubblesArray : BubblesArray) aBubblesArray.update(); 
} 

    public static void main(String[] args) throws InterruptedException { 
    statusbar = new JLabel("Default"); 
    Game game = new Game(); 

    game.addMouseMotionListener(new MouseAdapter() { 
     @Override 
     public void mouseMoved(MouseEvent e) { 
      statusbar.setText(String.format("Your mouse is at %d, %d", e.getX(), e.getY())); 
      } 

     public void mouseExited(MouseEvent e){ 
     ifPaused = true; 
     } 

     public void mouseEntered(MouseEvent e){ 
     ifPaused = false; 
     } 

    }); 

    JFrame frame = new JFrame(); 

    frame.add(game); 

    frame.add(statusbar, BorderLayout.SOUTH); 
    frame.setVisible(true); 
    frame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setTitle("Bubble Burst"); 
    frame.setResizable(false); 
    frame.setLocationRelativeTo(null); 

    while (true) { 
     if (!ifPaused){ 
     game.update(); 
     game.repaint(); 
     Thread.sleep(5); 
     } 
    } 
}  
} 

バブルクラス:配列内の各バブルによる

public class Bubbles{ 

    private int circleXLocation; 
    private int circleSize; 
    private int circleYLocation = Game.WINDOW_WIDTH + circleSize; 
    private int fallSpeed = 1; 
    private int color = (int) (4 * Math.random() + 1); 
    Random rand = new Random(); 
    private int whereMouseX; 
    private int whereMouseY; 
    public int generateRandomXLocation(){ 
     return circleXLocation = (int) (Game.WINDOW_WIDTH * Math.random() - circleSize); 
    } 

    public int generateRandomCircleSize(){ 
     return circleSize = (int) (50 * Math.random() + 30); 
    } 

    public int generateRandomFallSpeed(){ 
     return fallSpeed = (int) (5 * Math.random() + 1); 
    } 

    public void paint(Graphics g){ 
     if (color == 1) g.setColor(new Color(0x87CEEB)); 
     if (color == 2) g.setColor(new Color(0x87CEFF)); 
     if (color == 3) g.setColor(new Color(0x7EC0EE)); 
     if (color == 4) g.setColor(new Color(0x6CA6CD)); 
     g.fillOval (circleXLocation, circleYLocation, circleSize, circleSize); 
    } 

    public Bubbles(){ 
     generateRandomXLocation(); 
     generateRandomCircleSize(); 
     generateRandomFallSpeed(); 
    } 

    public void update(){ 

     if (circleYLocation <= - circleSize){ 
      generateRandomXLocation(); 
      generateRandomFallSpeed(); 
      generateRandomCircleSize(); 
      circleYLocation = Game.WINDOW_HEIGHT + circleSize; 
     } 

     if (circleYLocation > - circleSize){ 
      circleYLocation -= fallSpeed; 
     } 
    } 

    public int getX(){ 
     return circleXLocation; 
    } 
    public int getY(){ 
     return circleYLocation; 
    } 

    public int getCircleSize(){ 
     return circleSize; 
    } 
} 

答えて

-2

ループとあなたはバブルクラスで作成したパブリックgetメソッドにアクセスします。

for (Bubble b : BubblesArray) 
{ 
    int x = b.getX(); 
    int y = b.getY(); 
} 
+0

なぜダウン票...、彼らはあなたの現在のマウスの位置と衝突しているかどうかを確認するために何かなどを確認してください?これは、OPが求めているものではありませんか? –

0

xとyの値をコンストラクタに含めるように泡を設定します。

Public Bubble(float x, float y, int circleSize){ 
    // initialize variables here 
} 

その後

if(e.getX() == this.getX() && e.getY() == this.getY()){ 
    // do something 
} 
関連する問題