【发布时间】:2012-11-09 22:36:22
【问题描述】:
我想在生命结束后在 pacman 游戏中显示 GameOver 图像。但是我调用paintGameOverScreen(Graphics g) 然后我需要初始化g。有没有其他方法可以做到这一点?
这是我的生活课
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
public class Lives{
private int lives;
public Lives() {
lives = 1;
}
public void removeLife() {
lives--;
if(lives==0){
System.out.println("END GAME");
paintGameOverScreen(g);
System.exit(0);
}
}
public void paintGameOverScreen(Graphics g) {
ImageIcon i = new ImageIcon("src\image");
Image image = i.getImage();
int x = 0;
int y = 0;
g.drawImage(image, x, y, 100,100,null);
}
public void paint(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(5*20, 25*20, 100, 30);
g.setColor(Color.BLACK);
String result = "Lives: " + lives;
g.drawString(result, 6*20, 26*20);
}
}
【问题讨论】:
-
“初始化g”是什么意思? g 变量在进入paint方法时应该已经被AWT初始化了。
-
而是保持游戏状态并根据它进行绘制
-
如果您希望可以使用屏幕外缓冲区(例如 BufferedImage),请对其进行绘制,然后在准备好后将其与 UI 重新同步
-
removeLife()方法中带有 if 语句的行是多余的,除非您可以添加生命。如果您只是删除了玩家唯一的生命,则无需检查生命是否等于 0。