在坦克战斗计划中重写睡眠方法

时间:2012-02-12 03:56:19

标签: override subclass sleep

所以我的班级周二正在进行一场坦克大战,我们每个人都在为坦克设计逻辑。我们的老师设计了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覆盖它们,但我不确定为什么它不会隐藏超类的方法。任何人都可以向我提供任何一个或所有这些问题的提示吗?

1 个答案:

答案 0 :(得分:1)

注意方法中的最终定义?假设您正在使用Java,您会发现这是一种无法覆盖或扩展的方法。有关详细信息,请参阅Java文档或Wikipedia:http://en.wikipedia.org/wiki/Final_(Java)。显示教授创建的API,它可以解释损坏,死亡和状态如何变化。我假设他在记录(和报告)状态变化方面有一个基于服务的架构......

我不会就如何 Kobayashi Maru 这个练习向你提出建议 - 这是你定义你的战术的哲学。

但是,如果我可以提出一个建议,请考虑阅读Sun Tzu's The Art of War,特别是在试图对抗对手或系统时。