Brauche hilfe bei Pong (JFrame)

SuperMeatBoy

Neues Mitglied
Hallo :)
Mein Problem liegt nicht daran, das das Spiel nicht richtig funktioniert, sondern daran, dass ich eine art Log-In machen will, und das Spiel-Fenster erst danach erscheint.
Ich habe es jetzt so weit bekommen dass er zwar in der "Spiel-Dauerschleife" ist(er berechnet die winkel etc.) aber nichts im JFrame davon angezeigt wird.

Hier meine Main:
Java:
package GamePackage;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class Log extends JFrame {

public static void main(String[] args) {
Log frameTabel = new Log();
}

JButton blogin = new JButton("Login");
JPanel panel = new JPanel();
JTextField txuser = new JTextField(15);
JPasswordField pass = new JPasswordField(15);

Log(){
super("Login Autentification");
setSize(300,200);
setLocation(500,280);
panel.setLayout (null);


txuser.setBounds(70,30,150,20);
pass.setBounds(70,65,150,20);
blogin.setBounds(110,100,80,20);

panel.add(blogin);
panel.add(txuser);
panel.add(pass);

getContentPane().add(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
actionlogin();
}

public void actionlogin(){
blogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String puname = txuser.getText();
String ppaswd = pass.getText();
if(puname.equals("test") && ppaswd.equals("12345")) {
newframe f =new newframe();
dispose();

long lastFrame = System.currentTimeMillis();
while(true){
	long thisFrame = System.currentTimeMillis();
	float timeSinceLastFrame = ((float)(thisFrame-lastFrame))/1000f;	
	lastFrame=thisFrame; 
	f.ball.UpdateBall(timeSinceLastFrame, f.b_speed, f.player.getBounding(), f.enemy.getBounding(), f.ballSize);
	f.player.UpdatePlayer(timeSinceLastFrame, f.getUp(), f.getDown(), f.getShoot());	
	f.enemy.UpdatePlayer(timeSinceLastFrame, f.e_getUp(), f.e_getDown(), f.e_getShoot());
	f.repaintScreen();
	System.out.println("hier");
	if(f.getClose())System.exit(0);
	try {
		Thread.sleep(15);
	} catch (InterruptedException e1) {
		e1.printStackTrace();
}
}

} else {

JOptionPane.showMessageDialog(null,"Wrong Password / Username");
txuser.setText("");
pass.setText("");
txuser.requestFocus();
}


}
});
}
}
Hier mein Spielfenster:
Java:
package GamePackage;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class newframe extends JFrame {

	
public static void main(String[] args) {
newframe frameTabel = new newframe();
}

final int frameX = 800;
final int frameY = 600;

private DrawObjects screen;
private DrawObjects screen2;
private DrawObjects screen3;


private boolean key_up = false;
private boolean key_down = false;
private boolean key_close = false;

private boolean e_key_up = false;
private boolean e_key_down = false;
private boolean e_key_close = false;



JLabel scorePlayer;
JLabel scoreEnemy;

public final int ballSize = 10;
public final int ballPosX = frameX/2;
public final int ballPosY = frameY/2;
public final double b_speed  = 400;

public final int playerSize = 50;
public final int playerPosX = 0;
public final int playerPosY = frameY/2-playerSize/2;
public final double p_speed = 350;

public final int enemySize = 50;
public final int enemyPosX = frameX-enemySize;
public final int enemyPosY = frameY/2-enemySize/2;
public final double e_speed = 350;

Ball ball = new Ball(ballPosX, ballPosY, ballSize, b_speed, frameX, frameY);
Player player = new Player(playerPosX,playerPosY,playerSize, p_speed ,frameX, frameY);
Player enemy = new Player(enemyPosX, enemyPosY, enemySize, e_speed, frameX, frameY);

newframe(){

	this.scorePlayer = new JLabel();
	this.scoreEnemy = new JLabel();
	scoreEnemy.setBounds(frameX/2+50, 10, 25, 25);
	scoreEnemy.setText("0");
	scorePlayer.setBounds(frameX/2-50, 10, 25, 25);
	scorePlayer.setText("0");
	add(scorePlayer);
	add(scoreEnemy);
	screen = new DrawObjects();
	screen2 = new DrawObjects();
	screen3 = new DrawObjects();
	screen.setBounds(0, 0, 1280, 720);
	screen2.setBounds(0, 0, 1280, 720);
	screen3.setBounds(0,0,1280,720);
	add(screen);
	add(screen2);
	add(screen3);
	
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setSize(frameX, frameY);
	setLocationRelativeTo(null);
	setUndecorated(true);
	setResizable(false);
	setVisible(true);
	
						
}
public boolean getUp(){
	return key_up;
}
public boolean getDown(){
	return key_down;
}
public boolean getClose(){
	return key_close;
}


public boolean e_getUp(){
	return e_key_up;
}
public boolean e_getDown(){
	return e_key_down;
}
public boolean e_getClose(){
	return e_key_close;
}


public void repaintScreen(){
	screen.repaint();
	screen2.repaint();
	screen3.repaint();	
	updateScore(scorePlayer, scoreEnemy);
}


private void updateScore(JLabel player, JLabel enemy) {
	if(ball.getBounding().x>=frameX){
		int score = Integer.parseInt(player.getText());
		score++;
		player.setText(String.valueOf(score));
	}
	else if(ball.getBounding().x<=0){
		int score = Integer.parseInt(enemy.getText());
		score++;
		enemy.setText(String.valueOf(score));
	}
	
}


private class DrawObjects extends JLabel{

	private static final long serialVersionUID = 1L;


	
	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.setColor(Color.green);
		g.fillRect(player.getBounding().x,
				   player.getBounding().y,
				   player.getBounding().width,
				   player.getBounding().height);
		g.setColor(Color.red);
		g.fillRect(enemy.getBounding().x,
				   enemy.getBounding().y,
				   enemy.getBounding().width,
				   enemy.getBounding().height);
		g.setColor(Color.black);
		g.fillRect(ball.getBounding().x,
					ball.getBounding().y,
					ball.getBounding().width,
					ball.getBounding().height);
		
		}
	
}



private class KeyHandler implements KeyListener{

	@Override
	public void keyPressed(KeyEvent e) {
		if(e.getKeyCode() == KeyEvent.VK_S)key_down = true;
		if(e.getKeyCode() == KeyEvent.VK_W)key_up = true;
		if(e.getKeyCode() == KeyEvent.VK_ESCAPE)key_close = true;
		
		if(e.getKeyCode() == KeyEvent.VK_DOWN)e_key_down = true;
		if(e.getKeyCode() == KeyEvent.VK_UP)e_key_up = true;

	}

	@Override
	public void keyReleased(KeyEvent e) {
		if(e.getKeyCode() == KeyEvent.VK_S)key_down = false;
		if(e.getKeyCode() == KeyEvent.VK_W)key_up = false;
		
		if(e.getKeyCode() == KeyEvent.VK_DOWN)e_key_down = false;
		if(e.getKeyCode() == KeyEvent.VK_UP)e_key_up = false;
		

	}



	
	//Unnötig
	@Override
	public void keyTyped(KeyEvent arg0) {}
	
}

}
Hier die Player Klasse:
Java:
package GamePackage;

import java.awt.Rectangle;

public class Player {
	
	int frameX;
	int frameY;
	
	private Rectangle bounding;		//rectangle legt eine box an
	private float p_posX;			//spieler Pos auf X
	private float p_posY;			//spieler Pos auf Y
	private double p_speed;
	
	public Player(int posx, int posy, int size, double p_speed,int frameX, int frameY){
		bounding = new Rectangle (posx, posy, size, size);	
		p_posX = posx;
		p_posY = posy;
		this.frameX = frameX;
		this.frameY = frameY;
		this.p_speed = p_speed;
	}
	
	
	
	public void UpdatePlayer(float timeSinceLastFrame, boolean up, boolean down, boolean shoot){
		
		if(up)p_posY-=p_speed*timeSinceLastFrame;
		if(down)p_posY+=p_speed*timeSinceLastFrame;


		if(p_posX<0)p_posX+=p_speed*timeSinceLastFrame;
		if(p_posY<0)p_posY+=p_speed*timeSinceLastFrame;
		if(p_posX>frameX-bounding.width)p_posX-=p_speed*timeSinceLastFrame;
		if(p_posY>frameY-bounding.height)p_posY-=p_speed*timeSinceLastFrame;
		

		

		bounding.x=(int)p_posX;
		bounding.y=(int)p_posY;
	}
	
	public Rectangle getBounding(){
		return bounding;
	}
}
Hier die Ball Klasse:
Java:
package GamePackage;

import java.awt.Rectangle;
import java.util.Random;


public class Ball {
	
	private final int frameX;
	private final int frameY;
	
	private Rectangle bounding;		//rectangle legt eine box an
	private float b_posX;			//ball Pos auf X
	private float b_posY;			//ball Pos auf Y
	private double b_speed;
	private boolean right;
	private boolean newRound = true;
	private int angle;
	Random r = new Random();
	
	
	


	public Ball(int posx, int posy, int size, double b_speed,int frameX, int frameY){
			bounding = new Rectangle (posx, posy, size, size);	
			b_posX = posx;
			b_posY = posy;
			this.frameX = frameX;
			this.frameY = frameY;
			this.b_speed = b_speed;

	}
	
	
	
		

	
	public Rectangle getBounding(){
		return bounding;
	}

	public void resetBounding(){
		bounding.x = frameX/2;
		bounding.y = frameY/2;
	}

	
	public void UpdateBall(float timeSinceLastFrame, double speed, Rectangle p, Rectangle e, int size) {
		
		
		
		if(newRound){
			b_posX = frameX/2;
			b_posY = frameY/2;
			right = r.nextBoolean();
			angle = r.nextInt(20);
			System.out.println(angle);
			newRound=false;
		}
		


		if(b_posX>=frameX || b_posX<0){
			newRound = true;
		
		}
		
		if(b_posX<= p.width
		&& b_posY>=p.y
		&& b_posY<=p.y+p.height){
			angle = angle*(-1);
			right=true;

		}
		if(b_posX>= frameX-e.width
		&& b_posY>=e.y
		&& b_posY<=e.y+e.height){
			angle = angle*(-1);
			right=false;
		}
		
	
		if(b_posY<0||b_posY>frameY){
			angle = (angle)*(-1);
			//angle = r.nextInt(360);
		}
		
		if(right){
			b_posX += timeSinceLastFrame*b_speed;
			b_posY += Math.tan(angle);		
		}
		else {
			b_posX -= timeSinceLastFrame*b_speed;
			b_posY -= Math.tan(angle);
		
		}
		
		
		bounding.x = (int) b_posX;
		bounding.y = (int) b_posY;
		
	}
}
 

Joose

Top Contributor
Ich habe es jetzt so weit bekommen dass er zwar in der "Spiel-Dauerschleife" ist(er berechnet die winkel etc.) aber nichts im JFrame davon angezeigt wird.

Hier meine Main:
Java:
while(true){
	long thisFrame = System.currentTimeMillis();
	float timeSinceLastFrame = ((float)(thisFrame-lastFrame))/1000f;	
	lastFrame=thisFrame; 
	f.ball.UpdateBall(timeSinceLastFrame, f.b_speed, f.player.getBounding(), f.enemy.getBounding(), f.ballSize);
	f.player.UpdatePlayer(timeSinceLastFrame, f.getUp(), f.getDown(), f.getShoot());	
	f.enemy.UpdatePlayer(timeSinceLastFrame, f.e_getUp(), f.e_getDown(), f.e_getShoot());
	f.repaintScreen();
	System.out.println("hier");
	if(f.getClose())System.exit(0);
	try {
		Thread.sleep(15);
	} catch (InterruptedException e1) {
		e1.printStackTrace();
}
}

Das Problem ist das deine Schleife im GUI-Thread läuft. Und da deine Schleife endlos läuft (
Code:
while(true)
ist immer eine schlechte Wahl) kommt deine GUI nicht dazu sich zu aktualisieren.
Du musst deine while-Schleife in einen eigenen Thread auslagern!
 
Zuletzt bearbeitet:

SuperMeatBoy

Neues Mitglied
Wow, danke für die schnelle Antwort :)
Werde es gleich mal ausprobieren, und melde mich dann.

Edit:
Hat geklappt :) vielen dank !
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
H Brauche Hilfe Java Basics - Anfänger-Themen 2
H Brauche hilfe Java Basics - Anfänger-Themen 3
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
M Brauche Hilfe bei If-Scheifen Java Basics - Anfänger-Themen 2
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
E Ich Brauche Hilfe Java Basics - Anfänger-Themen 3
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
S Brauche hilfe in Java [Fehler in mein Code]? Java Basics - Anfänger-Themen 2
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
TpKey10 Ich brauche Hilfe Java Basics - Anfänger-Themen 14
F Ich brauche Hilfe bei Objektorientierter Programmierung... Java Basics - Anfänger-Themen 19
L Input/Output Wurzelzeichen in der Konsole ausgeben | Brauche Hilfe Java Basics - Anfänger-Themen 6
J Brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 3
T Brauche Hilfe um ein Programm zu verstehe Java Basics - Anfänger-Themen 4
C Ich brauche hilfe für meine Klausur Java Basics - Anfänger-Themen 13
J Brauche Hilfe !! Java Basics - Anfänger-Themen 8
R Spielfeldbegrenzung einfügen (Java)? Brauche Hilfe! Java Basics - Anfänger-Themen 15
C Brauche dringend Hilfe. Umfrage mit ja und nein in Java erstellen? Java Basics - Anfänger-Themen 12
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
P Brauche Hilfe bei ResultSet mit MySQL Java Basics - Anfänger-Themen 6
T Datentypen Brauche Hilfe bei Arrays Java Basics - Anfänger-Themen 3
U Brauche Hilfe bei Bisektionsverfahren Java Basics - Anfänger-Themen 23
E Erste Schritte brauche hilfe zum verstehen einer Klasse(Tiefensuche) Java Basics - Anfänger-Themen 17
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
B Java Graphen zeichnen - Brauche Hilfe Java Basics - Anfänger-Themen 9
S brauche hilfe bei Fehlersuche Java Basics - Anfänger-Themen 7
M JDK installieren Brauche dringend Hilfe Java Basics - Anfänger-Themen 2
L Brauche Hilfe bei Preisberechnungspogramm Java Basics - Anfänger-Themen 1
D Hilbert und Peano Kurve, ich brauche Hilfe Java Basics - Anfänger-Themen 4
V Hilfe-brauche eine Idee! Java Basics - Anfänger-Themen 5
R Brauche Hilfe beim fertigstellen eines Chat programms Java Basics - Anfänger-Themen 8
A Erste Schritte Brauche Hilfe Java Basics - Anfänger-Themen 2
D Brauche Hilfe für mein übungsprogramm Java Basics - Anfänger-Themen 16
S Klassen Brauche Hilfe bei Erstellung einer Klasse für einen Tachenrechner!!! Java Basics - Anfänger-Themen 6
W Brauche hilfe bei Hausübung Java Basics - Anfänger-Themen 10
D Brauche Hilfe bei Modulo (Übungsaufgabe) Java Basics - Anfänger-Themen 14
X Brauche Hilfe bei printOnScreen Methode !!! Java Basics - Anfänger-Themen 2
H mysql brauche hilfe, wer kann eine (längere) aufgabe für mich erledigen Java Basics - Anfänger-Themen 2
K Erste Schritte Brauche Hilfe bei Starten des Programms Java Basics - Anfänger-Themen 11
B Erste Schritte HILFE Brauche ein Beispiel für korrekte Syntax mit Semantikfehlern Java Basics - Anfänger-Themen 6
H Java von Kopf bis Fuß: Brauche Hilfe Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
S brauche hilfe beim fehler finden Java Basics - Anfänger-Themen 2
S Erste Schritte BlueJ-Aufgabe: Programmcode / Brauche dringend Hilfe !!! Java Basics - Anfänger-Themen 37
A Brauche Hilfe bei Division von Feldzahl durch Ganzzahl Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 2
C Brauche dringend hilfe beim exception im code Java Basics - Anfänger-Themen 5
G Brauche bitte Hilfe, bei umgekehrter Ausgabe!! Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe für ein UML Diagramm Java Basics - Anfänger-Themen 7
S ICh brauche Hilfe,weil Java in der Schule Java Basics - Anfänger-Themen 11
B Brauche Hilfe mit Aufgaben mit dem JavaEditor Java Basics - Anfänger-Themen 8
I Primzahlenberechnung [Brauche Hilfe] Java Basics - Anfänger-Themen 5
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
F Reader - brauche Hilfe Java Basics - Anfänger-Themen 19
T Brauche Hilfe bei Variabeln Java Basics - Anfänger-Themen 4
J Brauche Hilfe mit replaceFirst Java Basics - Anfänger-Themen 10
M Brauche Hilfe bei Struktogramm Java Basics - Anfänger-Themen 9
T Datentypen brauche dringende hilfe!dezi in Asci umwandeln! Java Basics - Anfänger-Themen 4
X DB4O Collections and Arrays, brauche dringend Hilfe! Java Basics - Anfänger-Themen 3
B brauche hilfe bei funktion erstellen Java Basics - Anfänger-Themen 8
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
N Brauche Hilfe mit Kollisionserkennung! Java Basics - Anfänger-Themen 16
J Brauche Hilfe bei Methode Java Basics - Anfänger-Themen 9
Y Brauche Hilfe beim Programm Java Basics - Anfänger-Themen 83
G 2 dim. Strsing Arrays brauche Hilfe Java Basics - Anfänger-Themen 20
A Brauche hilfe String untertrennen Java Basics - Anfänger-Themen 12
L Brauche bitte dringend Hilfe für Klausur Java Basics - Anfänger-Themen 8
H Brauche bei einen bsp hilfe! Java Basics - Anfänger-Themen 2
D Währungsrechner brauche Hilfe Java Basics - Anfänger-Themen 10
R Vokabeltrainer / Brauche Hilfe Java Basics - Anfänger-Themen 8
L Brauche Hilfe! Java Basics - Anfänger-Themen 8
S WAV-DATEIEN INTERPRETIEREN UND UMWANDELN Brauche Hilfe Java Basics - Anfänger-Themen 3
A Brauche Hilfe mit einer Forschleife Java Basics - Anfänger-Themen 20
N brauche Hilfe Stringverarbeitung Java Basics - Anfänger-Themen 9
JeromeM90 (Brauche Hilfe) Binär- in Dezimalzahlkonverter Java Basics - Anfänger-Themen 8
M Brauche Hilfe bei Javaapplication für JuFo Java Basics - Anfänger-Themen 21
M Brauche Hilfe beim Verstehen vom Quellcode Java Basics - Anfänger-Themen 4
A brauche hilfe ( gpanel und n-ecke) Java Basics - Anfänger-Themen 11
V Brauche Hilfe beim Programmieren Java Basics - Anfänger-Themen 3
V Brauche Hilfe beim Programmieren Java Basics - Anfänger-Themen 9
S Brauche Hilfe mit waitFor() Java Basics - Anfänger-Themen 4
N Brauche dringende Hilfe Java Aplett läuft nicht! Java Basics - Anfänger-Themen 3
D Brauche Hilfe: Funktion zum Kombinieren von Werten Java Basics - Anfänger-Themen 5
T Brauche Hilfe: Access DB + Hashmap Java Basics - Anfänger-Themen 2
S brauche hilfe beim dateien kopieren / bearbeiten Java Basics - Anfänger-Themen 3
E brauche hilfe beim KeyListener Java Basics - Anfänger-Themen 4
N brauche hilfe zu tictactoe Java Basics - Anfänger-Themen 2
G Ich brauche eure Hilfe! Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben