0

JFrame に 2 つの楕円が表示されるゲームがあります。1 つは a - s - d - w キーで制御され、もう 1 つは矢印キーで制御されます。これが私の実行方法です:

public void run() {
        while (animator != null) {
            repaint();

            player1.move(player1.direction);
            player2.move(player2.direction);
            try {  
                Thread.sleep(100);  
            } catch (InterruptedException e) {  
                break;  
            }  
        }
}

これが私の個々のプレーヤークラスです。これは、プレーヤー 1 クラスの paintComponent メソッドです。(プレイヤー 1 とプレイヤー 2 は同一です) 変数 shape、xPos、yPos、size、および Color はすべて問題ありません。(それらは値に関連付けられています)

public void paintComponent(Graphics g) { 
    Graphics2D g2 = (Graphics2D)g;

    switch(Shape) {
    case 1: Ellipse2D.Double ball = new Ellipse2D.Double(xPos, yPos, size, size);         
    g2.setPaint(Color);
    g2.draw(ball);
    g2.fill(ball);
    break;

    case 2: Rectangle2D.Double rectangle = new Rectangle2D.Double(xPos, yPos, size, size);
    g2.setPaint(Color);
    g2.draw(rectangle);
    g2.fill(rectangle);
    break;
    }   
}       

KeyController というクラスを使用して、楕円の方向を制御します。そのプログラムのサンプル部分を次に示します。残りは同じです(抜粋であることを忘れないでください):

public void keyPressed(KeyEvent e) {
    // Player 1 Left
    if(e.getKeyCode() == KeyEvent.VK_A){
        Player1.setDirection(270);
        System.out.println("A pressed");
    }

    // Player 1 Down
    if(e.getKeyCode() == KeyEvent.VK_S){
        Player1.setDirection(180);
        System.out.println("S pressed");
    }

    if(e.getKeyCode() == KeyEvent.VK_LEFT){
        Player2.setDirection(270);
        System.out.println("LEFT pressed");
    }

    if(e.getKeyCode() == KeyEvent.VK_DOWN){
        Player2.setDirection(180);
        System.out.println("DOWN pressed");
    }

プログラムの残りの部分は正常に実行されます。(keyTyped と keyPressed があります)

ここで私の質問は、プログラムを実行すると、1 つの楕円が表示され、a - s - d - w キーと矢印キーの両方のすべてのキーで楕円を制御できるということです。

さらにコードが必要な場合は、私に尋ねてください。(メインメソッドがあり、正常に動作します。)

Ellipse をコントロールに応答させる方法は?

4

1 に答える 1