Pong Spiel Score Zähler! -.-

yourhope

Mitglied
Also nach langem rumspielen und Testen habe auch ich dass Pong Spiel geschafft... Naja, jetzt würde ich gerne, dass der Score hochzählt. Leider habe ich ein Problem damit, dass sich das Label nicht erhöhen lässt. Ich versuche es mit einem repaint(), leider weiß ich nicht wie und wo ich es einsetzen muss, dass er es aktualisiert.

Hier im Konstruktor?
Java:
CPongTest(String titel) {
  	super(titel);

	//Label erzeugen
  	JLabel mylabel = new JLabel();
  	mylabel.setText("Score " + Score);

        //HIER HABE ICH ES SCHON VERSUCHT, mit einem einfachen repaint() und mylabel.repaint();

	//Zufallszahlen für Start erstellen
	int zufallx = (int) (Math.random()*100);
	int zufally = (int) (Math.random()*100);
	

	
	xposb=zufallx;
	yposb=zufally;
		
	//Zeichenfläche erzeugen
	m_zeichenfläche = new CMeinJPanel();
	
	//Slider erzeugen
	m_Spaddel = new JSlider(JSlider.VERTICAL,-300,0,-40);
     
    // Einen Layout Manager anlegen
    setLayout(new BorderLayout());
 
    // Die Zeichenfläche anlegen
	add(m_zeichenfläche);
	
	//Schriftzug zur Fläche hinzufügen
	m_zeichenfläche.add(mylabel);

	// Den Slider anlegen
	add("East",m_Spaddel);
	
	//Slider ChangeListener 
	m_Spaddel.addChangeListener(new Slider());


	
	setDefaultCloseOperation(EXIT_ON_CLOSE);
  } // ende Konstruktor

Kollisionsabfrage zwischen Ball und "Schläger"
Java:
	//Wenn Ball Paddel berührt
	if((yposb>(-PosSlider))&&(yposb<(-PosSlider+20))){
	
	//Ball zurück stoßen
	deltax*=-1;
	xposb+=deltax;	
	
	//Score erhöhen
	Score++;
	
	m_zeichenfläche.setVisible(false);//UND WIE MAN HIER SIEHT VERSUCHT DIE MALFLÄCHE NEU  ZEICHNEN ZU LASSEN BZW AUCH HIER MIT EINEM REPAINT() VERSUCHT
	m_zeichenfläche.setVisible(true);

	}
}


Hier Nochmal die Gesamte Programmierung wenn es Notwenidig ist:

Java:
/*	CPongVorlage1
	Ein vertikaler Slider soll ein blaues Paddel 5x20 in einem Fenster von
	400x300 Pixel an X=390 von Y=0..280 bewegen.
	Das Spielfeld soll von schwarzern Strichen der Dicke 2 Pixel begrenzt
	werden.
	
	Für HI12 SAS von CLA am 11.5.11
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.awt.Label.*;

public class CPongTest extends JFrame {
	JSlider m_Spaddel;		// Schieber Paddel,
	CMeinJPanel m_zeichenfläche;
	Label hinweis;
	int PosSlider=-40;
	int xposb=150;
	int yposb=200;
	int deltax;
	int deltay;
	int Score=0;
	int Scorealt;
	int zufallx;
	int zufally;
	

	// weitere Klassenvariablen

  public static void main(String[] args) {
    
    CPongTest fenster = new CPongTest("Pong1");
    fenster.pack();
    fenster.setSize(450,400);
    fenster.setResizable(false);
    fenster.setVisible(true);
  	fenster.spielen();

  } // ende main()
 		
	//Konstruktor

  CPongTest(String titel) {
  	super(titel);

	//Label erzeugen
  	JLabel mylabel = new JLabel();
  	mylabel.setText("Score " + Score);

	//Zufallszahlen für Start erstellen
	int zufallx = (int) (Math.random()*100);
	int zufally = (int) (Math.random()*100);
	

	
	xposb=zufallx;
	yposb=zufally;
		
	//Zeichenfläche erzeugen
	m_zeichenfläche = new CMeinJPanel();
	
	//Slider erzeugen
	m_Spaddel = new JSlider(JSlider.VERTICAL,-300,0,-40);
     
    // Einen Layout Manager anlegen
    setLayout(new BorderLayout());
 
    // Die Zeichenfläche anlegen
	add(m_zeichenfläche);
	
	//Schriftzug zur Fläche hinzufügen
	m_zeichenfläche.add(mylabel);

	// Den Slider anlegen
	add("East",m_Spaddel);
	
	//Slider ChangeListener 
	m_Spaddel.addChangeListener(new Slider());


	
	setDefaultCloseOperation(EXIT_ON_CLOSE);
  } // ende Konstruktor

  //ChangeListener für Slider
  class Slider implements ChangeListener{
  	
  	public void stateChanged(ChangeEvent e){
  		//SliderKoordinaten holen
  		JSlider source = (JSlider)e.getSource();
  		PosSlider=source.getValue();
  	
  		repaint();
  	}
  }
  
  //Spiel starten und Ball bewegen lassen
  void spielen(){
  	deltax=1;
  	deltay=1;
  	for(;;){
  	xposb+=deltax;
  	yposb+=deltay;
  	
  	//Kollision prüfen
  	Kollision();
  		
  		//Programm für 10 ms stoppen
  		try { Thread.sleep(10); } catch (InterruptedException e) {};
  		repaint();	
  	}
  	}	
  //Kollisions abfrage
  void Kollision(){
  
	//SPaddel
	if(xposb>=426){
	
	//Neustart des Spiels aufrufen
	neustart();	
	}
	
	//Wenn Ball hinter Paddel
	if(xposb>=390)
	{
		
		//Wenn Ball Paddel berührt
	if((yposb>(-PosSlider))&&(yposb<(-PosSlider+20))){
	
	//Ball zurück stoßen
	deltax*=-1;
	xposb+=deltax;	
	
	//Score erhöhen
	Score++;
	
	m_zeichenfläche.setVisible(false);
	m_zeichenfläche.setVisible(true);

	}
}
	
  //Linke Wand
	 if(xposb<=0)
  {
  	deltax*=-1;
  	xposb+=deltax;
  }
  
  //Unten / Oben
  	if ( (yposb <=0) || (yposb >= 320) ) {
  		deltay *= -1;
  		yposb += deltay;
  	}
  }
  
  //Neustarten des Spiels
 void neustart(){
  	
  	//Zufallszahlen für jeden Neustart erzeugen
 	int zufallx = (int) (Math.random()*100);
	int zufally = (int) (Math.random()*100);
 
  xposb=zufallx;
  yposb=zufally;
}
 	
  
  class CMeinJPanel extends JPanel {
	public void paintComponent(Graphics g) {
    // Hier wird gezeichnet.

	
	//PosSlider
	g.setColor(Color.blue);
	g.fillRect(390,-PosSlider,5,20);
	//Oben
	g.setColor(Color.black);
	g.fillRect(0,0,426,2);
	
	//Links
	g.fillRect(0,0,2,320);
	
	
	//Unten
	g.fillRect(0,320,426,2);


	//Rechts
	g.fillRect(425,0,2,322);
	
	//Ball
	g.setColor(Color.red);
	g.fillOval(xposb,yposb,4,4);
	
		

	}	//Ende paintComponent 
  public Dimension getMinimumSize(){
  	return new Dimension(400,300);
  }
  public Dimension getPreferredSize(){
  	return getMinimumSize();
  }
  }  // Ende von CMeinJPanel
} // ende class CPongVorlage1


Danke schonmal im Vorraus

your
 

yourhope

Mitglied
Danke für die Idee, allerdings passiert bei mir ja gar nichts. Ich habe ja die Variable Score oben auf Null gesetzt. Dadurch wird mir ja auch im Label der Score Null angezeigt, allerdings wenn ich den Ball Hitte, passiert ja gar nichts.
 

XHelp

Top Contributor
Ich seh die Stelle nicht, wo du an dem
Code:
mylabel
irgendwas änderst. Du setzt doch nur den Wert einer int-Variable, wie soll sich dadruch der Inhalt des Labels ändern?
 

XHelp

Top Contributor
Schön, aber ich hätte mit sowas wie
Code:
bla.setText(...)
gerechnet. Was soll denn das bringen, wenn du ein Label mit dem alten Inhalt neu zeichnest?
 

yourhope

Mitglied
Ja, aber Score wird doch im Spielverlauf erhöht und wenn ich darunter schreibe repaint, ist die Score variable doch um eins erhöht und sollte daurch doch auch dann erhöht werden?
 

yourhope

Mitglied
Kannst du mir bitte ein Beispiel schreiben, glaube reden gerade aneinander vorbei. :p

Ich soll also nach

mylabel.settext(Score);
repaint();

und dann was?
 

XHelp

Top Contributor
Nö, die Änderung wird ja nicht per Zauberhand bis zum Label durchgereicht, wo irgendwer irgendwie entscheidet wie man mit dieser Änderung umzugehen hat und die sich nun der neue Wert zusammensetzt. Du solltest also explizit
Code:
.setText
aufrufen.
Dafür solltest du aber die Label-Instanz irgendwie zugreifbar machen (Methoden-Variable im Konstruktor reicht nicht)
 

XHelp

Top Contributor
Hier ein Beispiel:
Java:
public class CPongTest extends JFrame {
    JSlider m_Spaddel;      // Schieber Paddel,
    JLabel scoreText;
...
  CPongTest(String titel) {
...
    scoreLabel = new JLabel();
    scoreLabel.setText("Score " + Score);
  void Kollision(){
....
    Score++;
    scoreLabel.setText(Score);
...

Jetzt fällt mir auch auf, dass du ganz ungünstige Namenswahl hast: sich mal Code Conventions for the Java Programming Language durchzulesen wird nicht schaden
 

yourhope

Mitglied
Ahso, alles klar jetzt habe ich das verstanden. Programmiere nur für die Schule und muss es nur noch eine Woche machen, tut mir leid. :*

Ich habe das jetzt so gemacht, wie in deinem Beispiel gezeigt. Jetzt kommt nur noch die Fehlermeldung, dass der die Variable scoreText nicht kennt in dem void, was ja auch klar ist.
ScoreText meine ich natürlich.

Fehlermeldung:
D:\Java Programme\CPongTest.java:142: setText(java.lang.String) in javax.swing.JLabel cannot be applied to (int)

scoreText.setText(Score);
 
Zuletzt bearbeitet:

XHelp

Top Contributor
Vermutlich, weil du noch irgendwo mit mylabel arbeitest?
Ansonsten steht doch da eine Zeilenangabe: schau in die Zeile rein oder nenn die zumindestmal
 

yourhope

Mitglied
Ahso tut mir leid..

Äh Zeile 36:

CPongTest fenster = new CPongTest("Pong1");

und Zeile 62: (Wo eher der Fehler sein könnte ich es aber nicht sehe ^^)

m_zeichenfläche.add(scoreText);


Java:
  public static void main(String[] args) {
    
    CPongTest fenster = new CPongTest("Pong1");      <----------Hier
    fenster.pack();
    fenster.setSize(450,400);
    fenster.setResizable(false);
    fenster.setVisible(true);
  	fenster.spielen();

  } // ende main()
 		
	//Konstruktor

  CPongTest(String titel) {
  	super(titel);

	//Label erzeugen
	JLabel scoreText = new JLabel();
	  	scoreText.setText("Score " + Score);
	
	
		//Schriftzug zur Fläche hinzufügen


	//Zufallszahlen für Start erstellen
	int zufallx = (int) (Math.random()*100);
	int zufally = (int) (Math.random()*100);
	
	m_zeichenfläche.add(scoreText);                <----------Hier
	m_zeichenfläche.repaint();

	  	
	xposb=zufallx;
	yposb=zufally;
		
	//Zeichenfläche erzeugen
	m_zeichenfläche = new CMeinJPanel();
	
	//Slider erzeugen
	m_Spaddel = new JSlider(JSlider.VERTICAL,-300,0,-40);
     
    // Einen Layout Manager anlegen
    setLayout(new BorderLayout());
 
    // Die Zeichenfläche anlegen
	add(m_zeichenfläche);
	


	// Den Slider anlegen
	add("East",m_Spaddel);
	
	//Slider ChangeListener 
	m_Spaddel.addChangeListener(new Slider());


	
	setDefaultCloseOperation(EXIT_ON_CLOSE);
  } // ende Konstruktor
 

XHelp

Top Contributor
Du fügst in Zeile 29 was zu der Zeichenfläche noch bevor du die in Zeile 37 erstellst. Also entweder früher erstellen oder später hinzufügen.
Darüber hinaus kannst du dir das repaint im Konstruktor sparen
 

yourhope

Mitglied
Danke, dass war der Fehler, Spiel läuft jetzt soweit, nur jetzt sobald er den Paddel berührt kommt wieder ein NullPointer :D

Java:
 //Kollisions abfrage
  void Kollision(){
  
	//SPaddel
	if(xposb>=426){
	
	//Neustart des Spiels aufrufen
	neustart();	
	}
	
	//Wenn Ball hinter Paddel
	if(xposb>=390)
	{
		
		//Wenn Ball Paddel berührt
	if((yposb>(-PosSlider))&&(yposb<(-PosSlider+20))){
	
	//Ball zurück stoßen
	deltax*=-1;
	xposb+=deltax;	
	
	//Score erhöhen
	Score++;
	scoreText.setText("Score " + Score); <---HIER

	}
}


Muss ich den noch irgendwie Inizialiesieren?;(;(
 

XHelp

Top Contributor
Nein, einfach richtig abtippen ;) Im Konstruktor muss das
Code:
JLabel
vor dem scoreText weg, dann sollte alles klappen. In deinem vorletzten Post ist es Zeile 18
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Pong Spiel Problem Spiele- und Multimedia-Programmierung 1
M Einfaches Ping-Pong Spiel Spiele- und Multimedia-Programmierung 3
R Ping Pong Spiel Fehlermeldung Spiele- und Multimedia-Programmierung 12
R Ping Pong Spiel Spiele- und Multimedia-Programmierung 28
J Probleme bei Pong Spiele- und Multimedia-Programmierung 9
J Pong Programm Spiele- und Multimedia-Programmierung 1
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
S Pong java.lang.StackOverflowError Spiele- und Multimedia-Programmierung 3
B LWJGL StackOverFlow Problem nach 30sekunden. (Pong) Spiele- und Multimedia-Programmierung 2
T Torquemada´s erstes Game (Pong) Spiele- und Multimedia-Programmierung 5
A Pong Grafikgestaltung Spiele- und Multimedia-Programmierung 10
R Pong -Reruns möglich machen Spiele- und Multimedia-Programmierung 2
Y Ping Pong Spiele- und Multimedia-Programmierung 4
U Pong Spiele- und Multimedia-Programmierung 7
1 Ping Pong langsam Spiele- und Multimedia-Programmierung 13
BattleMaster246 Pong - JOGL Spiele- und Multimedia-Programmierung 2
J ping pong ball abprallen lassen Spiele- und Multimedia-Programmierung 12
L Java Ping Pong Spiele- und Multimedia-Programmierung 1
J Tips für ein kleines Pong-Applet Spiele- und Multimedia-Programmierung 4
D Java Pong Probleme Spiele- und Multimedia-Programmierung 7
S Ping Pong: KeyListener in Paint und while Spiele- und Multimedia-Programmierung 10
W Hilfe bei Pong mit Bluej Spiele- und Multimedia-Programmierung 4
M Fragen zu meinem Pong-Clone Spiele- und Multimedia-Programmierung 6
G Ping Pong Frage Spiele- und Multimedia-Programmierung 17
L Probleme Bei Pong Programmierung Spiele- und Multimedia-Programmierung 2
G Pong klon mit Steuerungsprobleme Spiele- und Multimedia-Programmierung 8
B Pong-Klon. Denkfehler bei kollisionstest Spiele- und Multimedia-Programmierung 3
N Pong - noch 2 kleinere Probleme Spiele- und Multimedia-Programmierung 16
B Ping Pong Spiele- und Multimedia-Programmierung 11
G Pong-Klon (Applet!) Spiele- und Multimedia-Programmierung 4
H Performance check Pong Spiele- und Multimedia-Programmierung 19
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
ItundMathe1994 TicTacToe Spiel programmieren Spiele- und Multimedia-Programmierung 2
JEP1 Hilfe bei Spiel Spiele- und Multimedia-Programmierung 1
P Pokemon Spiel Funktioniert nicht ? Spiele- und Multimedia-Programmierung 3
Leon.tr3x Mein erstes Programm/Spiel Spiele- und Multimedia-Programmierung 10
O Texas Hold'em Poker als Online-Spiel mit Freunden Spiele- und Multimedia-Programmierung 5
Drachenbauer Speicher-Tool für ein Spiel schreiben Spiele- und Multimedia-Programmierung 13
M Spiel Mühle-Programmierung Java Spiele- und Multimedia-Programmierung 9
Excess Spiel abzugeben Spiele- und Multimedia-Programmierung 1
I Superhelden - Spiel Spiele- und Multimedia-Programmierung 14
E Hauptmenü und Spiel ???? Spiele- und Multimedia-Programmierung 2
L Sound in Java Spiel Spiele- und Multimedia-Programmierung 5
R Interaktives Spiel Spiele- und Multimedia-Programmierung 5
L Spiel im Editor testen Spiele- und Multimedia-Programmierung 4
Jackii dispatchUncaughtException in Quiz Spiel mit GUI Layout Spiele- und Multimedia-Programmierung 6
D Textbasiertes Spiel Spiele- und Multimedia-Programmierung 8
K Android Spiel Programmieren Spiele- und Multimedia-Programmierung 6
L BrickBreaker Spiel Spiele- und Multimedia-Programmierung 3
A Spiel Figur ansprechen und bewegen Spiele- und Multimedia-Programmierung 3
it_is_all Dialogbox im Spiel - Text in Blöcke aufteilen Spiele- und Multimedia-Programmierung 4
F Koordinieren und Essen von Snake - Spiel Spiele- und Multimedia-Programmierung 14
G Entity Verwaltung in einem 2D Spiel Spiele- und Multimedia-Programmierung 1
E Möchte Spiel Programmieren Spiele- und Multimedia-Programmierung 7
S Connect6 Spiel - Code in ei Spiele- und Multimedia-Programmierung 2
A Spiel nach Abfrage beenden oder neustarten Spiele- und Multimedia-Programmierung 1
G Welten Generierung 2D Spiel Spiele- und Multimedia-Programmierung 4
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
N Problem mit 2D Spiel Spiele- und Multimedia-Programmierung 17
T Probleme bei "Pixel-Fighting"-Spiel: Unausgewogene Mannschaften??? Spiele- und Multimedia-Programmierung 4
L Coordinate Space JavaFX 2d Spiel Spiele- und Multimedia-Programmierung 0
C Vier Gewinnt Spiel Programmiertipp Spiele- und Multimedia-Programmierung 11
N Jump and run Spiel - wo anfangen / weitermachen? Spiele- und Multimedia-Programmierung 11
K Spiel zum zuordnen von Dienstgraden und Dienstgradabzeichen Spiele- und Multimedia-Programmierung 5
M Textbasiertes Spiel programmieren Spiele- und Multimedia-Programmierung 4
T 2d-Spiel Licht Spiele- und Multimedia-Programmierung 5
S Jump 'n' Run-Spiel Kollisionserkennung Spiele- und Multimedia-Programmierung 3
T Spiel rendern Spiele- und Multimedia-Programmierung 2
Grevak Sounds im Spiel Spiele- und Multimedia-Programmierung 5
B Fehlerhafte Mob Bewegungen in Tower Defense Spiel Spiele- und Multimedia-Programmierung 2
F Spiel ähnlich wie SimCity/o.ä programmieren Spiele- und Multimedia-Programmierung 5
X Erklärung zu einem Tic Tac Toe Spiel Spiele- und Multimedia-Programmierung 1
I Spectator Modus für Spiel ähnlich zu Terraria Spiele- und Multimedia-Programmierung 8
I Textbasiertes Spiel - Umsetzungsfrage & Schleifen Problem Spiele- und Multimedia-Programmierung 26
M Kollisions abfrage bei 3D spiel? Spiele- und Multimedia-Programmierung 12
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
P [Spiel]Welche Bilder sind gleich Spiele- und Multimedia-Programmierung 2
E GUI zum Spiel hinzufügen Spiele- und Multimedia-Programmierung 19
S 2D Spiel - Physics Spiele- und Multimedia-Programmierung 16
S 2D Spiel "Der Sprung" Spiele- und Multimedia-Programmierung 7
A 2D Spiel ohne Tiles Spiele- und Multimedia-Programmierung 10
V welche vorgehensweise beforzieht ihr bei einfachem Quizz Spiel ? Spiele- und Multimedia-Programmierung 4
S Quaxli's Heli Spiel läuft nicht nach Plan Spiele- und Multimedia-Programmierung 2
G Methode sleepen während das Spiel weiterläuft Spiele- und Multimedia-Programmierung 3
T Spiel Überprüfung Spiele- und Multimedia-Programmierung 3
P Spiel laggt nach unbestimmter Zeit tierisch. Spiele- und Multimedia-Programmierung 27
S Hilfe bei Spiel Spiele- und Multimedia-Programmierung 6
B Hauptmenü für Spiel Spiele- und Multimedia-Programmierung 1
W Spiel ist langsam/laggt Spiele- und Multimedia-Programmierung 18
J Ascii Spiel Spiele- und Multimedia-Programmierung 1
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
O Vollständige Musik in Spiel einbauen (wav - Format) Spiele- und Multimedia-Programmierung 8
Y Quiz Spiel Spiele- und Multimedia-Programmierung 1
J Conways Spiel des Lebens nachprogrammiert Spiele- und Multimedia-Programmierung 1
B Spiel Programmieren, die Anfänge Spiele- und Multimedia-Programmierung 6
D [OpenGL] Spiel in der Art von Age of Empires Spiele- und Multimedia-Programmierung 4
lord239123 suche Graphiker für ein Pokemon-Spiel Spiele- und Multimedia-Programmierung 6
S Spiel installeren lassen und organisieren Spiele- und Multimedia-Programmierung 3
J Lichtupdate in tile-basiertem Spiel Spiele- und Multimedia-Programmierung 4
P Erstes Spiel (Strategie) Spiele- und Multimedia-Programmierung 31

Ähnliche Java Themen

Neue Themen


Oben