Java (学校のプロジェクト) でゲームを作成しようとしていますが、次の設定があります。
JFrame で拡張されたメイン クラス、JPanel で拡張された「ゲーム」クラス。
このメイン クラス内から、クラス 'Player' とクラス 'Map' を呼び出します。クラス 'Map' には、2 つのサブクラス 'Blocks' と 'Bombs' が存在します。
しかし、私は疑問に思っています..このすべてのクラスのペイントメソッドを同じ JPanel (クラス Game) にペイントするにはどうすればよいですか?
私はすべてのクラスにメソッド「public void paint(Graphics g)」を与え、ペイントを行いました..しかし、プログラムを実行すると、サブクラスのペイントではなく、クラス「ゲーム」のペイントのみが表示されます。
これを実装するにはどうすればよいですか?
例として、コードを次のように縮小しました。
メインクラス:
BomberGame game = new BomberGame();
add(game);
setSize(400, 400);
setTitle("Bomber");
setDefaultCloseOperation(EXIT_ON_CLOSE);
this.show();
}
public static void main(String[] args) {
BomberB1 main = new BomberB1();
}
}
ゲームクラス:
package bomberb1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.ArrayList;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class BomberGame extends JPanel {
public BomberGame() {;
BomberMap map = new BomberMap(this);
}
public void paint(Graphics g) {
g.drawRect(10, 10, 10, 10);
g.setColor(Color.red);
g.fillRect(10, 10, 10, 10);
}
}
マップ クラス:
package bomberb1;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;
import javax.swing.SwingUtilities;
public class BomberMap{
BomberGame game;
public BomberMap(BomberGame game) {
this.game = game;
}
public void paint(Graphics g) {
g.drawRect(30, 30, 20, 20);
}
}