首页 > 解决方案 > 两个玩家的分屏 Java 2D 游戏 Canvas 和 JFrame

问题描述

我第一次尝试 Java 中的 2D 两人游戏。我遇到的问题是我试图将窗口分成两半,以便两个人可以互相玩游戏。我已经成功地使用 GridLayout 分割了屏幕,但后半部分全是白色的。我不能使用add.frame(game);两次来显示游戏两次吗?否则,窗口在未拆分时显示正常,并且我能够实现相机对象来跟踪玩家 1。我提供了 Game() 和 Window() 以供参考。

public class Game extends Canvas implements Runnable {
    private static final long serialVersionUID = 1L;
    private boolean isRunning = false;
    private Thread thread;
    private Handler handler;
    private Camera camera;
    private SpriteSheet ss;

    private BufferedImage level = null;
    private BufferedImage sprite_sheet = null;
    private BufferedImage floor = null;

    public Game() {
        handler = new Handler();
        new Window(1000,563, "GameObjects.Tank Wars", this);
        start();

        camera = new Camera(0,0);
        this.addKeyListener(new KeyInput(handler));


        BufferedImageLoader loader = new BufferedImageLoader();
        level = loader.loadImage("/Tank_Level.png");
        sprite_sheet = loader.loadImage("/sprite_sheet.png");

        ss = new SpriteSheet(sprite_sheet);
        floor = ss.grabImage(4,2,32,32);

        loadLevel(level);
    }
}

public class Window {
public Window(int width, int height, String title, Game game) {
    JFrame frame = new JFrame(title);

    // size of frame
    frame.setSize(new Dimension(width, height));
    GridLayout layout = new GridLayout(2,1);
    frame.setLayout(layout);

    frame.add(game); //add in game class to frame
    frame.add(game);

    frame.setResizable(false); //cannot resize window
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null); //when game started box will start center of window
    frame.setVisible(true); //lets us see window
}

}

标签: javaswingcanvas2d-games

解决方案


推荐阅读