Benutzer-Werkzeuge

Webseiten-Werkzeuge


pong:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
pong:start [2023/01/10 06:44] – angelegt Martin Pabstpong:start [2023/01/16 09:20] (aktuell) – [Klassendiagramm] Martin Pabst
Zeile 1: Zeile 1:
 ====== Gemeinsames Projekt: Pong ====== ====== Gemeinsames Projekt: Pong ======
-{{ :projects:pong:pong.png?200|Quelle: https://commons.wikimedia.org/wiki/File:Pong.png}}+{{ :pong:pasted:20230116-081801.png?200|Quelle: https://commons.wikimedia.org/wiki/File:Pong.png}}
 <WRAP center round info 50%> <WRAP center round info 50%>
 Das 1972 von Atari veröffentlichte Pong war eines der ersten Computerspiele, [[https://de.wikipedia.org/wiki/Pong|hier mehr zu seiner Geschichte.]] \\ \\  Das 1972 von Atari veröffentlichte Pong war eines der ersten Computerspiele, [[https://de.wikipedia.org/wiki/Pong|hier mehr zu seiner Geschichte.]] \\ \\ 
Zeile 18: Zeile 18:
 class Schläger extends Rectangle { class Schläger extends Rectangle {
        
-   String tasteRauf; +   private String tasteRauf; 
-   String tasteRunter;+   private String tasteRunter;
  
    double dy = 5;    double dy = 5;
Zeile 57: Zeile 57:
  \\   \\ 
  
-{{ :projects:pong:pasted:20210220-110606.png?300}}+{{ :pong:pasted:20230110-074517.png?300}}
 ==== Wann stößt der Schläger oben an? ==== ==== Wann stößt der Schläger oben an? ====
 Am oberen Rand des Grafikbereichs stößt der Schläger dann an, wenn ''getCenterY() == getHeight()/2''. Solange ''getCenterY() > getHeight()/2'' ist, ist der Schläger noch nicht oben angekommen. Am oberen Rand des Grafikbereichs stößt der Schläger dann an, wenn ''getCenterY() == getHeight()/2''. Solange ''getCenterY() > getHeight()/2'' ist, ist der Schläger noch nicht oben angekommen.
Zeile 65: Zeile 65:
  
 ==== Wann stößt der Schläger unten an? ==== ==== Wann stößt der Schläger unten an? ====
-{{:projects:pong:pasted:20210220-111101.png?300 }}+{{:pong:pasted:20230110-074703.png?300 }}
 Am unteren Rand des Grafikbereichs stößt der Schläger dann an, wenn ''getCenterY() + getHeight()/2 == 600''. Solange ''getCenterY() + getHeight()/2 < 600'' ist, ist der Schläger noch nicht unten angekommen. Am unteren Rand des Grafikbereichs stößt der Schläger dann an, wenn ''getCenterY() + getHeight()/2 == 600''. Solange ''getCenterY() + getHeight()/2 < 600'' ist, ist der Schläger noch nicht unten angekommen.
 <HTML> <HTML>
Zeile 72: Zeile 72:
  
 ===== Programmierung des Balls ===== ===== Programmierung des Balls =====
 +==== Klassendiagramm ====
 +Der Ball muss die zwei Schläger "kennen", um feststellen zu können, ob er einen davon berührt und entsprechend seine Geschwindigkeit ändern muss.
 +{{ :pong:pasted:20230116-083656.png }}
 +
 +Daher erhält die Klasse Ball die beiden Attribute ''schlaegerLinks'' und ''schlaegerRechts''. Sie werden im Konstruktor mit den Referenzen der beiden ''Schlaeger''-Objekte belegt, die an den Konstruktor übergeben werden:
 +<code java>
 +class Ball extends Rectangle {
 +   
 +   private double vx;
 +   private double vy;
 +   private Schläger schlägerLinks;
 +   private Schläger schlägerRechts;
 +
 +
 +   Ball(double breite, double x, double y, Schläger schlägerLinks, Schläger schlägerRechts) {
 +      super(x - breite / 2, y - breite / 2, breite, breite);
 +      setFillColor(Color.white);
 +      this.schlägerLinks = schlägerLinks;
 +      this.schlägerRechts = schlägerRechts;
 +
 +      setzeZufallsGeschwindigkeit();
 +   }
 +   
 +   usw...
 +}
 +</code>
 +
 {{ youtube>DIKP2A2S2x8?large }} {{ youtube>DIKP2A2S2x8?large }}
 <HTML> <HTML>
Zeile 84: Zeile 111:
 class Schläger extends Rectangle { class Schläger extends Rectangle {
        
-   String tasteRauf; +   private String tasteRauf; 
-   String tasteRunter;+   private String tasteRunter;
  
    double dy = 5;    double dy = 5;
Zeile 117: Zeile 144:
 class Ball extends Rectangle { class Ball extends Rectangle {
        
-   double vx; +   private double vx; 
-   double vy; +   private double vy; 
-   Schläger schlägerLinks; +   private Schläger schlägerLinks; 
-   Schläger schlägerRechts;+   private Schläger schlägerRechts;
  
  
Zeile 188: Zeile 215:
 === Wann stößt der Ball oben/unten an? Wann verlässt er links/rechts das Spielfeld? === === Wann stößt der Ball oben/unten an? Wann verlässt er links/rechts das Spielfeld? ===
 Hier eine erläuternde Grafik zu diesen Fragen: Hier eine erläuternde Grafik zu diesen Fragen:
-{{ :projects:pong:pasted:20210220-114157.png?500 }}+{{ :pong:pasted:20230110-074959.png?500 }}
 ===== Hauptprogramm, Punkteanzeige, Startbildschirm, Game over ===== ===== Hauptprogramm, Punkteanzeige, Startbildschirm, Game over =====
 +==== Klassendiagramm ====
 +Das Hauptprogramm muss bei der Anzeige des Startbildschirms den Ball und die Schläger ausblenden und beim Starten des Spiels wieder einblenden, den Ball auf seine Startposition setzen usw. . Daher muss es sowohl den Ball als auch die beiden Schläger kennen. Es ist günstig, die Schläger und den Ball direkt im Konstruktor der Klasse ''Pong'' zu erstellen.
 +{{ :pong:pasted:20230116-084004.png }}
 +
 +
 +
 +
 {{ youtube>V0LthmW7Qqo?large }} {{ youtube>V0LthmW7Qqo?large }}
 <HTML> <HTML>
Zeile 200: Zeile 234:
 class Pong extends Actor { class Pong extends Actor {
        
-   Text punkteanzeige;+   private Text punkteanzeige;
        
-   Text großeAnzeige;+   private Text großeAnzeige;
  
-   int punkteLinks = 0; +   private int punkteLinks = 0; 
-   int punkteRechts = 0;+   private int punkteRechts = 0;
  
-   String zustand;+   private String zustand;
  
-   Schläger links; +   private Schläger links; 
-   Schläger rechts; +   private Schläger rechts; 
-   Ball ball;+   private Ball ball;
  
    Pong() {    Pong() {
Zeile 288: Zeile 322:
       zustand = neuerZustand;       zustand = neuerZustand;
  
 +   }
 +   
 +   public String getZustand(){
 +      return zustand;
    }    }
 } }
Zeile 295: Zeile 333:
 class Schläger extends Rectangle { class Schläger extends Rectangle {
        
-   String tasteRauf; +   private String tasteRauf; 
-   String tasteRunter;+   private String tasteRunter;
  
-   double dy = 5;+   private double dy = 5;
        
    Schläger(double x, double breite, double höhe, String tasteRauf, String tasteRunter) {    Schläger(double x, double breite, double höhe, String tasteRauf, String tasteRunter) {
Zeile 330: Zeile 368:
 class Ball extends Rectangle { class Ball extends Rectangle {
        
-   double vx; +   private double vx; 
-   double vy; +   private double vy; 
-   Schläger schlägerLinks; +   private Schläger schlägerLinks; 
-   Schläger schlägerRechts; +   private Schläger schlägerRechts; 
-   Pong pong; +   private Pong pong;
  
    Ball(double breite, double x, double y, Schläger schlägerLinks, Schläger schlägerRechts,     Ball(double breite, double x, double y, Schläger schlägerLinks, Schläger schlägerRechts, 
Zeile 350: Zeile 387:
    public void act() {    public void act() {
              
-      if(pong.zustand != "Im Spiel") {+      if(pong.getZustand() != "Im Spiel") {
          return;          return;
       }       }
pong/start.1673333052.txt.gz · Zuletzt geändert: 2023/01/10 06:44 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki