Ergebnis 1 bis 4 von 4

Java Spiel "Pong" programmieren

  1. #1 Zitieren
    Veteran Avatar von Sel93
    Registriert seit
    Oct 2009
    Beiträge
    606
    Hi

    ich muss für informatik mit BlueJ "Pong" das Spiel programmieren.

    Ich habe eine wichtige Frage zum Prinzip von Pong: Wie wird berechnet, wie der Ball vom "Balken" des Spielers abprallt?

    Erst wollte ich Einfallswinkel = Ausfallswinkel machen, das war dann aber nicht ganz richtig.

    Ich will den Balken jetzt in verschiedene Abschnitte unterteilen. Genau in der Mitte des Balkens ist Einfallswinkel = Ausfallswinkel, und das ändert sich dann nach oben und nach unten.

    Aber um das zu programmieren, muss ich wissen wie man das berechnet bei Pong.

    Weiss einer wie das geht?
    Danke im Vorraus.
    Sel93 ist offline

  2. #2 Zitieren
    Auserwählter Avatar von haddock
    Registriert seit
    Aug 2005
    Ort
    /dev/null
    Beiträge
    6.575
    Naja, eine switch Abfrage auf Y-Postion Balken - Y-Position Ball, womit du schaust, wieweit das Ergebnis von Null in welcher Richtung weg ist und davon abhängig dann Winkel/Steigung bestimmen.

    Meine Apps im AppStore:
    [Bild: frantic.png]

    haddock ist offline

  3. #3 Zitieren
    Held Avatar von Satans Krümelmonster
    Registriert seit
    Aug 2007
    Beiträge
    5.797
    genau das hat er doch geschrieben Oo
    er möchte wissen, welche abhängigkeit der winkel von dem auftreffspunkt des balls hat.

    wie genau das bei pong berechnet wird, kann ich der auch nicht sagen, aber ich würde auf sowas, wie
    α=β*(a+b)/a

    wobei α der ausfallswinkel, β der einfallswinkel, a die halbe länge des balkens und b die entfernung des auftreffspunktes von der mitte des balkens ist.
    Satans Krümelmonster ist offline

  4. #4 Zitieren
    praise the o)))  Avatar von Tawarien
    Registriert seit
    Aug 2005
    Beiträge
    8.690
    Ich hab selbst schon Pong in Java programmiert, aber wohl nicht die super Lösung, aber es läuft.
    Hier, auf meiner Website, ist das Programm, auch mit Quellcode, kannst dirs ja mal ansehen.

    Ich hab dir mal die Routinen der Balkensteuerung und der Ballbewegung rauskopiert,
    vielleicht hilfts dir ja.

    Code:
    //Balken links
    addKeyListener(this);
    b1.p.y += b1.p.y_speed;
    b1.p.x += b1.p.x_speed;
    if((b1.p.y+b1.height) >= appletsize_y){
    b1.p.y_speed = 0;
    b1.p.y = appletsize_y - b1.height - 1;
    }
    if((b1.p.y) <= 0){
    b1.p.y_speed = 0;
    b1.p.y = 1;
    }
    
    //Balken rechts
    b2.p.y += b2.p.y_speed;
    b2.p.x += b2.p.x_speed;
    if((b2.p.y+b2.height) >= appletsize_y){
    b2.p.y_speed = 0;
    b2.p.y = appletsize_y - b1.height - 1;
    }
    if((b2.p.y) <= 0){
    b2.p.y_speed = 0;
    b2.p.y = 1;
    }
    
    //KI Balken rechts
    // b2.p.y = b.p.y+b.diam/2-b2.height/2;
    
    //Ball
    b.p.x += b.p.x_speed;
    b.p.y += b.p.y_speed;
    if((b.p.x < b1.p.x+b1.width) & ((b.p.y >= b1.p.y+b.diam/2) | (b.p.y <= b1.p.y+b1.height+b.diam/2))){
    b.p.x_speed = 2;
    route = 0;
    if(b.p.y_speed <= 4)
    b.p.y_speed = b1.p.y_speed+b.p.y_speed;
    }
    if((b.p.x < b1.p.x+b1.width) & ((b.p.y < b1.p.y-b.diam/2) | (b.p.y > b1.p.y+b1.height-b.diam/2))){
    b.p.x = appletsize_x/2-appletsize_x/20;
    b.p.y = appletsize_y/2-appletsize_x/20;
    b.p.x_speed = 0;
    b.p.y_speed = 0;
    point1++;
    p1 = String.valueOf(point1);
    }
    if((b.p.x > b2.p.x-b.diam) & ((b.p.y >= b2.p.y+b.diam/2) | (b.p.y <= b2.p.y+b2.height+b.diam/2))){
    b.p.x_speed = -2;
    route = 1;
    if(b.p.y_speed <= 4)
    b.p.y_speed = b2.p.y_speed+b.p.y_speed;
    }
    if((b.p.x > b2.p.x-b.diam) & ((b.p.y < b2.p.y-b.diam/2) | (b.p.y > b2.p.y+b2.height-b.diam/2))){
    b.p.x = appletsize_x/2-appletsize_x/20;
    b.p.y = appletsize_y/2-appletsize_x/20;
    b.p.x_speed = 0;
    b.p.y_speed = 0;
    point2++;
    p2 = String.valueOf(point2);
    }
    if(b.p.y <= 0)
    b.p.y_speed = -b.p.y_speed;
    if(b.p.y >= appletsize_y-b.diam)
    b.p.y_speed = -b.p.y_speed;
    Tawarien ist offline

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •