xPos und yPos eigener Klassen geben lassen

Mereti

Neues Mitglied
Hallo, ich bin gerade dabei das Spiel Pong zu programmieren und bin dabei auf ein Problem gestoßen.

Ich habe 3 Klassen, eine Klasse in der der Ball erstellt wird, eine in der die Paddels erstellt werden und noch eine die alles zusammenfügt.

Nun meine Frage: Ich will, dass in der Ball-Klasse festgelegt wird, dass der Ball wenn er oben bzw. unten anstößt, umkehrt, und dasselbe wenn er auf ein Paddel stößt. Das mit den Rändern hab ich schon, aber jetzt ist meine Frage: Wie kann ich mir immer die aktuelle Position des Paddels anzeigen lassen?

Hier meine Ball-Klasse

Java:
import de.ur.mi.graphics.*;

	public class Ball {

	// screen properties
	private static final int SCREEN_WIDTH = 320;
	private static final int SCREEN_HEIGHT = 240;
	// ball properties (size and speed)
	private static final int BALL_SIZE = SCREEN_WIDTH / 32;
	private static final int BALL_SPEED = SCREEN_WIDTH / 160;
	private static Color BALL_COLOR = Color.WHITE;
	
	private int speedXAxis = 1;
	private int speedYAxis = 1;
	
	
	private static Ellipse ball;
	
	
	public Ball(int xPos, int yPos) {
		ball = new Ellipse(xPos, yPos, BALL_SIZE, BALL_SIZE, BALL_COLOR);
	}
	
	public void move() {
		ball.move(BALL_SPEED * speedXAxis, BALL_SPEED * speedYAxis);
	}
	
	public void checkWallCollision(int width, int height) {
		if (ball.getTopBorder() <= 0) {
			speedYAxis *= -1;
		} else if (ball.getBottomBorder() >= height) {
			speedYAxis *= -1;
		}
	}	

	public void draw()  {
		ball.draw();
	}
	
	}

Und hier die Paddle-Klasse

Java:
import de.ur.mi.graphics.*;

public class Paddle{
	
	private static int PADDLE_WIDTH = 10;
	private static int PADDLE_HEIGHT = 50;
	
	private static Color PADDLE_COLOR = Color.WHITE;
	
	private Rect paddlePlayerOne;
	private Rect paddlePlayerTwo;

	public Paddle(int xPos, int yPos) {
		paddlePlayerOne = new Rect(xPos, yPos, PADDLE_WIDTH, PADDLE_HEIGHT, PADDLE_COLOR);
		paddlePlayerTwo = new Rect(xPos, yPos, PADDLE_WIDTH, PADDLE_HEIGHT, PADDLE_COLOR);
	}
	
	public void draw() {
		paddlePlayerOne.draw();
		paddlePlayerTwo.draw();
	}

	public void move(int xDiff, int yDiff) {
		paddlePlayerOne.move(xDiff, yDiff);
		paddlePlayerTwo.move(xDiff, yDiff);
	}
	
}

Danke schonmal im Vorraus!
 

Marco13

Top Contributor
Du meinst aber nicht
System.out.println(paddle.getX());
?!
(Bewegen sich die Paddels der Spieler immer gleich? Sollte es nicht ZWEI Paddle-Instanzen (mit jeweils EINEM Rect) geben?)
 

Mereti

Neues Mitglied
Ähm, ich weiß jetzt gerade nicht wirklich was du meinst? ^^

Hab jetzt ewig lange rumprobiert, aber ich komm einfach nicht drauf. Ich brauch dringend Hilfe, wie ich es schaffen kann, dass der Ball auch von den Paddles abprallt...

Ich mein, theoretisch muss ich ja in der Klasse Ball eine neue Methode machen. z.B "CheckPaddleCollision" und der als Parameter die aktuelle Position des Paddles geben. Aber ich hab keine Ahnung wie ich das machen soll...

Hier übrigens noch der Code für die PongApp Klasse

Java:
public class PongApp extends GraphicsApp {
	private static final long serialVersionUID = 1L;

	/* private constants (add more constants as necessary)*/
	// screen properties
	private static final int SCREEN_WIDTH = 320;
	private static final int SCREEN_HEIGHT = 240;

	// paddle properties (e.g. width and height)
	private int PADDLE_ONE_X_POS = 0;
	private int PADDLE_ONE_Y_POS = SCREEN_HEIGHT / 2 -25;
	private int PADDLE_TWO_X_POS = SCREEN_WIDTH -10;
	private int PADDLE_TWO_Y_POS = SCREEN_HEIGHT / 2 -25;
	
	
	// paddle move constants
	private static final int MOVE_PIXELS = 5;
	
	private static final int MOVE_UP_ONE = 87;
	private static final int MOVE_DOWN_ONE = 83;
	private static final int MOVE_UP_TWO = 38; 
	private static final int MOVE_DOWN_TWO = 40;

	private int speedXAxis = 1;
	private int speedYAxis = 1;
	
	private static final int BALL_SIZE = SCREEN_WIDTH / 32;
	
	//Instance variables
	private Image background;
	private Paddle paddlePlayerOne;
	private Paddle paddlePlayerTwo;
	private Ball ball;
	private HitCounter counter;

	double paddleOneX; 
	double paddleOneY;
	double paddleOneY2;
	double paddleTwoX;
	double paddleTwoY;
	double paddleTwoY2;
	double ballX;
	double ballY;

	
	public void setup() {
		 setupBackground();
		 setupGame();
	}


	// set the background
	
	private void setupBackground() {
		size(SCREEN_WIDTH, SCREEN_HEIGHT);
		background = new Image(0,0, "media/pongBackground.png");
		
		
	}
	
	public void setupGame() {
		setupPaddle();
		setupBall();	
	}
	
	
	private void setupBall() {
		ball = new Ball(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
		
	}

	private void setupPaddle() {
		paddlePlayerOne = new Paddle(PADDLE_ONE_X_POS, PADDLE_ONE_Y_POS);
		paddlePlayerTwo = new Paddle(PADDLE_TWO_X_POS, PADDLE_TWO_Y_POS);
	}
	
	public void keyPressed(KeyEvent e) {
		switch (e.getKeyCode()) {
		case MOVE_UP_ONE:
			movePaddelPlayerOne(0, -MOVE_PIXELS);
			break;
		case MOVE_DOWN_ONE:
			movePaddelPlayerOne(0, MOVE_PIXELS);
			break;
		case MOVE_UP_TWO:
			movePaddelPlayerTwo(0, -MOVE_PIXELS);
			break;
		case MOVE_DOWN_TWO:
			movePaddelPlayerTwo(0, MOVE_PIXELS);
			break;
		}
	}
	
	private void movePaddelPlayerOne(int xDiff, int yDiff) {
		paddlePlayerOne.move(xDiff, yDiff);
	}

	private void movePaddelPlayerTwo(int xDiff, int yDiff) {
		paddlePlayerTwo.move(xDiff, yDiff);
	}
	
	
	
	public void draw() {
		background.draw();
		paddlePlayerOne.draw();
		paddlePlayerTwo.draw();
		ball.move();
		ball.draw();
		ball.checkWallCollision(SCREEN_WIDTH, SCREEN_HEIGHT);
		
	}


Wär klasse wenn hier jemand Licht ins Dunkle bringen könnte...
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Ja, ... das wäre nicht schlecht ... aber damit müßtest DU wohl anfangen: Es gibt in der PongApp zwei Objekte
private Paddle paddlePlayerOne;
private Paddle paddlePlayerTwo;

In der Klasse Paddle steht aber
private Rect paddlePlayerOne;
private Rect paddlePlayerTwo;

Was genau wird mit zwei paddeln für zwei Spieler, die jeweils zwei Rechtecke für zwei Spieler enthalten modelliert?

Ob z.B. die X-Koordinate des Paddels von Spieler 0 nun in
private int PADDLE_ONE_X_POS = 0;
double paddleOneX;
paddlePlayerOne.paddlePlayerOne.getX()
paddlePlayerOne.paddlePlayerTwo.getX()
paddlePlayerTwo.paddlePlayerOne.getX()
oder
paddlePlayerTwo.paddlePlayerTwo.getX()
steht, WILL ich erstmal gar nicht nachvollziehen.

Aber wenn es nur um die allgemeine Frage nach der Überschneidung geht: Die Überschneidung zweier Rechtecke ist relativ leicht implementiert ... vielleicht solltest du dich sowieso mal mit dem Unterhalten, der den Thread http://www.java-forum.org/java-basi...-methode-selbst-schreiben-ohne-rectangle.html aufgemacht hat (warum, kannst du dir vielleicht denken ;) )
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Dez-->Binär mit eigener bit Anzahl Erkennung. Java Basics - Anfänger-Themen 3
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
B Eigener Validierungseditor? Java Basics - Anfänger-Themen 3
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
Bluedaishi Jar mit eigener JRE Java Basics - Anfänger-Themen 7
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
J Threads Problem mit eigener ArrayList Java Basics - Anfänger-Themen 2
E MCLauncher eigener Client workt nicht? Java Basics - Anfänger-Themen 4
A Input/Output Datenströme schließen in eigener Methode Java Basics - Anfänger-Themen 5
J Interface ActionListener in eigener Klasse Java Basics - Anfänger-Themen 27
F Get/Post als eigener Thread mit Rückgabe Java Basics - Anfänger-Themen 5
M Messandwendung nach Zeit und eigener Eingabe Java Basics - Anfänger-Themen 4
N Schlüsselworte Bubble Sort nach eigener Ordnung Java Basics - Anfänger-Themen 8
E Compare-Funktion bei eigener Klasse Java Basics - Anfänger-Themen 4
Q ArrayList mit eigener Klasse in Java sotieren Java Basics - Anfänger-Themen 2
N BierSpiel von "Kopf bis Fuss" eigener Code...kleine Problemstellung. Java Basics - Anfänger-Themen 11
C OOP Erstellen eigener Objekte die es schon gibt "schlau"? Java Basics - Anfänger-Themen 3
V Arrays aus eigener Klasse erstellt, zuweisung aber spuckt Fehler in verbindung mit main Methode aus. Java Basics - Anfänger-Themen 3
L Eigener FilterReader Java Basics - Anfänger-Themen 12
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
M import von eigener Klasse Java Basics - Anfänger-Themen 12
P ArrayList aus eigener Klasse "überschreibt" Werte nicht Java Basics - Anfänger-Themen 4
H Exit Befehl in eigener Konsole Java Basics - Anfänger-Themen 9
S Eigener InputStream, Hilfe bei read-Methode Java Basics - Anfänger-Themen 6
S Überladener Konstruktor und aufruf aus eigener Klasse Java Basics - Anfänger-Themen 2
D Klassen Problem mit Eigener Array-Klasse Java Basics - Anfänger-Themen 10
S [JUnit] eigener Testsuite Runner + Ausgabe Java Basics - Anfänger-Themen 6
G Eigener Autoboxing Datentyp Java Basics - Anfänger-Themen 3
M Eigener InputStream will nicht mit BufferedReader Java Basics - Anfänger-Themen 3
B Datentypen Probleme mit eigenem Get() bei eigener HashMap Java Basics - Anfänger-Themen 6
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
G Datentypen "Liste" eigener Objekte durchsuchen Java Basics - Anfänger-Themen 6
S mit eigener Klasse JTextField ändern Java Basics - Anfänger-Themen 3
N Vektor mit eigener Datenstruktur sortieren Java Basics - Anfänger-Themen 20
I Datentypen Eigener DatenTyp Java Basics - Anfänger-Themen 2
B Ordner öffnen (eigener Dateibrowser) Java Basics - Anfänger-Themen 8
B Eigener Webserver + Eigener Webbrowser Java Basics - Anfänger-Themen 7
I eigener "Abstandshalter" vs. LayoutManager Java Basics - Anfänger-Themen 6
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
K Sinn eigener Exceptions Java Basics - Anfänger-Themen 11
D Container mit eigener Klasse Java Basics - Anfänger-Themen 5
B Verwenden eigener Object-Klassen Java Basics - Anfänger-Themen 9
H Eigener Button Java Basics - Anfänger-Themen 2
M Eigener Iterator für LinkedList Java Basics - Anfänger-Themen 20
I Java eigener MSN Messenger schreiben Java Basics - Anfänger-Themen 3
R Event in eigener Klasse implementieren ? Java Basics - Anfänger-Themen 8
G Fortlaufende Aktualisierung bei eigener Klasse Java Basics - Anfänger-Themen 2
G IOException Problem in eigener Klasse Java Basics - Anfänger-Themen 8
B Import Problem mit eigener Klasse. Java Basics - Anfänger-Themen 8
G Eigener Parser Java Basics - Anfänger-Themen 4
T Problem mit eigener Klasse Java Basics - Anfänger-Themen 7
A eigener Explorer via Java? Java Basics - Anfänger-Themen 9
D Thread und Process Kommunikation bei eigener Console Java Basics - Anfänger-Themen 2
T Öffnen externer Datei als eigener Prozess Java Basics - Anfänger-Themen 8
G Datei aus eigener JAR-Datei verwende Java Basics - Anfänger-Themen 2
N Porblem mit dem Importieren eigener Pakete Java Basics - Anfänger-Themen 4
T ActionListener in eigener Klasse Java Basics - Anfänger-Themen 10
T ActionListener in eigener Klasse Java Basics - Anfänger-Themen 5
L ActionListener in eigener Klasse Java Basics - Anfänger-Themen 3
T Erstellen eigener packages Java Basics - Anfänger-Themen 6
G JMenuBar in eigener Klasse erstellen Java Basics - Anfänger-Themen 3
A Eigener Datentyp? Java Basics - Anfänger-Themen 39
F Eigener IP-Paket-Header Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben