Tastensteuerung im Spiel

Blagg Dogg

Mitglied
hi,

nochmal ne kurze frage: ich habe angefangen ein spiel zu schreiben und schon ein bild geladen. dieses lässt sich aber nicht mit der taste "D" verschieben, so wie ich es eigentlich prorammiert habe... kann mir da wer helfen bitte:

Java:
package de.sack.main;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class WesternPanel extends JPanel implements Runnable {

	private JFrame frame;
	private Thread thread;
	private BackGround bg;
	private int nr = 1;

	public WesternPanel(int width, int height) {
		setPreferredSize(new Dimension(width, height));
		frame = new JFrame("WestWorld by Blagg Dogg 2012 (c)");
		frame.add(this);
		frame.pack();
		intitialize();
		frame.setVisible(true);
		frame.setResizable(false);

		thread = new Thread(this);
		thread.start();
	}

	private void intitialize() {
		bg = new BackGround();
		addKeys();
	}

	public static void main(String[] args) {
		new WesternPanel(1200, 480);

	}

	@Override
	public void run() {
		while (true) {
			System.out.println("Thread runs");
								
			moveGameObjects();

			repaint();

			try {
				Thread.sleep(20);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		System.out.println("Repaint NO.: " + nr++);
		bg.draw(g);
	}
	


	private void moveGameObjects() {
		// TODO Auto-generated method stub

	}

	private void addKeys() {
		this.addKeyListener(new KeyListener() {
			
			@Override
			public void keyTyped(KeyEvent arg0) {
				int key = arg0.getKeyCode();
				if(key == KeyEvent.VK_D){
					bg.setPos(bg.getPos()-10);
				}
				
			}
			
			@Override
			public void keyReleased(KeyEvent arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void keyPressed(KeyEvent arg0) {
				int key = arg0.getKeyCode();
				if(key == KeyEvent.VK_D){
					bg.setPos(bg.getPos()-10);
				}
				
			}
		});
	}

}

Java:
package de.sack.main;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class BackGround extends JPanel {

	private static final long serialVersionUID = 1L;
	BufferedImage bg;
	private int pos = 0;

	public int getPos() {
		return pos;
	}

	public void setPos(int pos) {
		this.pos = pos;
	}

	public BackGround() {
		URL picURL = getClass().getClassLoader().getResource("bg/pan_005.jpg");

		try {
			bg = ImageIO.read(picURL);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public void draw(Graphics g) {
		g.drawImage(bg, pos, 0, null);
	}

}
 

Network

Top Contributor
Und selbst hast du schon was versucht?
System.out.println(); heißt das Zauberwort!
1.) Prüfen ob bei einem Tastendruck auch wirklich ein Tastendruck im Programm ankommt, wäre jetzt mal meine Aussage. System.out.println( "Taste gedrückt" );
2.) Prüfen ob der Tastendruck D auch als D im Programm ankommt

Der Code scheint für mich im Moment richtig zu sein... aber das ist er ja eig. immer bis man ihn durch den Compiler jagt :D
 

Network

Top Contributor
Dann hast du keinen Fokus auf das Programm bzw. auf das JPanel. Ich bin mir nicht sicher ob da sAbsicht ist oder ein Bug in Java, aber mit dem JPanel scheint manchmal die Listener nicht zu funktionieren.
Adde den KeyListener deinem JFrame, also statt
this.addKeyListener...
frame.addKeyListener...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JavaFX Memory Spiel AWT, Swing, JavaFX & SWT 12
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
Zeppi Swing Button soll Spiel zurücksetzen AWT, Swing, JavaFX & SWT 5
J Spiel mit Java AWT, Swing, JavaFX & SWT 9
MABY Swing Spiel mit 2 AWT, Swing, JavaFX & SWT 4
O Focus zwischen Chat und Spiel wechselns AWT, Swing, JavaFX & SWT 3
C Benutzername in GUI eingeben und nach Spiel neues Fenster Benutzername wieder anzeigen AWT, Swing, JavaFX & SWT 1
Y Simple Spiel ploten AWT, Swing, JavaFX & SWT 2
H Swing Spiel: Maexchen: method cannot be applied to given types AWT, Swing, JavaFX & SWT 3
C Im Spiel wie auf Pfeiltasten reagieren? AWT, Swing, JavaFX & SWT 3
X Snake - Spiel AWT, Swing, JavaFX & SWT 27
U Event Handling JButton Actionevent: starte Spiel AWT, Swing, JavaFX & SWT 4
N Hilfe bei Memory-Spiel AWT, Swing, JavaFX & SWT 18
T 2D-Grafik Im 2D Spiel zoomen AWT, Swing, JavaFX & SWT 6
S Swing Spiel Richtig/Falsch implementieren AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Textbasiertes 2D Spiel, jedes Zeichen manipulierbar AWT, Swing, JavaFX & SWT 7
K Swing Spiel flackert sehr häufig AWT, Swing, JavaFX & SWT 2
J Spieleprogramm als "richtiges" Spiel starten AWT, Swing, JavaFX & SWT 19
B Swing Memory-Spiel AWT, Swing, JavaFX & SWT 2
M Swing Memory Spiel in Eclipse AWT, Swing, JavaFX & SWT 5
D Probleme mit Spiel-Engine. Komische Fehler. AWT, Swing, JavaFX & SWT 5
B spiel atomica mit swing AWT, Swing, JavaFX & SWT 6
G Problem mit Swing bei einem Sudoku Spiel AWT, Swing, JavaFX & SWT 2
G Spiel frage zu bilder in java einbinden AWT, Swing, JavaFX & SWT 3
M Problem bei Schiffeversenken-Spiel AWT, Swing, JavaFX & SWT 4
G Spielfeld für ein Spiel erstellen, wie am besten? AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben