Devátý domácí úkol

Napište kód metody Engine.oneIteration, která

  • jednou pohne s každým z objektů v kolekci gameObjects,
  • pro každou dvojici navzájem různých objektů z gameObjects zkontroluje, jestli spolu nejsou v kolizi a
  • pokud spolu některé dva objekty jsou v kolizi, zavolá na obou z nich metodu reactToCollisionWith a jako parametr jim předá objekt, se kterým jsou v kolizi.

Odevzdávaný kód (tzn. třídu Engine) uložte do svého repozitáře do souboru hw/Assignment9.java. Termín odevzdání je 14. 5. ve 24:00.

import java.util.HashSet;
import java.util.Set;
 
class Engine {
    final Set<GameObject> gameObjects = new HashSet<>();
 
    void mainLoop() {
        while (true) oneIteration();
    }
 
    void oneIteration() {
        // kod
    }
}
 
interface Movable {
    Pair<Integer, Integer> getPosition();
    void move(int dx, int dy);
}
 
interface Actuator {
    void actuate(Movable movable);
}
 
class Pair<A, B> {
    final A first;
    final B second;
 
    public Pair(A first, B second) {
        this.first = first;
        this.second = second;
    }
}
 
abstract class GameObject {
    Movable sprite;
    Actuator actuator;
 
    void moveYourself() {
        actuator.actuate(sprite);
    }
 
    abstract boolean isInCollisionWith(GameObject go);
 
    abstract void reactToCollisionWith(GameObject go);
}

~~DISCUSSION:ON~~

courses/b6b36omo/en/hw/09/start.txt · Last modified: 2018/10/03 11:13 (external edit)