Poruszanie postaci

0

Napisałem program, w którym owal ma chodzić za pomocą WSAD. W ogóle się nie porusza. Nie mam pojęcia co zrobić. Wyświetla się prawidłowo. Tutaj kod:

 import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Program extends JFrame implements KeyListener{
	private JLabel tlo, Char;
	private int pozX = 30;
	private int pozY = 50;
	public Program(){
		setSize(400, 300);
		setTitle("Program");
		setLocation(150, 120);
		setResizable(false);
		setLayout(null);
		addKeyListener(this);
		setFocusable(true);
		
		tlo = new JLabel();
		ImageIcon tl = new ImageIcon("tlo.PNG");
		tlo.setBounds(0, 0, 400, 300);
		tlo.setIcon(tl);
		add(tlo);
		
	}
	public void paint(Graphics g) {
        super.paint(g);
        g.fillOval(pozX, pozY, 20, 20);
        
    }

	public static void main(String[] args){
		Program okno = new Program();
   	 okno.setVisible(true);
   	 okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   	
	}
	
	@Override
	public void keyTyped(KeyEvent e) {
		switch(e.getKeyCode()){
		case KeyEvent.VK_W:
			pozY -= 5;
			break;
		case KeyEvent.VK_S:
			pozY += 5;
			break;
		case KeyEvent.VK_A:
			pozX -= 5;
			break;
		case KeyEvent.VK_D:
			pozX += 5;
			break;
		}
		repaint();
	}
	@Override
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
	
}
0
        @Override
        public void keyTyped(KeyEvent e) {
                switch(e.getKeyChar()){
                case 'w':
                        pozY -= 5;
                        break;
                case 's':
                        pozY += 5;
                        break;
                case 'a':
                        pozX -= 5;
                        break;
                case 'd':
                        pozX += 5;
                        break;
                }
                repaint();
        }
0

Wtedy nie zadziała na duże litery, przenieś kod

                switch(e.getKeyCode()){
                case KeyEvent.VK_W:
                        pozY -= 5;
                        break;
                case KeyEvent.VK_S:
                        pozY += 5;
                        break;
                case KeyEvent.VK_A:
                        pozX -= 5;
                        break;
                case KeyEvent.VK_D:
                        pozX += 5;
                        break;
                }
                repaint();

do metody keyReleased.

0

Działa. Wielkie dzięki!

0

Do tworzenia jakichkolwiek gier polecam Slick2d.
Proste środowisko z łatwą aktualizacją danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1