Bitte um Erklärung

Status
Nicht offen für weitere Antworten.

Gott

Mitglied
Hallo

Ich bin totaller anfänger in sachen java.

Könnte mir jemand folgenes programm schritt für schritt erklären?

Wäre supa nett!!!
Java:
 * Pong in 260 zeilen.
  *
  * @version 1.0 vom 02.01.2006
  * @Mirko Heinold [url=http://www.winice.de]WINiCE Dev.[/url]
  */

public class Pong extends JApplet implements KeyListener, Runnable{
  // Anfang Variablen
  private JPanel jpaCenter = new JPanel();
  private final int BALKEN_BREITE = 5;
  private final int BALKEN_HOEHE = 40;
  private final int BALL_DURCHMESSER = 10;
  private boolean[] taste = new boolean[256];
  private Point[] balken = new Point[2];
  private int[] lebenSpieler = new int[2];
  private String[] nameSpieler = new String[2];
  private Point ball;
  private Graphics spielfeld;
  private int xBewegung, yBewegung;
  private JPanel jpaNorth = new JPanel();
  private JLabel jlbLinks = new JLabel();
  private JLabel jlbMitte = new JLabel();
  private JLabel jlbRechts = new JLabel();
  private boolean spiel = false, pause;
  private int ballKontakteInFolge, geschwindigkeit;
  // Ende Variablen

  public void init() {
    System.out.println("Init");
    Container cp = getContentPane();
    cp.setLayout(new BorderLayout());

    // Anfang Komponenten
    cp.add(jpaCenter, BorderLayout.CENTER);
    cp.add(jpaNorth, BorderLayout.NORTH);
    jpaNorth.add(jlbLinks, BorderLayout.NORTH);
    jlbMitte.setHorizontalAlignment(SwingConstants.CENTER);
    jpaNorth.add(jlbMitte, BorderLayout.NORTH);
    jlbRechts.setText("Bitte clicken sie zum starten hier !   ");
    jlbRechts.setHorizontalAlignment(SwingConstants.RIGHT);
    jpaNorth.add(jlbRechts, BorderLayout.NORTH);
    // Ende Komponenten
    
    addKeyListener(this);
    addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent e){
        if(jlbRechts.getText().equals("Bitte clicken sie zum starten hier !   "))
          go();
      }
    });
  }
  private void go(){
    System.out.println("Go");
    // setzen der startpositionen der Balken und des balls
    int balkenYPosition = jpaCenter.getHeight() / 2;
    balkenYPosition = balkenYPosition - (BALKEN_HOEHE / 2);
    balken[0] = new Point(1, balkenYPosition);
    balken[1] = new Point((jpaCenter.getWidth() - BALKEN_BREITE - 2), balkenYPosition);
    ball = new Point(100, 100);

    for(int i = 0; i < balken.length; i++){  // Setzen Spielernamen und
      lebenSpieler[i] = 15;                  // deren leben
      nameSpieler[i] = "Spieler" + i;
    }
    showLabel();
    
    spielfeld = jpaCenter.getGraphics();  // definieren des Spielfeld
    paint(); // malen des Spielfeldes
    
    ballKontakteInFolge = 0;
    geschwindigkeit = 5;
    xBewegung = yBewegung = 1;
    pause = false;
    if(!spiel){ // wenn kein Spiel läuft
      spiel = true;
      new Thread(this).start(); // starten des balls
    }
  }
  // Anfang Ereignisprozeduren
  public void keyTyped(KeyEvent e){
    if(e.getKeyChar() == 'n'){
      go();
    }else if(e.getKeyChar() == 'p'){
      if(pause){
        pause = false;
        paint();
      }
      else pause = true;

    }else if(e.getKeyChar() == 'i'){
      pause = true;
      showInfo();
    }
  }
  public void keyPressed(KeyEvent e){
    if(taste[e.getKeyCode()]) return; //wenn das drücken der taste bereits registriert ist dann breche ab
    taste[e.getKeyCode()] = true;
    if(e.getKeyChar() == 'w'){
      moveBalken(e.getKeyCode(), 0, true);
    }else if(e.getKeyChar() == 's'){
      moveBalken(e.getKeyCode(), 0, false);
    }else if(e.getKeyCode() == 38){
      moveBalken(e.getKeyCode(), 1, true);
    }else if(e.getKeyCode() == 40){
      moveBalken(e.getKeyCode(), 1, false);
    }
  }
  public void keyReleased(KeyEvent e){
    taste[e.getKeyCode()] = false;
  }
  public void run(){
    // Bewegen des balls
    System.out.println("Run");
    while(spiel){
      if(ball.y == 1 || (ball.y + BALL_DURCHMESSER) == (jpaCenter.getHeight() - 2)) // Treffen auf oberen oder unteren Rand
        yBewegung *= -1;
      clearBall();
      if(ball.x == 1){
        lebenSpieler[0]--;
        ballKontakteInFolge = 0;
        showLabel();
        if(lebenSpieler[0] == 0){
          showInfo("Herzlichen Glückwunsch " + nameSpieler[1] + " Sie haben gewonnen!!!\n" + nameSpieler[0] + " hatte keien chance und hat verloren! LOSER!!!\n");
          spiel = false;
          return;
        }else{
           int x = (jpaCenter.getWidth() / 2) - (BALL_DURCHMESSER / 2);
           int y = (jpaCenter.getHeight() / 2) - (BALL_DURCHMESSER / 2);
           ball.move(x, y);
        }
      }else if(ball.x == (jpaCenter.getWidth() - 2 - BALL_DURCHMESSER)){
        lebenSpieler[1]--;
        ballKontakteInFolge = 0;
        showLabel();
        if(lebenSpieler[1] == 0){
          showInfo("Herzlichen Glückwunsch " + nameSpieler[0] + " Sie haben gewonnen!!!\n" + nameSpieler[1] + " hatte keien chance und hat verloren! LOSER!!!\n");
          spiel = false;
          return;
        }else{
          int x = (jpaCenter.getWidth() / 2) - (BALL_DURCHMESSER / 2);
          int y = (jpaCenter.getHeight() / 2) - (BALL_DURCHMESSER / 2);
          ball.move(x, y);
        }
      }else if((ball.x == (balken[0].x + BALKEN_BREITE)) && ((ball.y + BALL_DURCHMESSER) >= balken[0].y)&& (ball.y <= (balken[0].y + BALKEN_HOEHE))){
        xBewegung *= -1;    // balken 0
        ballKontakteInFolge++;
        drawBalken(0);
      }else if(((ball.x + BALL_DURCHMESSER) == balken[1].x) && ((ball.y + BALL_DURCHMESSER) >= balken[1].y)&& (ball.y <= (balken[1].y + BALKEN_HOEHE))) {
        xBewegung *= -1;  // balken 1
        ballKontakteInFolge++;
        drawBalken(1);
      }
      ball.x += xBewegung;
      ball.y += yBewegung;
      drawBall();
      if(ballKontakteInFolge == 10 && geschwindigkeit > 1){
        ballKontakteInFolge = 0;
        geschwindigkeit--;
      }
      delay(geschwindigkeit);
      while(pause);
    }
  }
  // Ende Ereignisprozeduren
  private void showLabel(){
    jlbLinks.setText(" " + nameSpieler[0] + ": " + lebenSpieler[0]);
    jlbMitte.setText(" Neues Spiel [n]  Pause [p]  Info [i] ");
    jlbRechts.setText(" " + nameSpieler[1] + ": " + lebenSpieler[1]);
  }
  private void showInfo(){
    showInfo("");
  }
  private void showInfo(final String text){
    new Frame("Info"){
      private Button buOK = new Button();
      private TextArea taAusgabe = new TextArea();
      private Panel paSouth = new Panel();
      {
        setSize(400, 400);
        setLocation(10, 10);
        setLayout(new BorderLayout());
        addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent evt) {setVisible(false); setFocus();}
        });
        add("Center", taAusgabe);
        add("South", paSouth);
        buOK.setLabel("    OK    ");
        buOK.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
            setVisible(false);
            setFocus();
          }
        });
        paSouth.add(buOK);
        setVisible(true);
        taAusgabe.append(text);
        taAusgabe.append("\nBEDIENUG\nTasten " + nameSpieler[0] + ": Hoch(w) Runter(s)\n");
        taAusgabe.append("Tasten " + nameSpieler[1] + ": Hoch(Pfeiltaste hoch) Runter(Pfeiltaste runter)\n");
        taAusgabe.append("Letze Ballgeschwindigkeit (1 = MAX): " + geschwindigkeit);
        taAusgabe.append("\n@ Mirko Heinold(mirkoheinold@gmx.net) http://www.WINiCE.de\n");
        taAusgabe.append("Version 1.0  vom 02.01.2006\n");
        taAusgabe.append("\nACHTUNG\nNach beenden des Fensters bitte [p] zum weiterspielen\nb.z.w. [n] für ein neues Spiel drücken!!!\n");
      }
    };
  }
  private void paint(){
    System.out.println("Paint");
    spielfeld.clearRect(0, 0, jpaCenter.getWidth(), jpaCenter.getHeight()); // Löschen alter objecte auf den Spielfeld
    spielfeld.drawRect(0, 0, (jpaCenter.getWidth() - 1), (jpaCenter.getHeight() - 1)); // Malen eines randes
    for(int i = 0; i < balken.length; i++){  // Setzen der Balken und bälle
      drawBalken(i);
    }
    drawBall();
  }
  private void setFocus(){
    this.requestFocus();
    this.repaint();
  }
  private void drawBalken(int i){
    spielfeld.drawRect(balken[i].x, balken[i].y, BALKEN_BREITE, BALKEN_HOEHE);
  }
  private void drawBall(){
    spielfeld.drawOval(ball.x, ball.y, BALL_DURCHMESSER, BALL_DURCHMESSER);
  }
  private void clearBalken(int i){
    spielfeld.clearRect(balken[i].x, balken[i].y, (BALKEN_BREITE + 1), (BALKEN_HOEHE + 1));
  }
  private void clearBall(){
    spielfeld.clearRect(ball.x, ball.y, (BALL_DURCHMESSER + 1), (BALL_DURCHMESSER + 1));
  }
  private static void delay(long millis){
    try{Thread.sleep(millis);}catch(InterruptedException e){ }
  }
  private void moveBalken(final int zeichen, final int balkenNummer, final boolean hoch){ // Parameter: gedrucktes zeichen
    new Thread(){         // auf dessen loslassen gewartet wird / zu bewegener Button / richtung in die er zu bewegen ist
      public void run(){
         while(taste[zeichen]){
           while(pause); // Solange das spiel pausiert ist aktion herauszögern
           if((balken[balkenNummer].y + BALKEN_HOEHE)  == (jpaCenter.getHeight() - 2) && !hoch)
             break; // wenn der unter Rand erreicht ist
           if(balken[balkenNummer].y == 1 && hoch)
             break;
           clearBalken(balkenNummer);
           if(hoch) balken[balkenNummer].y --;
           else balken[balkenNummer].y ++;
           drawBalken(balkenNummer);
           delay(2); // bewegungsgeschwindigkeit
         }
      }
    }.start();
  }
}

Danke im Voraus

GOTT:toll::toll:
 
Zuletzt bearbeitet von einem Moderator:

Gott

Mitglied
ich würde gerne wissen was JPanel bedeutet und auch das private am anfang des programms lässt mich stutzen. ich bitte um erklärung

danke:toll:
 

Ein Keks

Bekanntes Mitglied
hi

zu JPanel

zu private
* Elemente des Typs privat sind lediglich in der Klasse selbst sichtbar. Für abgeleitete Klassen und für Aufrufer von Objekten der Klasse (Instanzen) bleiben private- Variablen und -Methoden verdeckt.
* privat-Elemente sollten immer dann verwendet werden, wenn implementierungsabhängige Details zu verstecken sind, die auch in abgeleiteten Klassen nicht sichtbar sein sollen.

nebenbei:
Galileo Computing :: Java ist auch eine Insel
java api

die api enthält beschreibungen über die wichtigsten klassen und die javainsel ist ein sehr gutes online buch zu java solltest du dir vllt mal angucken

p.s. das wollte ich schon immer ma posten xD :
Google ist dein Freund -
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W FileReader - Bitte um Erklärung Java Basics - Anfänger-Themen 7
J Bitte um Erklärung Java Basics - Anfänger-Themen 4
C Polymorphie - Erklärung bitte Java Basics - Anfänger-Themen 5
M Erklärung Code Mergesort Bitte Java Basics - Anfänger-Themen 3
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
H Methoden Bitte um Erklärung der askString-Methode Java Basics - Anfänger-Themen 15
G Bitte um Erklärung dieser einer Zeile Java Basics - Anfänger-Themen 5
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
J Bitte um Erklärung für einen Java-Ausdruck Java Basics - Anfänger-Themen 8
R Erklärung bitte Java Basics - Anfänger-Themen 3
tobiasbeil Fehler array initialisierung. Nur erklärung bitte. Java Basics - Anfänger-Themen 2
D Eine Erklärung für eine 3D-Schleife bitte. :) Java Basics - Anfänger-Themen 4
ineedhelpinjava OOP Bitte wichtig Java Basics - Anfänger-Themen 6
G Bitte meinen Account löschen Java Basics - Anfänger-Themen 1
D Bitte um Hilfe muss es schnellstmöglich erledigen Java Basics - Anfänger-Themen 15
I Bitte um Hilfe zu unterstehenden Code Java Basics - Anfänger-Themen 6
M Bitte um Hilfe bei 2DArrays Java Basics - Anfänger-Themen 8
D Abrechnung bitte um hilfe Java Basics - Anfänger-Themen 25
Vivien Bitte um Optimierungsvorschläge / Verbesserungsvorschläge / allgemeines Feedback Java Basics - Anfänger-Themen 8
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
pry bitte Hilfe beim Kreditrechner objektorientiert Java Basics - Anfänger-Themen 6
marcooooo einmal noch schnell hilfe bitte:/ Java Basics - Anfänger-Themen 2
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
ZH1896ZH OOP Verstehe nicht was der Hinweis bedeutet, bitte um Hilfe! Java Basics - Anfänger-Themen 2
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
S Bitte Hilfe zu Fehlermeldung am Handy Java Basics - Anfänger-Themen 2
I Do-While / Kalkulator / Bitte um Hilfe Java Basics - Anfänger-Themen 9
P Bitte Hinweise zu folgendem "Klassenproblem" Java Basics - Anfänger-Themen 3
M Bitte um Hilfe bei Quellcode (Rekursion) Java Basics - Anfänger-Themen 6
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
C Stack und Queue in Aktion (Bitte Hilfe für die Klausur) Java Basics - Anfänger-Themen 7
F (Eclipse) Beim importieren etwas fehlerhaft bitte um Hilfe :) Java Basics - Anfänger-Themen 3
B MVC Struktur mit mehreren Szenen - wer schaut mal bitte drüber? Java Basics - Anfänger-Themen 2
T Bitte um Hilfe Java Basics - Anfänger-Themen 9
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
P Erste Schritte Bitte ein paar Erklärungen zu meinem Code Java Basics - Anfänger-Themen 6
J Bitte Hilfe Java Basics - Anfänger-Themen 4
V Memory Logik Problem/Denkblockade, bitte helft Java Basics - Anfänger-Themen 1
T Bitte um Hilfe bei Aufgabe: Long zahl = Long.parseLong(args [0]); Java Basics - Anfänger-Themen 3
A GUI- Allgemeines Problem (Bitte helfen) Java Basics - Anfänger-Themen 15
D Bitte um Hilfe bei "error: package com.apple.eawt does not exist import com.apple.eawt.*;" Java Basics - Anfänger-Themen 1
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
F Bitte mal Zusammenhänge der Klassen erklären Java Basics - Anfänger-Themen 8
P <identifier> expected Fehler bitte um Hilfe Java Basics - Anfänger-Themen 5
J Kann mir bitte mal jemand diese Codes erklären? Java Basics - Anfänger-Themen 19
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
O Rundungsfehler bitte erklären! Java Basics - Anfänger-Themen 4
K NullPointerException wird geworfen, bitte um Hilfe! Java Basics - Anfänger-Themen 7
S Variablen Hilfe bitte Java Basics - Anfänger-Themen 6
Z Erste Schritte Bitte helft mir dringend!! Java Basics - Anfänger-Themen 3
T Unit tests fehlerhaft bitte um hiiiiilfe :D Java Basics - Anfänger-Themen 1
J Ich bitte DRINGEND um Hilfe!!! Java Basics - Anfänger-Themen 16
Q Importieren meiner Boundary? Bitte Hilfe Java Basics - Anfänger-Themen 3
T Eine kurze frage vor der prüfung bitte. Java Basics - Anfänger-Themen 5
CyberFish initialisieren, obwohl es gemacht wurde! Bitte um Hilfe Java Basics - Anfänger-Themen 10
H Bitte um Hilfe von Profis. Java Basics - Anfänger-Themen 5
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
J Probleme bei kompilieren ... Bitte um Hilfe Java Basics - Anfänger-Themen 27
O Erste Schritte Aller Anfang ist schwer ! Bitte um Unterstützung Java Basics - Anfänger-Themen 6
P Bitte um hilfe bei einfachem Rechner Java Basics - Anfänger-Themen 7
B Bitte Hilfe für Funktionalität eines Sudokus Java Basics - Anfänger-Themen 8
G Brauche bitte Hilfe, bei umgekehrter Ausgabe!! Java Basics - Anfänger-Themen 6
G Input/Output FilenameFilter aber bitte keine Unterordner Java Basics - Anfänger-Themen 5
J Vererbung Anfänger Programm bitte um Kritik&Anregungen Java Basics - Anfänger-Themen 21
N Bitte Java Basics - Anfänger-Themen 2
D ???:L Bitte einmal mit drüber nachdenken Java Basics - Anfänger-Themen 5
eLogic DownloadManager - Bitte helft mir Java Basics - Anfänger-Themen 7
U finde fehler nicht! bitte um hilfe Java Basics - Anfänger-Themen 8
M Problem: code too large - bitte um Hilfe Java Basics - Anfänger-Themen 12
U Bitte Helfen kleines Spiel Java Basics - Anfänger-Themen 9
B Java und Javac funktionieren nicht - bitte hilfe Java Basics - Anfänger-Themen 5
P Bitte helft mir Java Basics - Anfänger-Themen 3
3 Bitte um Hilfe bei Lösung einer Aufgabe Java Basics - Anfänger-Themen 16
M Aus CSV-Datei lesen und anzeigen (bitte schnell um Antwort) Java Basics - Anfänger-Themen 6
R Jave Problem... bitte um Hilfe!! Java Basics - Anfänger-Themen 6
S Java problem, bitte um hilfe! Java Basics - Anfänger-Themen 9
B Bitte um Hilfe es geht um Array + Punkte wie Dreieck,Fläche etc. Java Basics - Anfänger-Themen 12
C Bitte kurzes Feedback - JavaVersionen Java Basics - Anfänger-Themen 6
M Bitte um Verbesserungsvorschläge Java Basics - Anfänger-Themen 14
N verständniss problem bitte um hilfe Java Basics - Anfänger-Themen 3
L Brauche bitte dringend Hilfe für Klausur Java Basics - Anfänger-Themen 8
B Monat und Jahr bitte um Hilfe Java Basics - Anfänger-Themen 8
J Datentypen Generics - Bitte helfen !! Java Basics - Anfänger-Themen 9
T Java Beispiel Bitte helft mir Java Basics - Anfänger-Themen 5
A Dringende Bitte um Erklärungen zum besseren Verständnis Java Basics - Anfänger-Themen 4
D Java Problem bitte um hilfe Java Basics - Anfänger-Themen 4
S Datei-KopierProgramm ? CODE BITTE VERBESSERN Java Basics - Anfänger-Themen 11
D code erklären bitte ! Java Basics - Anfänger-Themen 15
Rudolf Verstehe das Ergebnis nicht - bitte erklären Java Basics - Anfänger-Themen 7
M Kann mir bitte jemand "java.util.ArrayList" erklären? Java Basics - Anfänger-Themen 5
M Bitte um Kontrolle meines Quelltextes Java Basics - Anfänger-Themen 10
J Leichte Java Anfängerfrage. Bitte schnelle Antwort. :) Java Basics - Anfänger-Themen 10
S BITTE UM HILFE: Unterschied Deklaration und Signatur einer Methode Java Basics - Anfänger-Themen 3
S BITTE UM HILFE HASHTABLE/import java.util.Hashtable in Ecplipse Java Basics - Anfänger-Themen 12
T Problem mit Aufgabe..bitte um Hilfe Java Basics - Anfänger-Themen 8
K 50 errormeldungen- komme auch nach vielen Nachmittagen nicht weiter. bitte helfen Java Basics - Anfänger-Themen 39
D Ausgabe sauber formatieren *bitte nochmal reinschaun* Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben