我如何将游戏循环放入我的代码中?
Posted
技术标签:
【中文标题】我如何将游戏循环放入我的代码中?【英文标题】:How would I fit a game loop into my code? 【发布时间】:2020-11-26 11:25:04 【问题描述】:我正在用 Java 创建一个 2D 滚动游戏。我确实有使用 javascript、html、css 和 node.js 在网络上制作游戏的经验,所以我知道几乎所有游戏都有一个更新所有内容的主循环。问题是,我想不出一种在我的代码中实现游戏循环的方法。这是我的代码:
import javax.swing.*;
public class Main
public static boolean isRunning = true;
public static void main(String[] args) throws InterruptedException
JFrame frame = new JFrame("Oxygen - Version 1.0");
JPanel panel = new Panel();
frame.setSize(1000, 500);
frame.setResizable(false);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
import java.awt.*;
import javax.swing.*;
public class Panel extends JPanel
public void paint(Graphics graphics)
this.setBackground(Color.BLACK);
graphics.setColor(Color.BLUE);
graphics.fillRect(0, 0, 100, 100);
这段代码运行良好,但游戏循环在这段代码中的位置以及运行频率如何?
【问题讨论】:
如果你没有动态发生、没有渲染、没有物理、没有定时游戏逻辑等,那么就不需要/放置游戏循环。 好的,举个例子,如果我想将屏幕上的方块从左向右移动,那么游戏循环在哪里? 我认为在这种情况下,swing 并不是最好的选择。您不能在 ui 线程中进行循环。然后更容易通过事件来做到这一点。但是有一个在摇摆中制作动画的例子***.com/questions/21247776/… 感谢您的评论!如果我不使用 swing,那我如何在 JPanel 上绘制图像和形状? JPanel 是 swing 的一部分。我建议使用游戏库。如果你还用什么swing那么你需要创建单独的线程来更新游戏对象(它可以只是一个数组)然后调用repaint然后休眠一段时间。 【参考方案1】:在你的主对象中实现一个while循环,它将无限地迭代直到你指定退出。然后您的游戏对象将在循环内更新
【讨论】:
感谢您的回复!我将如何递归调用paint方法?它需要一个图形参数。 您可以拨打repaint()
哦,太好了!非常感谢!以上是关于我如何将游戏循环放入我的代码中?的主要内容,如果未能解决你的问题,请参考以下文章