api:documentation:spiele:worldtransformations
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
api:documentation:spiele:worldtransformations [2021/05/30 23:42] – Martin Pabst | api:documentation:spiele:worldtransformations [2021/05/31 10:07] – [Demo-Programm zur Methode follow] Martin Pabst | ||
---|---|---|---|
Zeile 111: | Zeile 111: | ||
* yMax - Das Koordinatensystem wird höchstens so weit nach unten verschoben, dass der untere Rand die y-Koordinate yMax hat. | * yMax - Das Koordinatensystem wird höchstens so weit nach unten verschoben, dass der untere Rand die y-Koordinate yMax hat. | ||
- | \\ VORSICHT: \\ | + | \\ **VORSICHT:** \\ |
Die Methode verschiebt das Welt-Koordinatensystem **nur ein einziges Mal**. Soll die Welt einer Spielfigur folgen, so muss diese Methode immer wieder aufgerufen werden. Am besten platzierst Du sie dazu in der '' | Die Methode verschiebt das Welt-Koordinatensystem **nur ein einziges Mal**. Soll die Welt einer Spielfigur folgen, so muss diese Methode immer wieder aufgerufen werden. Am besten platzierst Du sie dazu in der '' | ||
+ | \\ \\ **Tipp:** \\ Die Koordinaten der linken oberen Ecke des sichtbaren Bereichs bekommst Du mit den Methoden '' | ||
</ | </ | ||
Zeile 127: | Zeile 128: | ||
public class Spiel extends Actor { | public class Spiel extends Actor { | ||
- | | + | |
- | + | Text punkteAnzeige = new Text(20, 20, 60, "" | |
- | | + | |
| | ||
- | Rectangle | + | Sprite |
| | ||
| | ||
Zeile 138: | Zeile 138: | ||
| | ||
| | ||
- | | + | |
| | ||
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
Shape standingOn; | Shape standingOn; | ||
Group plattforms = new Group(); | Group plattforms = new Group(); | ||
+ | Group stars = new Group(); | ||
| | ||
Zeile 158: | Zeile 159: | ||
plattforms.add(ground); | plattforms.add(ground); | ||
- | for(int i = 1; i < 10; i++) { | + | for(int i = 1; i < 6; i++) { |
- | | + | |
} | } | ||
| | ||
- | | + | |
- | star[0] = new Circle(300, 400, 10); | + | Sprite |
- | star[1] = new Circle(400, 300, 10); | + | stars.add(star); |
- | star[2] = new Circle(500, 300, 10); | + | |
- | star[3] = new Circle(100, 450, 10); | + | |
- | for(int i = 0; i <= 3; i++) { | + | |
- | star[i].setFillColor(Color.yellow); | + | |
} | } | ||
| | ||
- | spielfigur = new Rectangle(200, 400, 20, 40); | + | spielfigur = new Sprite(200, 400, SpriteLibrary.Characters_1, 0); |
- | spielfigur.setFillColor(Color.green); | + | |
vx = 0; | vx = 0; | ||
vy = 0; | vy = 0; | ||
Zeile 184: | Zeile 180: | ||
bombe = new Circle(mx, my, 20); | bombe = new Circle(mx, my, 20); | ||
bombe.setFillColor(Color.red); | bombe.setFillColor(Color.red); | ||
+ | |||
+ | punkteAnzeige.setStatic(true); | ||
+ | punkteAnzeige.setFillColor(Color.white); | ||
+ | punkteAnzeige.setBorderColor(Color.darkcyan); | ||
} | } | ||
Zeile 197: | Zeile 197: | ||
if(spielfigur.collidesWith(bombe)) { | if(spielfigur.collidesWith(bombe)) { | ||
| | ||
+ | } | ||
+ | | ||
+ | Shape[] collidingStars = stars.getCollidingShapes(spielfigur); | ||
+ | for(Shape star : collidingStars) { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
} | } | ||
| | ||
+ | if(isKeyDown(Key.ArrowUp) && standingOn != null) { | ||
+ | vy = jump; | ||
+ | } | ||
+ | |||
+ | if(isKeyDown(Key.ArrowRight)) { | ||
+ | vx = speed; | ||
+ | } else if(isKeyDown(Key.ArrowLeft)) { | ||
+ | vx = -speed; | ||
+ | } else { | ||
+ | vx = 0; | ||
+ | } | ||
if(standingOn != null) { | if(standingOn != null) { | ||
| | ||
standingOn = null; | standingOn = null; | ||
+ | ay = gravity; | ||
} | } | ||
} | } | ||
- | | + | Shape[] collidingPlatforms = plattforms.getCollidingShapes(spielfigur); |
- | Shape[] collidingPlatforms = plattforms.getCollidingShapes(spielfigur); | + | for(Shape platform : collidingPlatforms) { |
- | | + | |
- | + | if(platform | |
- | | + | |
- | + | ||
Direction d = spielfigur.directionRelativeTo(platform); | Direction d = spielfigur.directionRelativeTo(platform); | ||
switch(d) { | switch(d) { | ||
case top : | case top : | ||
+ | spielfigur.moveBackFrom(platform, | ||
standingOn = platform; | standingOn = platform; | ||
+ | vy = 0; | ||
+ | ay = 0; | ||
break; | break; | ||
case bottom : | case bottom : | ||
Zeile 221: | Zeile 242: | ||
spielfigur.moveBackFrom(platform, | spielfigur.moveBackFrom(platform, | ||
case left : | case left : | ||
+ | vx = -4; | ||
+ | spielfigur.moveBackFrom(platform, | ||
+ | spielfigur.move(vx, | ||
+ | break; | ||
case right : | case right : | ||
- | vx *= -1; | + | vx = 4; |
spielfigur.moveBackFrom(platform, | spielfigur.moveBackFrom(platform, | ||
- | spielfigur.move(0, vy); | + | spielfigur.move(vx, vy); |
break; | break; | ||
- | } | + | } |
} | } | ||
- | + | ||
- | } | + | |
- | + | ||
- | if(standingOn != null) { | + | |
- | vy = 0; | + | |
- | ay = 0; | + | |
- | } | + | |
- | else { | + | |
- | ay = gravity; | + | |
- | } | + | |
- | + | ||
- | for(int i = 0; i <= 3; i++) { | + | |
- | | + | |
- | punkte++; | + | |
- | star[i].moveTo(5, | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | if(isKeyDown(Key.ArrowUp) && standingOn != null) { | + | |
- | vy = jump; | + | |
- | } | + | |
- | + | ||
- | if(isKeyDown(Key.ArrowRight)) { | + | |
- | vx = speed; | + | |
- | } else if(isKeyDown(Key.ArrowLeft)) { | + | |
- | vx = -speed; | + | |
- | } else { | + | |
- | vx = 0; | + | |
} | } | ||
} | } | ||
- | } | + | }</ |
- | </ | + | |
</ | </ | ||
</ | </ |
api/documentation/spiele/worldtransformations.txt · Zuletzt geändert: 2021/12/29 11:29 von 127.0.0.1