游戏结束后,我希望能够在屏幕上绘制“游戏结束”。我的老师希望我用自己的构造函数创建一个名为TxtEntity的新类,并从该图中绘制“ Game over”,但我在确定该怎么做时遇到问题。我正在使用MVC概念,并且尝试创建代码中所示的方法,但是它不起作用。而且即使我已经实现了TxtEntity,我的游戏控制器也无法实现该方法。
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import se.egy.game.model.Sprite;
public abstract class TxtEntity extends Sprite{
public TxtEntity(Image image, int x, int y, String text) {
super(null, x, y);
}
public void GameOver(Graphics g) {
g.drawString("GAME OVER", 2, 3);
g.setColor(Color.WHITE);
g.setFont(new Font("Arial", Font.BOLD, 20));
}
}
在这里我要实现游戏结束方法(上面写着TxtEntity。)
public void checkCollisionandRemove() {
for (int i = 1; i < entityList.size(); i++) {
if (entityList.get(i).collision(player)) {
entityList.remove(entityList.get(i));
}
}
if (entityList.size() == 1) {
//System.exit(1);
resetkeyDown();
player.setDirectionX(0);
player.setDirectionY(0);
TxtEntity.
}
}
当只剩下一个实体(玩家)时,我想在屏幕上说“游戏结束”。
答案 0 :(得分:0)
您需要将gameOver方法设置为“静态”,这样就无需为其创建对象(当前没有对象,因此无法调用该方法)。
private _currentVegBehaviorSubj = new BehaviorSubject<any>(undefined);
let carrot = { color: "Orange" };
_currentVegBehaviorSubj.next(carrot);
然后这样称呼它:
public static void gameOver(Graphics g) {
g.drawString("GAME OVER", 2, 3);
g.setColor(Color.WHITE);
g.setFont(new Font("Arial", Font.BOLD, 20));
}
还有一个小小的注释方法名称以小写开头,而新单词的每个首字母都以大写开头 示例:
methodNameOne
thisIsMethodTwo
答案 1 :(得分:0)
@ L.lsen
您的TxtEntity是一个抽象类。这意味着您无法单独实例化它。您必须扩展它。
您可以创建一个扩展抽象类TxtEntity的匿名类:
TxtEntity te = new TxtEntity(null, x, y, ""){};
或者您可以创建一个扩展抽象类的类。然后,实例化此类:
class GameOverEntity extends TxtEntity {
public GameOverEntity(x, y){
super(null, x, y, "");
}
}
...
GameOverEntity gameOver = new GameOverEntity(x, y);
我的建议是让您检查抽象类,接口和匿名类(以防您不想创建扩展抽象类的新类)。
让我知道这对您是否有意义。