Tips für ein kleines Pong-Applet

Jhonny

Mitglied
Hallo Leute,

könnte sich jemand bitte mein Code anschauen und mir Tipps für das abprallen des Balles vom Schläger geben. Rect hat eine methode die überprüft ob eine berührung mit einem anderen objekt vorliegt aber ich weiß leider net wie ich dies in meinem code umsetzten kann.
Für eure hilfe wär ich sehr dankbar.

Java:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;



		

public class BallApplet extends Applet implements Runnable , KeyListener {
	
	int x_pos = 30;
	int y_pos = 100;
	int radius = 20;
	int x_speed = 10;
	int y_speed = 10;
	int y_rechteck = 200;
	int x_rechteck = 10;
	int appletsize_x = 500;
	int appletsize_y = 500;
    private Graphics dbg;
    private Image dbImage;
    Object ball;
    Object paddel;
	
	public void init(){
		this.setSize(appletsize_x,appletsize_y);
		setBackground(Color.blue);
		addKeyListener(this);
		
	}
	
	public void start(){
		// Schaffen eines neuen Threads, in dem das Spiel läuft
		Thread th = new Thread (this);
		// Starten des Threads
		th.start ();
	}
	
	public void stop(){
		
	}
	
	public void destroy(){
		
	}
	@Override
	public void run() {
		// Erniedrigen der ThreadPriority
		Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

		// Solange true ist läuft der Thread weiter
		while (true)
		{

			
//			if(x_pos >appletsize_x+radius){					// X Wand! Bedingungen für Beamen
//				x_pos = -20;
//			}else if(x_pos <= -radius){
//				x_pos = appletsize_x+radius;
//			}
//			  x_pos += x_speed;
//			  
//			if(y_pos >appletsize_y+radius-100){					// Y Wand! Bedingungen für Beamen
//				y_pos = -20;
//			}else if(y_pos <= -radius){
//				y_pos = appletsize_y+radius;
//			}
//			  y_pos += y_speed;
			
			if(x_pos >appletsize_x-radius){					// X Wand! Bedingung für Abprallen
				x_speed = -10;
			}else if(x_pos <= radius){
				x_speed = +10;
			}
			 x_pos += x_speed;
			
			if(y_pos >appletsize_y-radius){					// Y Wand! Bedingung für Abprallen
				y_speed = -10;
			}else if(y_pos <= radius){
				y_speed = +10;
			}
			  y_pos += y_speed;
			  
			  /////////////////////////////// Abprallen vom dingsdabumsda
			  
			  
			
			  
			 
		      // Neuzeichnen des Applets
		      repaint();
		      
		      try
		      {
		            // Stoppen des Threads für in Klammern angegebene Millisekunden
		            Thread.sleep (20);
		      }
		      catch (InterruptedException ex)
		      {
		            // do nothing
		      }

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

		} 
	}
	
	public void paint(Graphics g){
		g.setColor(Color.red);
		g.fillOval(x_pos-radius, y_pos-radius, 2*radius, 2*radius);
		g.fillRect(x_rechteck, y_rechteck, 15, 100);
		
	}
	
	

	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);

	}

	@Override
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		if(e.getKeyCode()== KeyEvent.VK_SPACE){
			if(x_speed == -1){
				x_speed = 1;
			}else if(x_speed==1){
				x_speed = -1;
			}
		}
		if(e.getKeyCode()== KeyEvent.VK_UP){
			y_rechteck= y_rechteck-10;
			}
		if(e.getKeyCode()== KeyEvent.VK_DOWN){
			y_rechteck= y_rechteck+10;
		}
		if(e.getKeyCode()== KeyEvent.VK_LEFT){
			x_rechteck= x_rechteck-10;
		}
		if(e.getKeyCode()== KeyEvent.VK_RIGHT){
			x_rechteck= x_rechteck+10;
		}
	}
	
		
	

	@Override
	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}
}

Mit freundlichen Grüßen
Jhonny
 

OliverKroll

Aktives Mitglied
Das Programm ist an sich vollständig, aber es hat den Focus noch nicht. Das führt dazu, daß der Ball sich zwar bewegt, aber die Tastatur nicht reagiert. Wenn man auf das Applet drückt, dann reagiert die Tastatur und man kann dein Spiel spielen.
Damit das Applet von Anfang an spielbar ist, kannst du in Zeile 53 einfügen:
Java:
this.requestFocusInWindow();
Damit kann man das Spiel von Anfang an spielen, ohne erst auf das Applet drücken zu müssen.

Ist schon spät :oops:, ich merk' jetzt erst, daß man den Ball noch gar nicht treffen kann. Alles Wichtige steht bei Steev.
 
Zuletzt bearbeitet:

Jhonny

Mitglied
Hab mir die codes angeschaut und bin blick es immer noch nicht :autsch:
das ist ja nur eine abfrage die ich machen müßte ... also ob das rechteck den kreis berührt. und das frage ich mit contains soweit ich weiß...
aber ich weiß nicht sorecht wo genau ich das schreiben soll . hab ja nicht extra eine klasse für das rechteckt gemacht...........
 

Steev

Bekanntes Mitglied
Normalerweise solltest du den Ball, den Spieler usw. in Extraklassen auslagern. Wenn du das erstmal gemacht hast, dann brauchst du bei der Klasse spielert nur noch eine Methode hitBall(Ball ball) oder so machen und kannst dann einfach abfragen, ob der Spieler den Ball berührt um dann entsprechend zu reagieren.
Beim Abprallen wird in der Regel bei PingPong noch die Y-Geschwindigkeit des Balles entsprechend der Aufprallposition neu berechnet. Den Code hatte ich aber bei einem der beiden Themen schon gepostet.
Guck dir vieleicht einfach mal den Code von Quaxli an, da steht eigendlich alles drin, was du machen musst. Die Abfrage, ob der Ball den Spieler berührt musst du direkt nach der Positionsveränderung des Balles schreiben, damit du direkt reagieren kannst. Die X-Geschwindigkeit wird dann einfach nur invertiert und die Y-Geschwindigkeit entsprechend folgendem Codes neu initialisiert:

[Java] x_speed = -x_speed;
// Y-Position muss zwischen player.y_pos und player.y_pos + player.height liegen
double yp = y_pos - player.y_pos + (player.height / 2.);
double pw = 100 * yp / (player.height / 2.);
y_speed = pw * max_y_speed;[/Java]

Falls du Probleme damit hast, die Klassen zu erstellen kannst du dich ja nochmal melden.

Gruß
Steev
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M [Spiel] Kartenspiel Leben und Tod Tips und Probleme Spiele- und Multimedia-Programmierung 7
N Minecraft Frage für einen Minecraft Server Spiele- und Multimedia-Programmierung 2
Drachenbauer Speicher-Tool für ein Spiel schreiben Spiele- und Multimedia-Programmierung 13
B Deepmind Poker Bot für PokerStars konfigurieren? Spiele- und Multimedia-Programmierung 2
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
K Wie bekomme ich eine Transition für alle Objekte zum stoppen? Spiele- und Multimedia-Programmierung 1
E Organisation für Game Spiele- und Multimedia-Programmierung 1
Excess Ballerfisch für Android Spiele- und Multimedia-Programmierung 3
coolian ich brauche irgendeine gui lib für lwjgl2 Spiele- und Multimedia-Programmierung 51
krgewb Anderer Algorithmus für Bounding Box Spiele- und Multimedia-Programmierung 9
MiMa MP3 Dateien für Metadaten abgleichen Spiele- und Multimedia-Programmierung 0
Freshy Bot für Discord Spiele- und Multimedia-Programmierung 61
R Ideen für die Backend-Entwicklung eines Games gesucht Spiele- und Multimedia-Programmierung 8
G Mikrophon-/Audiosteuerung für einen Character Spiele- und Multimedia-Programmierung 1
P Tennis- Spielstand- Zähler für Schule programmieren Spiele- und Multimedia-Programmierung 6
M Logik für ein Quiz Spiele- und Multimedia-Programmierung 7
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
MiMa Metadaten für Multimedia Daten ermitteln Spiele- und Multimedia-Programmierung 4
G Übungsprogramm für Matheaufgaben Spiele- und Multimedia-Programmierung 1
F Algorithmus für bessere Kollisionsabfragen Spiele- und Multimedia-Programmierung 10
S Bilder Für Schachfiguren Spiele- und Multimedia-Programmierung 14
Timo_neu_in_java Suche etwas einfaches für Anfänger Spiele- und Multimedia-Programmierung 6
I Minecraft Suche Plugin Developer für Minecraft Netzwerk! Spiele- und Multimedia-Programmierung 2
S GUI erstellen für Text Adventure Spiele- und Multimedia-Programmierung 4
S Eigene Klasse vec_t - 3 oder 4 Einheiten für x, y, z und w Spiele- und Multimedia-Programmierung 11
R Vererbbarer GameLoop für Engine Spiele- und Multimedia-Programmierung 14
J Vektor für Gravitation erzeugen Spiele- und Multimedia-Programmierung 34
I Minecraft: Craftingrecipe für Braustand ändern Spiele- und Multimedia-Programmierung 9
Z Minimax-Algorithmus für TicTacToe Spiele- und Multimedia-Programmierung 5
H KI für Spiele Spiele- und Multimedia-Programmierung 1
S Pssende Datenstruktur für ein Netz Spiele- und Multimedia-Programmierung 5
S MouseEvents für Sprites Spiele- und Multimedia-Programmierung 3
I Spectator Modus für Spiel ähnlich zu Terraria Spiele- und Multimedia-Programmierung 8
K Bestes Bildformat für Spielegrafiken und deren Einbindung in Java Spiele- und Multimedia-Programmierung 2
J mehrere Listener für einen Button / Label Spiele- und Multimedia-Programmierung 1
C Port umleiten: lesen und schreiben für MCServer-Client über Skype Spiele- und Multimedia-Programmierung 0
J Musik Bibliothek für GUI Spiele- und Multimedia-Programmierung 7
B Hauptmenü für Spiel Spiele- und Multimedia-Programmierung 1
R Ratschlag für 2D-3D Engine für die Spieleentwicklung gesucht Spiele- und Multimedia-Programmierung 4
Androbin KI für Verfolgung im Raster Spiele- und Multimedia-Programmierung 2
A Bot für Browsergame Spiele- und Multimedia-Programmierung 2
H Tutorials für Fortgeschrittene 3D-Anwedungen Spiele- und Multimedia-Programmierung 2
lord239123 suche Graphiker für ein Pokemon-Spiel Spiele- und Multimedia-Programmierung 6
Furtano Vektoren für Bewegung für eine 2D-Simulation Spiele- und Multimedia-Programmierung 3
T Sinusgenerator für eine Hp Spiele- und Multimedia-Programmierung 8
J Menü für Snakespiel in einzelnem JFrame Spiele- und Multimedia-Programmierung 5
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
Guybrush Threepwood Ketzerische Frage: Opus-Codec für Java Spiele- und Multimedia-Programmierung 14
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
N Animationen für ein 2D game Spiele- und Multimedia-Programmierung 6
S Aufbau für 2D Spiele Spiele- und Multimedia-Programmierung 7
L Client für ein Browsergame Spiele- und Multimedia-Programmierung 21
Devil0s Swing Elemente für Inventar? Spiele- und Multimedia-Programmierung 9
Kenan89 Ansatzfrage: Kartenspiel für 2 Spieler Online Spiele- und Multimedia-Programmierung 3
F Ideen für spiel Spiele- und Multimedia-Programmierung 4
P Spielfeld für RPG Spiele- und Multimedia-Programmierung 15
Hoppelmann Alphamap (Bild) für 3D-Terrain generieren Spiele- und Multimedia-Programmierung 2
S Algorithmus zur Ressourcesuche für die KI Spiele- und Multimedia-Programmierung 5
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
K Einfache Engine für einfaches 3D gesucht Spiele- und Multimedia-Programmierung 10
C KI für Skatspiel - Wie können die Computerspieler eigenständig handeln? Spiele- und Multimedia-Programmierung 10
S Aufbau von Klassen für Spiel Spiele- und Multimedia-Programmierung 13
Kenan89 Kleines Projekt für Java Spiele- und Multimedia-Programmierung 5
M Empfehlungen für ein 2D-Jump'n'run Spiele- und Multimedia-Programmierung 4
A Grundlagensuche für Spiel Spiele- und Multimedia-Programmierung 8
C Wo ist der MP3 Plugin für JMF? Spiele- und Multimedia-Programmierung 3
qwerqer Design Pattern gesucht für Spielregeln Spiele- und Multimedia-Programmierung 2
M Java als Programmiersprache für kommerzielle Spieleentwicklung? Spiele- und Multimedia-Programmierung 3
K Game Engine für selbstprogrammiertes Spiel Spiele- und Multimedia-Programmierung 27
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
A Music für Android game Spiele- und Multimedia-Programmierung 3
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
M Minecraft Suche Java Programmierer (für Minecraft) Spiele- und Multimedia-Programmierung 2
Luk10 Tipps für bessere Animationen / Grafik Engine Spiele- und Multimedia-Programmierung 2
T 2D Menü für 3D Spiel Spiele- und Multimedia-Programmierung 5
T Grundlagenwissen für den 3D Raum Spiele- und Multimedia-Programmierung 6
I getSubImage sorgt für starken Performanceeinbruch Spiele- und Multimedia-Programmierung 6
M technologie für video, webcam & co Spiele- und Multimedia-Programmierung 25
C Java für große Spiele geeignet ? Spiele- und Multimedia-Programmierung 101
D Libraryempfehlung für Effekte Spiele- und Multimedia-Programmierung 3
B Spiele programmieren für ein Fenster? Spiele- und Multimedia-Programmierung 14
D Tabelle für Spiel Spiele- und Multimedia-Programmierung 3
N Grundlagen für ein Jump&Run Spiele- und Multimedia-Programmierung 3
S Datenbank gesucht für Bilder(gif-dateien) Spiele- und Multimedia-Programmierung 5
J Suche 3D Programm für jMonkeyEngine Spiele- und Multimedia-Programmierung 5
W 3D-APIs für Java - Eine Übersicht Spiele- und Multimedia-Programmierung 8
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
S Game Client für kleine Competition Spiele- und Multimedia-Programmierung 3
F Programm für Bildbearbeitung gesucht: Skalieren und Speichern Spiele- und Multimedia-Programmierung 6
K Lösungsansätze für ein Spiel Spiele- und Multimedia-Programmierung 2
Plastagen Frameworls für Animationen und co Spiele- und Multimedia-Programmierung 3
aze Wie Transform3D für PosPathInterpolator bestimmen Spiele- und Multimedia-Programmierung 8
M Musik für Spiel wo downloaden? Spiele- und Multimedia-Programmierung 7
R Netzwerkstruktur für ein kleines Spiel Spiele- und Multimedia-Programmierung 8
O KI (künstliche Intelligenz) für Schachlogik Spiele- und Multimedia-Programmierung 4
J Brauche denkanstoß für kleines grafikframework Spiele- und Multimedia-Programmierung 3
A Countdown-Timer für Spiel Spiele- und Multimedia-Programmierung 4
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2
S Grafik erstellen für Java Spiel Spiele- und Multimedia-Programmierung 8
G Javasimulatoren für Siemenshndys Spiele- und Multimedia-Programmierung 11

Ähnliche Java Themen

Neue Themen


Oben