【发布时间】:2016-05-01 21:11:46
【问题描述】:
我的游戏有两种模式:限时限时和限时限时(有点像粉碎兄弟)。在我的游戏循环中,调用了一个名为 renderGame() 的方法,它会更新移动对象的显示坐标,然后调用 repaint()。
@Override
public synchronized void paint(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
//Background Image
g2d.drawImage( displayBackground, 0, 0, null );
//Stage Image
g2d.drawImage( displayMap, 0, 0, null );
//Players Images
for( Player p: players ){
if( p.getPlayerNumber() == 1 )
g2d.drawImage( displayMario, p1XDisplayCoord, p1YDisplayCoord, null);
else
g2d.drawImage( displayLuigi, p2XDisplayCoord, p2YDisplayCoord, null);
}
//Not implemented yet
drawHUD( g2d );
g2d.dispose();
}
我的问题是:我怎样才能使 drawHUD() 方法根据比赛中的当前进程绘制不同的东西,而不必在每次调用 renderGame() 时测试定义该状态的条件我的游戏循环?有点像铁路道岔。
例如:它应该在启动过程中绘制一个“准备就绪”序列,在游戏过程中绘制玩家统计数据,并且应该在比赛结束后指示比赛获胜者。它也应该取决于游戏类型。例如:显示一个计时器,该计时器将在股票匹配期间递增,但在定时匹配期间递减。
【问题讨论】:
-
您可以提供具有“draw”方法的不同类,该方法仅绘制特定实现所需的功能,然后您可以根据需要更改使用的实例
-
@MadProgrammer 我想我知道可以这样做,但我试图找到一个不涉及新类的较低级别的解决方案。
-
那么你总是需要做一些状态检查:P
-
@MadProgrammer 我明白了。
标签: java optimization graphics game-loop