java - 两个玩家的分屏 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
}
}
解决方案
推荐阅读
- php - Laravel Horizon 限制总进程数
- android-studio - Android Studio Network Profiler Retrofit 2-网络分析数据不可用
- f# - 将 F# 结构传递给 C#
- xml - 为什么 appendChild 给我运行时错误 438(对象不支持此属性或方法)?
- php - Yii2上传的图片不显示
- routing - Next.js 未路由到同一子文件夹中的页面
- visual-studio-code - 如何使用 Microsoft VSCode 隐藏/取消隐藏评论?
- c# - 创建新数据表会引发“Sytem.runtime.Interopservices.COMException”
- bash - 退出代码不会根据按下的按钮而改变,用于 bash 的对话框
- c# - 在 Visual Studio 2019 中注册自定义签入策略