1
|
{"name":"WhackAMole","modules":[{"name":"WhackAMole","text":"class WhackAMole implements Runnable {\n /**\n * Feld aller Maulwuerfe\n */\n Mole[] moles;\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 moles = new Mole[9];\n for (int i = 0; i < moles.length; i++) {\n int x = ((i % 3) + 1) * 200;\n int y = ((i / 3) + 1) * 150;\n moles[i] = new Mole(x, y);\n moles[i].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 mole.setVisible(false);\n }\n } else {\n if(Math.random() <= 0.03) {\n mole.setVisible(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 boolean molesLeft = false;\n for (int i = 0; i < moles.length; i++) {\n Mole mole = moles[i];\n if(!mole.isDestroyed()) {\n handleMole(mole);\n molesLeft = true;\n }\n }\n\n if(!molesLeft) {\n gameOver();\n }\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":2},{"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":[]}}
|