Objekt wird während Endlosschleife nur einmal bewegt

Status
Nicht offen für weitere Antworten.

SmartGuy

Mitglied
Hallo Leute, habe folgendes Problem und komm irgendwie nicht weiter. Hab nen Programm, welches über nen EchoServer läuft. Die Methode fliegen() aus der Klasse Ball, die den Ball auf der x-Achse bei jedem Durchlauf um eins verschiebt, wird nur einmal ausgeführt.

Ich find den Fehler nicht.

Seht ihr ihn?
Java:
import java.awt.*;

public class Ball {
	private int  	radius = 10;
	private Color	color = Color.BLACK;
	private int 	x = 300;					//x-koordinate des Balles
	private int 	y = 200;					//y-koordinate des Balles
	
	public Ball(int x, int y, int dx, int dy) {
		this.x = x;
		this.y = y;
		this.dx = dx;
		this.dy = dy;
	}
	
	public Ball(int x, int y, int dx, int dy, int radius, Color color) {
		this.x = x;
		this.y = y;
		this.dx = dx;
		this.dy = dy;
		this.radius = radius;
		this.color = color;
	}
	
	public void paint(Graphics g) {
		g.setColor(color);
		g.fillOval(x - radius, y - radius, 2 * radius, 2 * radius); //zeichne Ball
	}
	
	public void setPosition(int nx, int ny) {
		x = nx;
		y = ny;
	}
	
	public void setSpeed(int nvx, int nvy) {
		dx = nvx;
		dy = nvy;
	}

	public void setDy(int dy){
		this.dy = dy;   
	}
	
	public void setX(int x){
		this.x = x;   
	}
	
	public int getDx() {
		return dx;
	}

	public int getDy() {
		return dy;
	}

	public int getX() {
		return x;
	}

	public int getY() {
		return y;
	}
	
	public int getRadius() {
		return radius;
	}
	
	public void fliegen(){
		// Verändern der x-y- Koordinaten
		x++;
		//x += dx;
		//y += dy;
	}

	public void rwx(){
		dx=-(dx);
	}
	
	public void neuerBall() 
	{
		x = 300;		//feld.width/2;
		y = 200;		//feld.height/2; 
		rwx();
	}
}

Nun das Applet:

Java:
import java.applet.*;
import java.awt.*;
import java.io.IOException;
import java.net.Socket;
import	java.io.InputStreamReader;
import	java.io.BufferedReader;
import	java.io.OutputStreamWriter;
import	java.io.BufferedWriter;

public class PongAppletEcho extends Applet implements Runnable 
{
	// Initialisierung der Variablen	
	private static final long serialVersionUID = 1L;
	Dimension feld = new Dimension(600, 400);
	Dimension balken = new Dimension(10,100); 
	int balkenX=6; 		//x-Koordinate des Balkens
	int balkenY=300;	//y-Koordinate des Balkens
	int speed_xtemp;	//temperärer Speicher, wenn man mit der Leertaste den Ball anhalten will (x-koordinate)
	int speed_ytemp; 	//temperärer Speicher, wenn man mit der Leertaste den Ball anhalten will (y-koordinate)
	// Variablen für die Doppelpufferung zum Verhindern, dass der Ball nicht während des Fluges ruckelt
	private Image dbImage;
	private Graphics dbg;
	private Socket socket=null;
	private String address = "127.0.0.1";
	private TextField tx;
	private BufferedWriter writer;
	private BufferedReader reader;
	private String answer;
	private Thread th;
	Ball b1 = new Ball(300,200,-7,7);
	
	public void init() 
	{	
		setBackground(Color.WHITE); //weisse Hintergrundfarbe	
		try {
		      socket = new Socket(address, 9000);
		      writer= new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
		      reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		}
	    catch (IOException e) {
	      System.err.println("Exception: couldn't create stream socket");
	      System.exit(1);
	    }
	    tx = new TextField(20);
		tx.setLocation(20, 120);
		add(tx);
		this.setSize(600, 400);
		setFocusable(true);
	}
	
	public void start(){
		// Schaffen eines neuen Threads, in dem das Spiel läuft
		th = new Thread(this);
		// Starten des Threads
		th.start();	
	}
	
	public void stop(){
		
		th.stop();
		try {
			writer.close();
			reader.close();
			socket.close();
		}
	    catch (IOException e) {
	        System.err.println("Exception: I/O error trying to talk to server");
	      }
	}
	public void destroy(){}
	public boolean mouseMove(Event evt, int x, int y){
		if (balkenY+(balken.height/2)!=y && balkenY >= 5){
			balkenY=y-(balken.height/2);
		}else if (balkenY+(balken.height/2)!=y && balkenY+balken.height<= feld.height-5){
			balkenY=y-(balken.height/2);
		}
		
		System.out.println("x-wert: " +x+ ", und y= "+y);
		return true;
	}

	
	//Tastatur-Listener
	public boolean keyDown(Event e, int key) 
	{
		// Obere Cursortaste gedrückt
		if (key == Event.UP && balkenY >= 5) {
			// Ändern des Richtunsvektors so dass sich der Balken nach Oben bewegt  (Y - Position wird kleiner)
			balkenY = balkenY -10;
		}
		// Untere Cursortaste gedrückt
		else if (key == Event.DOWN && balkenY+balken.height<= feld.height-5) {
			// Ändern des Richtunsvektors so dass sich der Balken nach Unten bewegt (Y - Position wird grösser)
			balkenY = balkenY + 10;
		}
/*
		// PAUSE -> Space Taste gedrückt (hat den Wert 32!)
		else if (key == 32 && dx != 0) {
			// Stoppen des Balles (x_speed = 0)
			speed_xtemp = dx;
			speed_ytemp = dy;
			dx = 0;
			dy = 0;
		} else if (key == 32 && dx == 0) {
			// Ball fliegt mit vorheriger Geschwindigkeit weiter 
			dx = speed_xtemp;
			dy = speed_ytemp;
		} else {
			// Zusätzlich Ausgeben eines nicht behandelten Wertes auf die Standardausgabe (damit bekommt man die Werte der Tasten ausgegeben)
			System.out.println("Charakter: " + (char) key + " Integer Value: "+ key);
		}
	*/	
		// NICHT VERGESSEN, immer:
		return true;
		
	}
	public void ballverhalten(Ball ball){
	// Wenn der Ball den rechten Rand berührt, dann prallt er ab
	if (ball.getX()+ball.getRadius() >= feld.width)
	{
		ball.rwx();
	}
	//oberer Rand und unterer Rand
	else if ((ball.getY()+ball.getRadius() >= feld.height-2) || (ball.getY()-ball.getRadius() <= 2))
	{
		ball.setDy(-(ball.getDy()));
	}			
	
	// Ball ist am linken Rand und berührt Balken
	else if (ball.getY()-ball.getRadius() <= balkenX+balken.width&& ball.getY() >= balkenY && ball.getY() <= balkenY+balken.height)      
	{
		ball.rwx(); 
	}
	
	else if ((ball.getX()-ball.getRadius() <= balkenX+balken.width) && (ball.getY()< balkenY || ball.getY()>balkenY+balken.height)){	//wenn der Ball im linken Aus ist
		ball.neuerBall();
	}	
}

	public void run() {
		// Erniedrigen der ThreadPriority um zeichnen zu erleichtern
		Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

		// Solange true ist läuft der Thread weiter
		while (true) {
			//ballverhalten();
			b1.fliegen(); 
			
			
			repaint(); // Neuzeichnen des Applets
			try{
				answer=reader.readLine();
				tx.setText(answer);
				
			}
			catch (IOException e) {
			      System.err.println("Exception: I/O error trying to talk to server");
			}
			try {
				// Stoppen des Threads für in Klammern angegebene Millisekunden
				Thread.sleep(20);
			} catch (InterruptedException ex) {
				// braucht nix zu machen
			}

			// Zurücksetzen der ThreadPriority auf Maximalwert
			Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
		}
	}

	/*
	//Update - Methode, Realisierung der Doppelpufferung zur Reduzierung des Bildschirmflackerns
	public void update(Graphics g) {
		// Initialisierung des DoubleBuffers
		if (dbImage == null) {
			dbImage = createImage(this.getSize().width, this.getSize().height);
			dbg = dbImage.getGraphics();
		}

		// Bildschirm im Hintergrund löschen
		dbg.setColor(getBackground());
		dbg.fillRect(0, 0, this.getSize().width, this.getSize().height);

		// Auf gelöschten Hintergrund Vordergrund zeichnen
		dbg.setColor(getForeground());
		paint(dbg);

		// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
		g.drawImage(dbImage, 0, 0, this);
	}
*/
	public void paint(Graphics g) {
		b1.paint(g);
		g.setColor(Color.BLACK); //Füllfarbe der zu zeichnenden Objekte (hier: Balken und Ball)
		//g.fillOval(x - radius, y - radius, 2 * radius, 2 * radius); //zeichen Ball
		g.fillRoundRect(balkenX, balkenY, balken.width, balken.height, 10, 10); //zeichne abgerundeten Balken

	}
}
 

Marco13

Top Contributor
Nach jedem Aufruf von "fliegen" wird eine Eingabe ("answer") erwartet ... was auch immer das soll?! :bahnhof:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
P Swing Wie bekomme ich eine Referenz auf ein Objekt das im EDT erzeugt wird? Und anderes... AWT, Swing, JavaFX & SWT 8
E Graphics2D: altes Objekt löschen, wenn repaint aufgerufen wird AWT, Swing, JavaFX & SWT 7
B mit maus Objekt bewegen AWT, Swing, JavaFX & SWT 3
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
U Was genau ist ein Shape-Objekt? AWT, Swing, JavaFX & SWT 3
DonBronson Objekt bewegen (Mausposition) AWT, Swing, JavaFX & SWT 3
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
U Was ist ein Shape, also klar ein Objekt, aber was ist damit gemeint (Graphics2d)? Und was sidn affinetransformationen AWT, Swing, JavaFX & SWT 1
Jose05 zugreifen auf ein Objekt eines GridPanes AWT, Swing, JavaFX & SWT 0
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
C Objekt an paintComponent weitergeben AWT, Swing, JavaFX & SWT 1
M Swing Objekt Array in GUI ausgeben AWT, Swing, JavaFX & SWT 1
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
F Java FX Von der Fxml Datei zum Objekt AWT, Swing, JavaFX & SWT 8
M Swing Durch Usereingabe neues Objekt AWT, Swing, JavaFX & SWT 2
K Color-Objekt erzeugen in CMYK AWT, Swing, JavaFX & SWT 2
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
A Swing Null Pointer Exception obwohl Objekt initialisiert AWT, Swing, JavaFX & SWT 21
J gezeichnetes Objekt anklicken AWT, Swing, JavaFX & SWT 10
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
L JavaFX als eigenes Objekt AWT, Swing, JavaFX & SWT 3
M [JavaFX] Objekt um Zentrum rotieren (Camera) AWT, Swing, JavaFX & SWT 1
E JavaFx Screne mehr als ein "Objekt" zuordnen ? AWT, Swing, JavaFX & SWT 2
F 2D-Grafik Objekt durch Einwirkung einer Kraft im Raum bewegen AWT, Swing, JavaFX & SWT 14
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
B Event Handling MouseListener Behält seine Variablen, auch wenn ich ein neus Objekt erstelle AWT, Swing, JavaFX & SWT 2
C Graphics Objekt in Zeitschleife zeichnen AWT, Swing, JavaFX & SWT 4
P Event Handling Anfängerfrage: ActionEvent bekommt kein Zugriff auf Objekt AWT, Swing, JavaFX & SWT 3
R Array aus einem Objekt auslesen AWT, Swing, JavaFX & SWT 4
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
A AWT TTF-Datei zu Font-Objekt finden? AWT, Swing, JavaFX & SWT 5
S Objekt durch Tasteneingabe mehrmals drehen AWT, Swing, JavaFX & SWT 9
E Swing Objekt zu Position (Point) bewegen AWT, Swing, JavaFX & SWT 2
T 3D-Grafik (Java3D) Aus einem Objekt einer Szene (Würfel, Ebene) die wichtigen Randkoordinaten auslesen AWT, Swing, JavaFX & SWT 3
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
V Persistentes Objekt laden Progressbar AWT, Swing, JavaFX & SWT 7
F Canvas Objekt außerhalb des Frames zeichnen AWT, Swing, JavaFX & SWT 3
Furtano AWT paint braucht ein Graphics Objekt ? AWT, Swing, JavaFX & SWT 2
propra Schnittpunkt zwischen Objekt und Kante finden AWT, Swing, JavaFX & SWT 24
L Graphics Objekt - aus anderer Klasse aufrufen / übergeben AWT, Swing, JavaFX & SWT 5
S Objekt einmal laden zweimal anzeigen 3d AWT, Swing, JavaFX & SWT 6
I Swing Zugriff auf ein Objekt AWT, Swing, JavaFX & SWT 2
F Nur ein Objekt auf Canvas neu zeichnen AWT, Swing, JavaFX & SWT 4
R Möglichkeiten ein abgeleitetes Objekt zu erzeugen AWT, Swing, JavaFX & SWT 4
T Objekt in Kreisbahn bewegen AWT, Swing, JavaFX & SWT 5
B Zeichnen von Bildern auf JPanel aus eigenem Objekt AWT, Swing, JavaFX & SWT 19
V Parameter an Runnable-Objekt übergeben AWT, Swing, JavaFX & SWT 6
Dit_ Objekt mit ActionEvent übergeben AWT, Swing, JavaFX & SWT 2
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
L Swing Auf unabhängiges Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 8
A SWT SWT - Unbekannte Fläche (Objekt) erscheint im Composite AWT, Swing, JavaFX & SWT 6
D Objekt mit Button erstellen und mit anderem Button verwenden AWT, Swing, JavaFX & SWT 4
P Objekt kopieren AWT, Swing, JavaFX & SWT 2
M Graphics-Objekt aktualisiert sich nicht AWT, Swing, JavaFX & SWT 2
U [MVC] Objekt bearbeiten AWT, Swing, JavaFX & SWT 9
O Swing JTable Colum Objekt AWT, Swing, JavaFX & SWT 6
Dit_ Ein Kreis als Graphics2D oder als Ellipse2D Objekt AWT, Swing, JavaFX & SWT 19
M Objekt im ActionListener ansprechen AWT, Swing, JavaFX & SWT 3
C Wie komme ich an ein Objekt aus einem JTree? AWT, Swing, JavaFX & SWT 10
R FlowLayout: 1 Objekt pro Zeile AWT, Swing, JavaFX & SWT 5
D Objekt (Map) in Textfeld ausgeben AWT, Swing, JavaFX & SWT 10
kirchrath Swing Aus ActionEvent Objekt herausfinden auf dem er ausgeführt wurde AWT, Swing, JavaFX & SWT 4
W Objekt-array als Raster visualisieren AWT, Swing, JavaFX & SWT 3
F Herausfinden, auf welchem Objekt der Fokus liegt AWT, Swing, JavaFX & SWT 2
G Tooltip Text für ein Shape Objekt AWT, Swing, JavaFX & SWT 2
D DnD ganzer Objekte(Objekt erstellen) AWT, Swing, JavaFX & SWT 2
G Wie ziehe ich ein Objekt aus einer JList? AWT, Swing, JavaFX & SWT 7
O JTable mit objekt-daten füllen AWT, Swing, JavaFX & SWT 4
B in jList feld aus einem objekt anzeigen AWT, Swing, JavaFX & SWT 2
R SWT color Objekt AWT, Swing, JavaFX & SWT 4
K Graphics-Objekt zeichnet nicht alle Bilder AWT, Swing, JavaFX & SWT 3
N Graphics Objekt "puffern" AWT, Swing, JavaFX & SWT 7
L Objekt in JComboBox einfügen AWT, Swing, JavaFX & SWT 2
S JComboBox, ein Renderer und das selektierte Objekt AWT, Swing, JavaFX & SWT 4
R Graphics Objekt ändern AWT, Swing, JavaFX & SWT 11
B actionPerformed reagiert nicht auf das Canvas-objekt AWT, Swing, JavaFX & SWT 11
J DocumentListener uebergibt Objekt; wie in JTextfield casten? AWT, Swing, JavaFX & SWT 3
B Objekt in "actionPerformed" erzeugen und nutzen AWT, Swing, JavaFX & SWT 3
P JSpinner Objekt anstatt Zahlen sollen man Namen auswählen AWT, Swing, JavaFX & SWT 2
B Ein Image Objekt drehen? AWT, Swing, JavaFX & SWT 2
G Referenz über MenuItem aus ActionListener auf das Objekt AWT, Swing, JavaFX & SWT 8
lin Welches Objekt für einen About-Dialog verwenden? AWT, Swing, JavaFX & SWT 2
R Selectable Graphics Objekt gesucht. AWT, Swing, JavaFX & SWT 5
Wildcard FontMetrics ohne Graphics-Objekt AWT, Swing, JavaFX & SWT 13
S objekt kann methode der aufrufenden klasse nicht aufrufen AWT, Swing, JavaFX & SWT 2
Y Objekt in JFrame AWT, Swing, JavaFX & SWT 3
M Objekt in TableCellRenderer packen, warum ein Fehler? AWT, Swing, JavaFX & SWT 2
K Objekt in eine bestimmte Zelle eines JTables legen AWT, Swing, JavaFX & SWT 3
D getResource() bei Image-Objekt AWT, Swing, JavaFX & SWT 9
A Problem mit dem graphics-Objekt AWT, Swing, JavaFX & SWT 8
D in neues Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 3
E warum erkennt er das objekt nicht???? AWT, Swing, JavaFX & SWT 4
G Fehler bei BasicStroke Objekt AWT, Swing, JavaFX & SWT 2
G Zurgriff auf Objekt über event.getComponent AWT, Swing, JavaFX & SWT 3
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben