2 Spieler Steuerung

Status
Nicht offen für weitere Antworten.

luftdufd

Neues Mitglied
Hallo!
Sorry falls dieses thema bereits einmal behandelt wurde ich hab aber nichts gefunden.
ich schreibe gerade einen Pong Clone schreibe.
Es funktioniert auch alles prächtig bis auf die tastatureingabe.
Wenn ein 2 spieler spiel gestartet wird und beide spieler halten ihren z.B "moveleft" key gedrückt. bewegt sich immer nur der balken des Spielers der als 2tes gedrückt hat. Hier meine 2 Listener die dem Frame der Applikation geaddet werden.

Code:
KeyFirst=new KeyListener() {
		
			public void keyReleased(KeyEvent arg0) {
				// TODO Auto-generated method stub
		
			}
		
			public void keyPressed(KeyEvent arg0) {
				if (arg0.getKeyCode()==KeyEvent.VK_LEFT){
					pf.paddle1.moveleft();
					pf.repaint();
				} else if (arg0.getKeyCode()==KeyEvent.VK_RIGHT){
					pf.paddle1.moveright();
					pf.repaint();
				}
		
			}
		
			public void keyTyped(KeyEvent arg0) {
			}
		};
		KeySec=new KeyListener() {
			
			public void keyReleased(KeyEvent arg0) {
				// TODO Auto-generated method stub
		
			}
		
			public void keyPressed(KeyEvent arg0) {
				if (arg0.getKeyCode()==KeyEvent.VK_A){
					pf.paddle2.moveleft();
					pf.repaint();
				} else if (arg0.getKeyCode()==KeyEvent.VK_D){
					pf.paddle2.moveright();
					pf.repaint();
				}
		
			}

Irgendwie muss das doch gehen das auch beide eine taste gedrückt halten können und beide bewegen sich?
Vielen Dank im voraus.
luftdufd
 

BLiNK

Mitglied
Starte einen Thread für jede Taste die gedrückt wird und lass davon die Bewegung ausführen. Stoppe die Threads, wenn die Taste losgelassen wird. Ist eigentlich recht einfach und funktioniert.
 
J

jimmy

Gast
Etwas spät aber ... :)

Ich würde Flacks für die einzelnen Tasten setzen. Also, wenn du eine Taste drückst setzt du irgendwo eine Variable auf true und beim loslassen auf false.

Nun kannst du in deinem Hauptthread wo dein spiel läuft und berechnet wird die Flags zu jedem beliebigen Zeitpunkt der dir am bessten passt abrufen.

So ist es dann auch leichter eine Pause zu implementieren, da du dann ja weniger Threads stoppen/pausieren lassen musst. Nämlich nur einen der die Flags prüft.

Ausserdem, kannst du so auf Kombinationen leichter reagieren. Also z.B Taste-w ist hoch und Taste-d ist nach rechts, dann wäre ja w+d nach schräg vorne. Oder noch eine Extra Taste wie Turbo, wo dann die Vorwärzbewegung 3mal so schnell wäre wie original also z.B. Taste-d + Taste-t.
 

dschavva

Mitglied
Hi!

Zu den Flags..., wir haben in unserem Projekt (Achtung, die Kurve!) auch Flags benutzt, nur ist es bei uns leider so, dass wenn wir zu zweit z.b. spielen, wenn einer eine seiner beiden Richtungstasten gedrückt hält der andere Spieler gar nicht machen kann. SPrich er wird solange der andere seinen Steuerknopf gedrückt hat, blockiert.

Wir benutzen keyPressed und keyReleased, und bei Gedrückthalten von einer Richtungstaste soll die Kurve (Schlange, wie man sie auch nennen mag...) solange einen Richtungswechsel in die gedrückte Richtung vollziehen!

Nur haben wir jetzt da obige Problem, weiß jemand, ob des vllt an einem allgemeinem Problem liegt, bzw. ob das Programm vllt zu langsam ist, weil objektorientiert?

Danke!
MfG dschavva (Henning, René, Matthias)
 
T

tuxedo

Gast
Naja, ihr habt, so wie sich das anhört, die Auswertung der Tasten (pressed/released) nicht richtig vom Rest des Programms entkoppelt.

Benutzt hier am besten entsprechend Threads die die Programmlogik von den Benutzereingaben entkoppeln.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Spieler auf besonderer Bahn bewegen Spiele- und Multimedia-Programmierung 1
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
B überprüfen ob das Inventar vom Spieler leer ist Spiele- und Multimedia-Programmierung 3
M Minecraft Spieler move/run (bewegen) Spiele- und Multimedia-Programmierung 0
coolian meine funktion um die höhe des terrains an bestimmter position in diesem fall spieler position zu bekommen giebt nur 0 zurück Spiele- und Multimedia-Programmierung 6
J Gegner verfolgt den Spieler Spiele- und Multimedia-Programmierung 7
Sogomn Zugriff auf den Spieler Spiele- und Multimedia-Programmierung 10
M Schleifen um abzufragen, ob der Spieler "tot" ist Spiele- und Multimedia-Programmierung 6
Androbin Verschwindender Spieler in 2D-Game Spiele- und Multimedia-Programmierung 7
Kenan89 Ansatzfrage: Kartenspiel für 2 Spieler Online Spiele- und Multimedia-Programmierung 3
D Spieler mission erfüllt Spiele- und Multimedia-Programmierung 2
C 4 gewinnt KI Spieler gegen Computer Spiele- und Multimedia-Programmierung 1
Redfrettchen Tastatur für zwei Spieler teilen? Spiele- und Multimedia-Programmierung 8
R TicTacToe: Spieler kann nicht gewinnen Spiele- und Multimedia-Programmierung 15
M BlueJ Schach Steuerung programmieren Spiele- und Multimedia-Programmierung 28
A Spracherkennung/steuerung Spiele- und Multimedia-Programmierung 12
staxx6 (Slick) Steuerung - mehrere Belegungen Spiele- und Multimedia-Programmierung 12
C Bluetooth Helikopter steuerung Spiele- und Multimedia-Programmierung 6
T Problem mit JnR-Steuerung / KeyListener Spiele- und Multimedia-Programmierung 6
D java 3d Steuerung (mit KSKB) Spiele- und Multimedia-Programmierung 9
L iTunes-Steuerung / Ereignisse abfangen Spiele- und Multimedia-Programmierung 2
A Steuerung des Bewegungsflusses bei einem Netzwerkspiel Spiele- und Multimedia-Programmierung 18
R Problem Steuerung Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben