aboutsummaryrefslogtreecommitdiff
path: root/Info/11/NTG/Intro/WhackAMole_Angabe.json
blob: cf72c5e6598eb2cf21e9cd78e5751f7c44667020 (plain)
1
{"name":"WhackAMole","modules":[{"name":"WhackAMole","text":"class WhackAMole implements Runnable {\n   /**\n    * Feld aller Maulwuerfe\n    * TODO 1: Deklariere ein Feld/Array vom Typ Mole mit Namen moles\n    */\n\n   /**\n    * Bereits vergangene Zeit\n    */\n   int ticks = 0;\n\n   /**\n    * Erzeugt einen neues Spiel und erstellt alle 9 Maulwuerfe\n    */\n   public WhackAMole() {\n      // TODO: Initialisiere das Feld moles mit der Laenge 9\n      for (int i = 0; i < 0 /* FIXME 1: moles.length */; i++) {\n         int x = ((i % 3) + 1) * 200;\n         int y = ((i / 3) + 1) * 150;\n         Mole mole = new Mole(x, y); \n         // TODO 1: Speichere das neue Objekt mole im Feld moles an der Stelle i\n\n         // Die Maulwuerfe starten unsichtbar\n         // TODO 2: Setze die Sichtbarkeit des neuen Maulwurfs auf false\n         // FIXME 2: mole.setVisible(false);\n      }\n   }\n\n   /**\n    * Entscheidet ob ein Maulwurf auftaucht oder verschwindet\n    * \n    * Die Wahrscheinlichkeit dafuer dass ein Maulwurf auftaucht liegt bei 3%.\n    * Die Wahrscheinlichkeit fuer das Verschwinden eines Maulwurfs betraegt 5%.\n    */\n   public void handleMole(Mole mole) {\n      if(mole.isVisible()) {\n         if(Math.random() <= 0.05) {\n            // TODO 2: Setze die Sichtbarkeit des Maulwurfs auf false\n         }\n      } else {\n         if(Math.random() <= 0.03) {\n            // TODO 2: Setze die Sichtbarkeit des Maulwurfs auf true\n         }\n      }\n   }\n\n   /**\n    * Aktiviert alle nicht zerstoerten Maulwuerfe\n    * \n    * Die Methode wird alle 100 Millisekunden aufgerufen.\n    * Das Spiel wird beendet falls kein Maulwurf mehr aktiviert wurde.\n    */\n   public void run() {\n\n\n      for (int i = 0; i < 0 /* FIXME 1: moles.length */; i++) {\n         Mole mole /* FIXME 1: Speichere das aktuelle Objekt in der Variable mole */;\n         // TODO 2: Die Anweisung soll ausgefuehrt werden wenn der Maulwurf NICHT zerstoert ist\n         if(false /* FIXME 2: isDestroyed() liefert ob der Maulwurf bereits zerstoert wurde*/) {\n            handleMole(mole);\n         }\n      }\n\n      // TODO 3: Beende das Spiel falls keine Maulwurfe mehr uebrig sind\n   }\n\n   /**\n    * Startet das Spiel\n    */\n   public void start() {\n      Timer.repeat(this, 100);\n   }\n   \n   /**\n    * Beendet das Spiel\n    */\n   public void gameOver() {\n      println(\"Game Over!\");\n      System.exit(0);\n   }\n}\n\nWhackAMole game = new WhackAMole();\ngame.start();\n","identical_to_repository_version":true,"is_copy_of_id":1395509,"repository_file_version":3},{"name":"Mole","text":"class Mole extends Sprite {\n    /**\n     * Die Zeit bis ein getroffener Maulwurf tatsaechlich verschwindet.\n     * -1 beduetet der Maulwurf wurde noch nicht getroffen.\n     */\n   int timeToDestruction = -1;\n\n   /**\n    * Erzeugt einen neuen Maulwurf\n    * \n    * @param x Die X-Koordinate des Maulwurfs\n    * @param y Die y-Koordinate des Maulwurfs\n    */\n   Mole(int x, int y) {\n      super(x, y, SpriteLibrary.Minesweeper, 18);\n      scale(2);\n      reactToMouseEventsWhenInvisible(false);\n   }\n\n   /**\n    * behandlet geklickte Maulwuerfe\n    * \n    * Die Methode act wird ca. 30 mal pro Sekunde aufgerufen.\n    * Sie reduziert die Zeit bis der Maulwurf zerstoert werden soll\n    * und zerstoert in wenn die Zeit aubgelaufen ist.\n    */\n   public void act() {\n      if(timeToDestruction == -1) {\n         return;\n      }\n\n      timeToDestruction = timeToDestruction - 1;\n      if(timeToDestruction == 0) {\n         destroy();\n      }\n   }\n\n   /**\n    * anedert das Bild und startet die Behandlung eines geklickten Maulwurfs\n    */\n   public void onMouseDown(double x, double y, int key) {\n      setImageIndex(17);\n      timeToDestruction = 10;\n   }\n}","identical_to_repository_version":true,"is_copy_of_id":1395511,"repository_file_version":2}],"settings":{"libraries":[]}}