Итак, у моего класса во вторник танковое сражение, и каждый из нас разрабатывал логику для танка. Наш учитель разработал 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, так и без него, но я не уверен, почему он не будет скрывать методы суперкласса. Кто-нибудь может дать мне советы по любому из этих вопросов?