【发布时间】:2017-10-03 08:34:23
【问题描述】:
我正在用 java 创建一个 galaga 克隆。我正在尝试了解游戏循环的基础知识,但我有几个问题/疑问。我有一个更新方法可以更改所有游戏对象的位置,我有一个绘制方法可以绘制所述对象的所有更新位置。我应该调用paint() 方法吗?如何重新绘制对象(清除屏幕然后重新绘制所有内容)?另外,以固定速率调用我的 update() 方法的最佳方法是什么?感谢您的任何意见。
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);
}
【问题讨论】:
-
您拨打
repaint()或切换到active rendering -
如果你只是想了解Swing,你做的很好。但是,如果您真的打算制作游戏,Swing probably won't work well for you. 有better options for games.