Benutzer-Werkzeuge

Webseiten-Werkzeuge


pong:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
pong:start [2023/01/10 06:50] – [Programmierung des Balls] 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 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 190: Zeile 217:
 {{ :pong:pasted:20230110-074959.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.1673333411.txt.gz · Zuletzt geändert: 2023/01/10 06:50 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki