Java - Pong programmieren

1337_alpha

Enthusiast
Thread Starter
Mitglied seit
02.03.2008
Beiträge
7.762
Ort
Großherzogtum Baden
Hey ;)

Wir müssen derzeit bei uns in IT eine Projektarbeit machen und am Montag müssen wir zeigen was wir bisher erreicht haben ;)

Hier ist das was ich bisher erreicht hab nur verlier ich langsam irgendwie den Überblick wenn ich ehrlich bin

Was ich jetzt noch gerne einfügen würde bis zum Montag sind eben die Paddles und eine Mittellinie
Mittellinie sollte recht einfach denke ich zu programmieren sein (eben einfach ne Linie die auf der x Koordinate (Spielfeldbreite/2) sitzt

Aber bei den Paddles hab ich nicht den geringsten Schimmer da ich sowas noch nie gemacht hab
Soll das per Rectangle oder per Linie die eine bestimmte Dicke aufweist gemacht werden?

Und wie zur Hölle steuer ich die dann? o_O Hab im Internet schon nach Lösungen gesucht aber da findet man so gut wie gar nichts
Wäre sehr nett wenn mir jemand helfen könnte da ich wie gesagt auch Langsam den Überblick verlier

Ich wäre sehr dankbar wenn mir jemand zeigen könnte wie das geht
Gerne auch per ICQ ;)

edit: So
Also die Paddles sind schonmal eingefügt und ich habs auch so gemacht dass sie exakt in der Mitte sitzen usw
Die Mittellinie braucht ja keine Kollisionsabfrage aber die Paddel auf jeden Fall
Wie kann ich dies realisieren?
Und vorallem was noch viel wichtiger ist bevor sie überhaupt eine Kollisionsabfrage haben ist wie ich sie halt bewege ^^
Den Code hab ich editiert

Code:
import java.awt.*;
import java.awt.event.*;

//Variablen
public class Pong extends Frame{
  static int breite=1280,hoehe=1024,punkte;
  int max_zahl = 1;
  int trefferspieler1=0;
  int trefferspieler2=0;
  Ball b;
  private Image dbImage;
  private Graphics dbg;

  //Zeichnen des Fensters
  public void update(Graphics g)
    {
        if(dbImage==null)
        {
            dbImage=createImage(this.getSize().width, this.getSize().height);
            dbg=dbImage.getGraphics();
        }
        
        dbg.setColor(getBackground());
        dbg.fillRect(0,0,this.getSize().width, this.getSize().height);
        dbg.setColor(getForeground());
        paint(dbg);
        g.drawImage(dbImage,0,0,this);
    }
  
  //Spiel wird geschlossen wenn x gedrückt wird
  public Pong(String s){
    super(s); 
    this.addWindowListener (new WindowAdapter(){
      public void windowClosing(WindowEvent e){
        dispose();
        System.exit(0);
      }
    });
//Farbe des Balls und Startposition
      Color farbe=Color.WHITE;
      b = new Ball(this,1024/2,800/2,14,farbe); //Startposi x y,Größe, farbe
  }

  //Überschrift des Fensters,Größe,Hintergrundfarbe
  public static void main(String args[]){
    Pong f = new Pong("Pong - TGI-EK - Projektarbeit");
    f.setSize(breite,hoehe);
    f.setBackground(Color.black);
    f.setVisible(true);
  }


  //Punktestandanzeige (unvollständig) - korrekte Zählung fehlt
  public void paint(Graphics f){
    b.maleball(f);
    f.setColor(Color.white);
    f.drawString("Punktestand: "+ trefferspieler1+" : "+trefferspieler2,breite/2+20, hoehe-20);
    f.fillRect(breite/2, 0, 8, hoehe); //Mittellinie
    f.fillRect(40, hoehe/2-150/2, 8, 150); //Paddle 1 Paddles sind exakt in der Mitte
    f.fillRect(breite-40-8, hoehe/2-150/2, 8, 150); //Paddle 2 (x Posi - abstand - dicke,y Posi, Dicke, Länge)
  }
 

}

//Bewegung des Balls
class Ball extends Thread{
  private int x,y,r,xr=2,yr=3;
  Color farbe;
  boolean sichtbar=true;
  Pong b;

  public Ball(Pong e,int xk,int yk,int rk,Color kfarbe){
    farbe=kfarbe;
    b=e;
    r=rk;
    x=xk;
    y=yk;
    this.start();
  }

  public void sichtbar_wechsel(boolean x){sichtbar=x;}

  public void maleball(Graphics g){ //Zeichnen des Balls
    if (sichtbar==true){
      g.setColor(farbe);
      g.fillOval(x,y,r*2,r*2);
    }
  }

  public int b_x(){return x;}

  public int b_y(){return y;}

  public int b_r(){return r;}

  // Bewegung des Balls + Einfallswinkel = Ausfallswinkel + Geschwindigkeit
  public void run(){
    for(;;){
      try {this.sleep(3);}
      catch(InterruptedException e){}
      x=x-xr;
      y=y-yr;
      if( (x<=0) || (x>=(b.breite-2*r)) ) xr = -xr;
      if( (y<=20) || (y>=(b.hoehe-2*r)) ) yr = -yr;
      b.repaint();
      
    }
  }
}
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Das Steuern der Paddels würde ich über Tastendrücke machen Spieler 1 z.B. über W und S, Spieler 2 über die hoch und runter Pfeiltasten.

Die Kollisionsabfrage ist im Prinzip ja ein Koordinaten Vergleich. Die Koordinaten und Größe des Balls sind ja jederzeit bekannt, ebenso die der Paddels.
 
Jo genau über die Tasten soll es gesteuert werden
Dazu brauch ich ja einen KeyListener und ich hab mir auch schon diverse Sachen angeguckt aber irgendwie bringt mich das nicht weiter
Ich hab keinen blassen Schimmer wie ich den implementieren soll
 
Schau dir mal das an: Keylistener.java - pongjava - a simple pong- game for Java, which I programm for reasons of practice and experience. - Google Project Hosting

Wenn du also mit KeyListener arbeitest und eine Taste gedrückt wird, wird ein Event ausgelöst.
Du fragst also ab welche Taste gedrückt wurde und verschiebst das Panel dann einfach nach oben, wie du das machst ist dir ja freigestellt.

P.S. Habe Pong mal in C# geschrieben, ich schau mal nach ob ich das noch habe, ist schon länger her :P
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh