Błąd w programie w javie

0

Witam otóż mam taki problem napisałem prosty kod gry. Ale niestety przy poruszaniu się postaci jest błąd. A mianowicie nic się nie dzieje po wciśnięciu przycisku.

Kod:
(GŁÓWNY KOD)

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;
import java.util.Timer;

public class Game extends Applet implements KeyListener
{
	int roz1 = 600;
	int roz2 = 400;
	static Applet applet;
	aaa aaa = new aaa();
	Timer timer = new Timer();
	Image bufor;
	Graphics bg;
	
	public void init()
	{
		applet = this;
		applet.addKeyListener(this);
		applet.setSize(600,400);
		applet.setBackground(Color.lightGray);
		bufor = createImage(roz1,roz2);
		bg = bufor.getGraphics();
		timer.scheduleAtFixedRate(aaa,10,10);
		aaa.zrobPlansze();
	}
	
	public void update(Graphics g)
	{
		bg.clearRect(0,0,roz1,roz2);
		paint(bg);
		g.drawImage(bufor,0,0,applet);
	}
	
	public void paint(Graphics g)
	{
		rysujPlansze(g);
	}
	
	public void rysujPlansze(Graphics g)
	{
		for(int i=0;i<aaa.plansza.length;i++)
		{
			for(int j=0;j<aaa.plansza[0].length;j++)
			{
				switch(aaa.plansza[i][j])
				{
				case 0:
					g.setColor(Color.GREEN);
					g.fillRect(40*j,40*i,40,40);
					break;
				case 1:
					g.setColor(Color.BLUE);
					g.fillRect(40*j,40*i,40,40);
					break;
				case 2:
					g.setColor(Color.DARK_GRAY);
					g.fillRect(40*j,40*i,40,40);
					break;
				case 4:
					g.setColor(Color.BLACK);
					g.fillRect(40*j,40*i,40,40);
					break;
				}
			}
		}
	}

	public void keyPressed(KeyEvent arg0) 
	{
		switch(arg0.getKeyChar())
		{
		case 'w':
			aaa.ruszaj('g');
			break;
		case 'a':
			aaa.ruszaj('l');
			break;
		case 'd':
			aaa.ruszaj('p');
			break;
		case 's':
			aaa.ruszaj('d');
			break;	
		}
	}

	public void keyReleased(KeyEvent arg0) 
	{
		
	}

	public void keyTyped(KeyEvent arg0) 
	{
		
	}
}

(MAPA I PORUSZANIE SIĘ)

import java.util.TimerTask;

public class aaa extends TimerTask
{	
	int plansza[][] = new int[10][15];
	int poz1 = 1;
	int poz2 = 15;
	
	public void run() 
	{	
		Game.applet.repaint();
	}
	
	public void zrobPlansze()
	{
		int plansza2[][] = {
				{0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},
				{0,0,0,0,0,0,0,0,1,0,0,0,0,0,0},
				{0,0,0,0,0,0,0,0,1,1,0,0,0,0,0},
				{0,0,0,0,0,0,0,1,1,1,0,0,0,0,0},
				{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
				{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
				{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
				{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
				{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
				{2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
		};
		for(int i=0;i<plansza.length;i++)
		{
			for(int j=0;j<plansza[0].length;j++)
			{
				plansza[i][j] = plansza2[i][j];
			}
		}
	}
	
	public void ruszaj(char gdzie)
	{
		switch(gdzie)
		{
		case 'l':
			if(plansza[poz1][poz2-1]==0)
			{
				plansza[poz1][poz2-1]=4;
				plansza[poz1][poz2]=0;
				poz2--;
			}
			break;
		case 'p':
			break;
		case 'g':
			break;
		case 'd':
			break;
		}
	}
}
4

Kill it with fire!
user image

Nic więcej z tym kodem zrobić się nie da. Skasuj. Poucz sie podstaw języka w którym chcesz pisać. Wróć do tego za pół roku.

0

https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html
tu jest przykład (w kodzie komentarze są ) obsługi zdarzeń również klawiatury
https://github.com/KasiaKasia/Symulator.git

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