我正在用java创建一个galaga克隆。我想了解游戏循环的基础知识,并且有几个问题/问题。我有一个更新方法可以改变所有游戏对象的位置,我有一个绘制方法可以绘制所有对象的所有更新位置。我是否应该调用paint()方法?如何重新绘制对象(清除屏幕然后再绘制一切)?另外,以固定速率调用update()方法的最佳方式是什么?感谢您的任何意见。Java图形/基本游戏循环
public Galaga() throws IOException
{
//set the background
setBackground(Color.BLACK);
//create a controller
c = new Controller();
addKeyListener(c);
setFocusable(true);
//create a player
player = new Ship(40,50);
running = true;
}
public void paint(Graphics g)
{
super.paint(g);
}
//game loop
public void run()
{
while(running)
{
draw(getGraphics());
if(c.right())
player.move(1, 0);
}
}
//update logic
public void update()
{
}
//renders all objects
public void draw(Graphics g)
{
player.draw(g);
}
你叫'重绘()'或切换到[活跃渲染(https://docs.oracle.com /javase/tutorial/extra/fullscreen/rendering.html) –
如果你只是想了解Swing,你在做什么是好的。但是,如果你真的打算制作游戏,[Swing可能不适合你。](https://pavelfatin.com/low-latency-painting-in-awt-and-swing/)是[更好的游戏选项]。(https://www.lwjgl.org/) – markspace