1

私はJavaゲームプログラミングが初めてです。いくつかのチュートリアルに従い、いくつかのビデオを見ました。アプリをロードする 10 回に 1 回グラフィックスが表示されるため、明らかに何か間違ったことをしています。

ゲームのコンセプトはサッカーのプレイブック。私の目標は、さまざまなシナリオが存在する場合に、フィールドのどの部分にいるべきかを 8 歳の子供に教えることです。

IDE として Eclipse を使用しています。以下は、クラスと関連メンバーの概要です。以下に示すクラスは、フィールドとフィールド上にいくつかの線を描画するために使用されます。

注: この投稿のサイズを最小限に抑えるために、多くのロジックが削除されています。さらに情報が必要な場合はお知らせください。


public class SoccerPlaybook {

  public static void main(String[] args) {
    new SoccerPlaybook();
  }

  public SoccerPlaybook() {
    JFrame frame = new JFrame();
    frame.add(new Game(this));
  }
}

public class Game extends JPanel {

  public Game(SoccerPlaybook soccerPlaybook) {
    this.soccerPlaybook = soccerPlaybook;
  }

  public void paintComponent(Graphics g) {      
    field.paintComponent(g);
  } 
}

public class Field extends JPanel {

  public Field(Game game) {
    this.game = game;
  }

  public void paintComponent(Graphics g) {
    g.setColor(Color.GREEN);
    g.fillRect(0, 0, game.getSoccerPlaybook().getWidth(), game.getSoccerPlaybook().getHeight());

    g.setColor(Color.WHITE);
    g.drawLine(200, 50, 400, 50);
    g.drawLine(200, 300, 400, 300);
    g.drawLine(200, 50, 200, 300);
    g.drawLine(325, 100, 400, 100);
    g.drawLine(325, 250, 400, 250);
    g.drawLine(325, 100, 325, 250);
  } 
}

ペイントとペイントコンポーネントを使用してみました。どちらも同じ結果になるようです。

助けてくれてありがとう。

4

1 に答える 1

1

私はあなたがする必要があると思います:

frame.pack();
frame.setVisible(true);

これにより、フレームがレイア​​ウトされ、表示されるようになります。Game JPanel を追加した直後に行う必要があります。

ゲーム JPanel の優先サイズを設定する必要がある場合もあります。その場合は、次のようなものを Game コンストラクター内に配置します。

this.setPreferredSize(new Dimensions(600, 400));
于 2013-03-28T01:03:03.707 に答える