gpt4 book ai didi

Java 图形 - 游戏的各个阶段

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:07 24 4
gpt4 key购买 nike

这是最近一直困扰着我的话题。

在 JFrame 中创建游戏时,您想使用 paintComponent() 方法将图形添加到 JPanel,您将如何为游戏提供不同的阶段?哪个最适合性能?

我能想到的两种方式是:

  1. 添加和删除包含自己的 paintComponent() 方法和计时器的面板。游戏的每个阶段(级别等)将使用不同的面板。
  2. 将所有内容都放在一个面板或框架中,并有许多 boolean 值和 if 语句。例如,如果游戏结束,将 boolean 值更改为 true,并在 paintComponent() 方法中,有一个 if 语句,其中显示 if(gameover) 和然后为游戏的这个阶段绘制图形。

或者还有其他更好的方法吗?

最佳答案

“放弃所有希望,你们这些进入 [through Swing to create games] 的人!”

为了回答您的问题,JPanel 只是一个可以用来绘画的表面,就像一 block 黑板或一张纸。它们与阶段或其他任何东西无关,只是作为您可以绘制的东西以及其他子组件的容器。

要解决特定于游戏的问题,我建议您不要浪费时间使用 Swing 组件来构建游戏界面。虽然这是可能,但您将遇到一堆性能问题,这些问题只会耗尽您的时间。根据你的问题,你已经在考虑像定时器这样的低级东西来安排事情,并覆盖 paintComponent() 方法 - 这是一个非常常见的错误,也是许多失败项目花费时间的道路只是为了发现这不是最好的方法。

如果您的问题实际上是一条您可以看到的森林中的路径,您会注意到以下几点:

  • 它被很好地践踏(因为它似乎是最直接的方法)
  • 指日可待的是几个尖锐的性能死坑,以及晦涩难懂的非跨平台兼容调整
  • 你必须弄清楚如何使用 Swing 的绘画管理器来做你想做的事情,而在大多数情况下,对于大多数游戏来说,你想要直接、确定性地控制你的渲染管道/过程
  • 它充斥着试图将 Swing 用于游戏的项目主体,出于奇怪(和愚蠢)的原因,例如,“我想构建一个只使用标准 Java 库的游戏。”好吧,标准库很好,但它的核心是设计用于解决业务问题,并且非常擅长服务器和网络软件等。如果您至少没有使用一些 gamedev 库,您可能会错过使用正确的工具来完成正确的工作。 Swing 绝对不是为游戏使用而构​​建的,因为它基本上不满足游戏开发人员的需求,除非您谈论的是用于构建和编辑关卡的桌面应用程序/工具以及诸如此类的东西.

相反,使用类似 Slick2D 的东西(对于 2D 游戏),或 jMonkeyEngine用于 3D shuffle。这些库是专门为构建游戏而设计的,并且将使您不必重新发明众所周知的轮子,只是为了让您的游戏开始运行。他们还有自己的社区,可以帮助您解决特定于图书馆的问题。

最重要的是,他们已经解决了一些最棘手的跨平台问题,比如处理各种版本的 OpenGL,以及我敢打赌你不会真正关心的其他技术细节。那天,你真正想要的是,“嘿,给我一个[任意分辨率],图形加速表面来绘制,不要让它变得复杂!”

关于Java 图形 - 游戏的各个阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com