projects:spacedebris:aufgabe2:loesung:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projects:spacedebris:aufgabe2:loesung:start [2021/03/20 22:21] – angelegt Martin Pabst | projects:spacedebris:aufgabe2:loesung:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
- **Freiwillig: | - **Freiwillig: | ||
+ | {{ youtube> | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | new SpaceDebrisGame(); | ||
+ | |||
+ | |||
+ | class SpaceDebrisGame extends Actor { | ||
+ | |||
+ | | ||
+ | |||
+ | Group debrisGroup = new Group(); | ||
+ | |||
+ | Group bullets = new Group(); | ||
+ | |||
+ | | ||
+ | |||
+ | int ships = 3; | ||
+ | Text shipsText; | ||
+ | Text bigText; | ||
+ | |||
+ | Text punkteAnzeige; | ||
+ | int punkte = 0; | ||
+ | |||
+ | | ||
+ | int lastTimeFired = 0; | ||
+ | |||
+ | int spielzeit = 0; // spielzeit in 1/30 s | ||
+ | |||
+ | |||
+ | | ||
+ | super(); | ||
+ | spaceship = new Spaceship(); | ||
+ | shipsText = new Text(10, 10, 40, 3); | ||
+ | bigText = new Text(400, 200, 80, "" | ||
+ | bigText.setAlignment(Alignment.center); | ||
+ | |||
+ | punkteAnzeige = new Text(750, 10, 40, 0); | ||
+ | punkteAnzeige.setAlignment(Alignment.right); | ||
+ | |||
+ | setZustand(" | ||
+ | } | ||
+ | |||
+ | | ||
+ | |||
+ | spielzeit++; | ||
+ | | ||
+ | spaceship.v = 4 + 4 * spielzeit / 9000.0; | ||
+ | |||
+ | if(isKeyDown(" | ||
+ | | ||
+ | setZustand(" | ||
+ | } else if(zustand == " | ||
+ | setZustand(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if(zustand != " | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(Math.random() < debrisRate + debrisRate * (spielzeit / 6000.0)) { | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(isKeyDown(" | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | CollisionPair[] pairs = bullets.getCollisionPairs(debrisGroup, | ||
+ | for(int i = 0; i < pairs.length; | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | Shape[] collidingDebris = debrisGroup.getCollidingShapes(spaceship); | ||
+ | |||
+ | for(int i = 0; i < collidingDebris.length; | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | setZustand(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | void setZustand(String neuerZustand) { | ||
+ | | ||
+ | if(neuerZustand == " | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } else if(neuerZustand == " | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ships = 3; | ||
+ | | ||
+ | } else if(neuerZustand == " | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | |||
+ | zustand = neuerZustand; | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | </ | ||
+ | <script type=" | ||
+ | class Bullet extends Circle { | ||
+ | |||
+ | | ||
+ | super(x, y, 5); | ||
+ | } | ||
+ | |||
+ | | ||
+ | move(30, 0); | ||
+ | if(isOutsideView()) { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | <script type=" | ||
+ | class Debris extends Rectangle { | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | super(830, Math.random() * 500 + 50, Math.random() * 150 + 50, Math.random() * 150 + 50); | ||
+ | |||
+ | this.vx = vx; | ||
+ | this.vy = vy; | ||
+ | |||
+ | setFillColor(Color.randomColor(50)); | ||
+ | setAlpha(Math.random() * 0.5 + 0.5); | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | | ||
+ | move(vx, vy); | ||
+ | rotate(w); | ||
+ | |||
+ | if(getCenterX() < 100 && isOutsideView()) { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void explode() { | ||
+ | Sprite explosion = new Sprite(getCenterX(), | ||
+ | explosion.scale(8 * getWidth() * getHeight() / 40000); | ||
+ | explosion.playAnimation(0, | ||
+ | Sound.playSound(Sound.far_bomb); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | <script type=" | ||
+ | new Spaceship(); | ||
+ | |||
+ | |||
+ | class Spaceship extends Sprite { | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | super(50, 300, SpriteLibrary.Ship_Adrian, | ||
+ | scale(1.5); | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | double vx = 0; | ||
+ | double vy = 0; | ||
+ | |||
+ | if(isKeyDown(Key.ArrowUp) && getCenterY() > 20) { | ||
+ | vy = -v; | ||
+ | } | ||
+ | if(isKeyDown(Key.ArrowDown) && getCenterY() < getWorld().getHeight() - 20) { | ||
+ | vy = v; | ||
+ | } | ||
+ | if(isKeyDown(Key.ArrowLeft) && getCenterX() > 45) { | ||
+ | vx = -v; | ||
+ | } | ||
+ | if(isKeyDown(Key.ArrowRight) && getCenterX() < getWorld().getWidth() / 2) { | ||
+ | vx = v; | ||
+ | } | ||
+ | |||
+ | double l = Math.sqrt(vx * vx + vy * vy); | ||
+ | if(l > 0) { | ||
+ | vx = vx / l * v; | ||
+ | vy = vy / l * v; | ||
+ | | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ |
projects/spacedebris/aufgabe2/loesung/start.1616275316.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)