所以我的班级周二正在进行一场坦克大战,我们每个人都在为坦克设计逻辑。我们的老师设计了API和我们需要的一切,我们只需要使用他给我们的东西,但是,他鼓励我们“作弊”。
有一种睡眠方法会导致坦克在做很多动作后暂停,我想知道如何覆盖它,以便跳过或消除睡眠。
void sleep(int ns) {
try {
Thread.currentThread().yield();
Thread.currentThread().sleep(ns*100);
Thread.currentThread().yield();
} catch(InterruptedException ie) {
;
}
}
另外,我正在考虑找到一种方法,我的坦克在被击中时不会死,但我也没有成功,有两种方法影响游戏的这个方面,即checkDead()和kill( ):(假设dead是一个值为false的布尔值)
void checkDead() {
if(dead) throw new Error("Tank "+id+" is Dead");
}
final void kill() {
synchronized(g) {
if(dead)
return;
log("kill()");
dead = true;
logState();
if(g.board[pos.x][pos.y]==this)
g.board[pos.x][pos.y] = null;
}
}
请参阅,我尝试使用和不使用@override覆盖它们,但我不确定为什么它不会隐藏超类的方法。任何人都可以向我提供任何一个或所有这些问题的提示吗?
答案 0 :(得分:1)
注意方法中的最终定义?假设您正在使用Java,您会发现这是一种无法覆盖或扩展的方法。有关详细信息,请参阅Java文档或Wikipedia:http://en.wikipedia.org/wiki/Final_(Java)。显示教授创建的API,它可以解释损坏,死亡和状态如何变化。我假设他在记录(和报告)状态变化方面有一个基于服务的架构......
我不会就如何 Kobayashi Maru 这个练习向你提出建议 - 这是你定义你的战术的哲学。
但是,如果我可以提出一个建议,请考虑阅读Sun Tzu's The Art of War,特别是在试图对抗对手或系统时。