Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:spiele:worldtransformations

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
api:documentation:spiele:worldtransformations [2021/05/30 23:45] Martin Pabstapi:documentation:spiele:worldtransformations [2021/06/06 22:05] – [Demo-Programm zur Methode follow] Martin Pabst
Zeile 118: Zeile 118:
  
 **Vielen Dank an Jürgen Horzella für die Programmvorlage!** \\ \\  **Vielen Dank an Jürgen Horzella für die Programmvorlage!** \\ \\ 
-Steuere den grünen Helden mit den **Pfeiltasten**!+Steuere den Helden mit den **Pfeiltasten**!
  
 <HTML> <HTML>
Zeile 128: Zeile 128:
  
 public class Spiel extends Actor { public class Spiel extends Actor {
-   Rectangle [] plattform; + 
-    +   Text punkteAnzeige = new Text(20, 20, 60, "");
-   Circle [] star;+
    double punkte = 0;    double punkte = 0;
  
-   Rectangle spielfigur;+   Sprite spielfigur;
    double vx;    double vx;
    double vy;    double vy;
Zeile 139: Zeile 138:
    double gravity = 0.4;    double gravity = 0.4;
    double jump = -12;    double jump = -12;
-   double speed = 3;+   double speed = 5;
        
  
    Circle bombe;    Circle bombe;
-   double mx; +   double mx = 300 // Mittelpunkt der Kreisbahn 
-   double my; +   double my = 300
-   double r; +   double r = 100  // Radius der Kreisbahn 
-   double t; +   double t = 0
-   double w;+   double w = 0.05 // Winkelgeschwindigkeit
  
    Shape standingOn;    Shape standingOn;
  
    Group plattforms = new Group();    Group plattforms = new Group();
 +   Group stars = new Group();
  
    public Spiel() {    public Spiel() {
Zeile 159: Zeile 159:
       plattforms.add(ground);       plattforms.add(ground);
  
-      for(int i = 1; i < 10; i++) { +      for(int i = 1; i < 6; i++) { 
-         plattforms.add(new Rectangle(100 + 250 * i, 600 - 70 * i, 200, 10));+         plattforms.add(new Rectangle(100 + 250 * i, 600 - 120 * i, 200, 10));
       }       }
              
-      star new Circle[4]+      for(int i 0i < 40; i++) { 
-      star[0] = new Circle(30040010); +         Sprite star = new Sprite(Random.randdouble(-5001500)Random.randint(300, 500), SpriteLibrary.Plattforms176);  
-      star[1] = new Circle(400, 300, 10); +         stars.add(star);
-      star[2] = new Circle(500, 300, 10)+
-      star[3] = new Circle(10045010); +
-      for(int i = 0; i <= 3; i++) { +
-         star[i].setFillColor(Color.yellow);+
       }       }
              
-      spielfigur = new Rectangle(2004002040); +      spielfigur = new Sprite(500100SpriteLibrary.Characters_10);
-      spielfigur.setFillColor(Color.green);+
       vx = 0;       vx = 0;
       vy = 0;       vy = 0;
Zeile 185: 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 196:
  
       if(spielfigur.collidesWith(bombe)) {       if(spielfigur.collidesWith(bombe)) {
-         spielfigur.moveTo(200400);+         spielfigur.moveTo(500100); 
 +      } 
 +             
 +      Shape[] collidingStars = stars.getCollidingShapes(spielfigur); 
 +      for(Shape star : collidingStars) { 
 +         star.destroy(); 
 +         Sound.playSound(Sound.short_bell); 
 +         punkte++; 
 +         punkteAnzeige.setText(punkte);
       }       }
              
 +      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) {
          if(!spielfigur.collidesWith(standingOn)) {          if(!spielfigur.collidesWith(standingOn)) {
             standingOn = null;             standingOn = null;
 +            ay = gravity;
          }          }
       }       }
  
-      if(standingOn == null) { +      Shape[] collidingPlatforms = plattforms.getCollidingShapes(spielfigur); 
-         Shape[] collidingPlatforms = plattforms.getCollidingShapes(spielfigur); +      for(Shape platform : collidingPlatforms) { 
-         for(Shape platform : collidingPlatforms) { +         
-             +         if(platform != standingOn{
-            spielfigur.moveBackFrom(platform, true)+
-   +
             Direction d = spielfigur.directionRelativeTo(platform);             Direction d = spielfigur.directionRelativeTo(platform);
             switch(d) {             switch(d) {
                case top :                 case top : 
 +                  spielfigur.moveBackFrom(platform, true);
                   standingOn = platform;                   standingOn = platform;
 +                  vy = 0;
 +                  ay = 0;
                   break;                   break;
                case bottom :                 case bottom : 
Zeile 222: Zeile 242:
                   spielfigur.moveBackFrom(platform, false);                   spielfigur.moveBackFrom(platform, false);
                case left :                 case left : 
 +                  vx = -4;
 +                  spielfigur.moveBackFrom(platform, false);
 +                  spielfigur.move(vx, vy);
 +                  break;
                case right :                 case right : 
-                  vx *-1;+                  vx = 4;
                   spielfigur.moveBackFrom(platform, false);                   spielfigur.moveBackFrom(platform, false);
-                  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++) { +
-         if(spielfigur.collidesWith(star[i])) { +
-            punkte++; +
-            star[i].moveTo(5, 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;+
       }       }
  
    }    }
-} +}</script>
-</script>+
  
 </div> </div>
  
 </HTML> </HTML>
api/documentation/spiele/worldtransformations.txt · Zuletzt geändert: 2021/12/29 11:29 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki