zum Inhalt springen
Java lernen durch Ausprobieren!
Benutzer-Werkzeuge
Anmelden
Webseiten-Werkzeuge
Suche
Werkzeuge
Seite anzeigen
Ältere Versionen
Links hierher
Letzte Änderungen
Medien-Manager
Übersicht
Anmelden
>
Letzte Änderungen
Medien-Manager
Übersicht
Zuletzt angesehen:
projekt:snake:start
====== Snake-Spiel-Grundlage ====== <HTML> <div class="java-online" style="height: 500px; width: 100%" data-java-online="{'withBottomPanel': true, 'id': 'SnakePart', 'speed': 'max'}"> <script type="text/plain" title="SnakeMain.java"> World w = new World(1000, 1000); new SnakeMain(); class SnakeMain extends Actor { Snake snake; Group früchte = new Group(); public SnakeMain() { super(); snake = new Snake(this); } public void act() { if(Math.random() < 0.02) { früchte.add(new Circle(Math.random()*800, Math.random()*600, 10)); } Shape[] berührteFrüchte = früchte.getCollidingShapes(snake); for(int i = 0; i < berührteFrüchte.length; i++) { snake.circlesToAdd += 3; berührteFrüchte[i].destroy(); } } } </script> <script type="text/plain" title="Snake.java"> class Snake extends Group { SnakeMain snakeMain; // Geschwindigkeit des Schlangenkopfs: int vx = 8; int vy = 0; int circlesToAdd = 0; // Falls Obst gegessen wurde: so viele Kreise kommen hinzu int radius = 20; // Radius der Kreise Snake(SnakeMain snakeMain) { super(); this.snakeMain = snakeMain; // Kopf zur Gruppe hinzufügen: Circle head = new Circle(500, 500, radius); head.setFillColor(Color.red); add(head); } public void act() { int v = 8; // Richtungsänderung auswerten: if(vx == 0) { if(isKeyDown(Key.ArrowRight)) { vy = 0; vx = v; } if(isKeyDown(Key.ArrowLeft)) { vy = 0; vx = -v; } } else { if(isKeyDown(Key.ArrowUp)) { vy = -v; vx = 0; } if(isKeyDown(Key.ArrowDown)) { vy = v; vx = 0; } } // Das letzte hinzugefügte Element ist der bisherige Kopf-Kreis Circle oldHead = (Circle)this.get(size() - 1); // Neuen Kopf-Kreis erstellen und in Kriechrichtung verschieben: Circle newHead = oldHead.copy(); newHead.move(vx, vy); // Neuen Kopf zur Schlange hinzufügen: add(newHead); // Aus dem akten Kopf wird durch Einfärben ein Schlangenglied: oldHead.setFillColor(Color.lightblue); oldHead.setAlpha(0.5); // Hat die Schlange was gegessen? if(circlesToAdd == 0) { // Nein => Am Ende einen Kreis entfernen (da ja der neue Kopfkreis weiter oben hinzukam): Shape shapeToRemove = get(0); shapeToRemove.destroy(); // Zerstört den Kreis und entfernt ihn aus dem Group-Objekt } else { circlesToAdd--; } /* * Der Kopfkreis berührt immer bis zu sieben Schlangenglieder hinter ihm. Falls er mehr * berührt, beißt sich die Schlange gerade selbst: */ if(getCollidingShapes(newHead).length > 7) { // TODO: Game over } } } </script> </div> </HTML>
projekt/snake/start.txt
· Zuletzt geändert:
2024/08/31 10:03
von
127.0.0.1
Seiten-Werkzeuge
Seite anzeigen
Ältere Versionen
Links hierher
Nach oben