wiederholung:eigeneklassen
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
wiederholung:eigeneklassen [2023/06/11 14:34] – [Projekt: Einfaches Weltraumspiel] Martin Pabst | wiederholung:eigeneklassen [2023/06/11 15:01] (aktuell) – [Projekt: Einfaches Weltraumspiel (Variante Jgst. 10)] Martin Pabst | ||
---|---|---|---|
Zeile 211: | Zeile 211: | ||
- | ===== Projekt: Einfaches Weltraumspiel ===== | + | ===== Projekt: Einfaches Weltraumspiel |
< | < | ||
Zeile 316: | Zeile 316: | ||
</ | </ | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | **Aufgaben: | ||
+ | * Die Bullets sind bisher nur einfache Kreise. Schöner wäre ein geeignetes Sprite! | ||
+ | * Trifft ein Bullet ein Target, so soll auch das Bullet vernichtet werden. | ||
+ | * Ersetze die Explosion der Targets durch ein Particle System (z.B. umherfliegende Dreiecke). Trifft ein Particle das Raumschiff, soll es zerstört werden. | ||
+ | </ | ||
+ | |||
+ | ===== Projekt: Einfaches Weltraumspiel (Variante Jgst. 10) ===== | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | new Main(); | ||
+ | |||
+ | class Main extends Actor { | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | Text caption; | ||
+ | |||
+ | int score = 0; | ||
+ | Text scoreDisplay; | ||
+ | |||
+ | int lastTimeSpacePressed; | ||
+ | |||
+ | | ||
+ | |||
+ | caption = new Text(400, 200, 60, "Space shooter" | ||
+ | caption.setAlignment(Alignment.center); | ||
+ | |||
+ | scoreDisplay = new Text(10, 10, 32, " | ||
+ | |||
+ | spaceship = new Spaceship(400, | ||
+ | | ||
+ | setState(" | ||
+ | } | ||
+ | |||
+ | | ||
+ | if(state == " | ||
+ | | ||
+ | new Target(this); | ||
+ | } | ||
+ | } else if(isKeyDown(" | ||
+ | | ||
+ | | ||
+ | case " | ||
+ | | ||
+ | | ||
+ | case " | ||
+ | | ||
+ | | ||
+ | default : | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | switch(newState) { | ||
+ | case " | ||
+ | caption.setVisible(true); | ||
+ | spaceship.setVisible(false); | ||
+ | caption.setText(" | ||
+ | break; | ||
+ | case " | ||
+ | score = 0; | ||
+ | displayScore(); | ||
+ | caption.setVisible(false); | ||
+ | spaceship.setVisible(true); | ||
+ | break; | ||
+ | case " | ||
+ | caption.setVisible(true); | ||
+ | spaceship.setVisible(false); | ||
+ | caption.setText(" | ||
+ | break; | ||
+ | | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | state = newState; | ||
+ | } | ||
+ | |||
+ | | ||
+ | score += delta; | ||
+ | displayScore(); | ||
+ | } | ||
+ | |||
+ | | ||
+ | scoreDisplay.setText(score); | ||
+ | } | ||
+ | |||
+ | }</ | ||
+ | <script type=" | ||
+ | class Spaceship extends Sprite { | ||
+ | |||
+ | int spaceLastPressedTime = 0; | ||
+ | Main main; | ||
+ | |||
+ | | ||
+ | super(x, y, SpriteLibrary.Space_Shooter_2, | ||
+ | this.main = main; | ||
+ | scale(2); | ||
+ | } | ||
+ | |||
+ | | ||
+ | if(main.state != " | ||
+ | | ||
+ | if(isKeyDown(Key.ArrowLeft)) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(isKeyDown(Key.ArrowRight)) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | int time = System.currentTimeMillis(); | ||
+ | |||
+ | if(isKeyDown(" | ||
+ | | ||
+ | new Bullet(getCenterX(), | ||
+ | } | ||
+ | |||
+ | if(getFirstCollidingSprite(9) != null) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | <script type=" | ||
+ | class Bullet extends Circle { | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | super(x, y, 10); | ||
+ | this.vx = vx; | ||
+ | this.vy = vy; | ||
+ | this.sendToBack(); | ||
+ | this.setFillColor(0xff0000); | ||
+ | } | ||
+ | |||
+ | | ||
+ | move(vx, vy); | ||
+ | if(isOutsideView()) { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | }</ | ||
+ | <script type=" | ||
+ | public class Target extends Sprite { | ||
+ | |||
+ | | ||
+ | | ||
+ | Main main; | ||
+ | |||
+ | | ||
+ | super(Random.randint(0, | ||
+ | this.vx = Random.randint(-5, | ||
+ | this.vy = Random.randint(3, | ||
+ | this.main = main; | ||
+ | } | ||
+ | |||
+ | | ||
+ | |||
+ | move(vx, vy); | ||
+ | |||
+ | if(getCenterY() > 620) { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(collidesWithFillColor(0xff0000)) { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | **Aufgaben: | ||
+ | * Die Bullets sind bisher nur einfache Kreise. Schöner wäre ein geeignetes Sprite! | ||
+ | * Trifft ein Bullet ein Target, so soll auch das Bullet vernichtet werden. | ||
+ | * Ersetze die Explosion der Targets durch ein Particle System (z.B. umherfliegende Dreiecke). Trifft ein Particle das Raumschiff, soll es zerstört werden. | ||
+ | * Das Raumschiff soll drei Leben haben. Schön wäre eine Lebensanzeige rechts unten, die aus drei kleinen Raumschiffen besteht... | ||
+ | * Es soll verschiedene Gegner geben, die sich verschieden verhalten! | ||
+ | * Es soll Powerups geben, die man aufsammeln kann. Sie bewirken, dass das Raumschiff bessere Fähigkeiten bekommt (verschiedene Kanonen, Schild, ...) | ||
+ | </ | ||
+ | |||
wiederholung/eigeneklassen.1686494040.txt.gz · Zuletzt geändert: 2023/06/11 14:34 von Martin Pabst