我有一种游戏有两种模式:定时限制和股票限制(有点像粉碎兄弟)。在我的游戏循环中,名为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()在我的游戏循环?有点像铁路交换机。
例如:它应该在启动过程中绘制一个“ready-set-go”序列,在玩法期间玩家的统计数据,并且一旦比赛结束,它应该表示比赛获胜者。它也应该取决于游戏类型。例如:显示一个计时器,该计时器在库存匹配期间递增,但在计时匹配期间递减。
你可以提供不同的类,它有一个“绘制”方法,只需绘制特定实现所需的特征,然后根据需要更改使用哪个实例 – MadProgrammer
@MadProgrammer我想我知道它可能是这样做,但我试图找到一个不涉及新类的较低级别的解决方案。 – hjl
然后你总是需要做一些状态检查:P – MadProgrammer