Gra - brak usuwania grafiki postaci z wcześniejszego miejsca podczas jej ruchu

0

Witam,
mam pewien problem chce zrobią taką bardzo prosta gre, lecz przy gry poruszam się postacią, to zostaje ona narysowana w nowym miejscu lecz nie zostaje usunięta z wcześniejszego położenia. Dokładnie co się dzieje pokaże w załączniku a tu załączam kod:

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Timer;

@SuppressWarnings("serial")
public class Main extends Applet implements KeyListener {
	public void init()
	{
		applet = this;
		applet.setSize(650, 620);
		timer.scheduleAtFixedRate(run, 10, 10);
		applet.addKeyListener(this);
		
		run.mapa();
		
		klocek = getImage(getDocumentBase(), "img/klocek.png");
		klocek2 = getImage(getDocumentBase(), "img/klocek2.png");
		postac = getImage(getDocumentBase(), "img/postac.png");
		portal = getImage(getDocumentBase(), "img/portal.png");
		
	}
	
	public void update(Graphics g)
	{
		paint(g);
	}
	
	public void paint(Graphics g)
	{
		for(int i =0; i<run.maps.length; i++)
		{
			for(int j=0; j<run.maps[0].length; j++)
			{				
				g.drawImage(klocek2,10 + 30*j,10 + 30*i,this); 
				
				 if(run.maps[i][j] == 0)
					 g.drawImage(klocek2,10 + 30*j,10 + 30*i,this);
				 
				 if(run.maps[i][j] == 1)
					 g.drawImage(klocek,10 + 30*j, 10 + 30*i,this);
				 
				 if(run.maps[i][j] == 2)
					 g.drawImage(postac, 10 + 30*j,10 + 30*i,this);	
				 
				 if(run.maps[i][j] == 3)
					 g.drawImage(portal,10 + 30 *j, 10+ 30*i, this );
				 
			}
		}
	}

	public void keyPressed(KeyEvent e) {
		
		switch(e.getKeyCode())
		{
		case 87:		
			run.moveHeroes('w');
			break;
			
		case 83:
			run.moveHeroes('s');
			break;
			
		case 65:
			run.moveHeroes('a');
			break;
			
		case 68:
			run.moveHeroes('d');
			break;
		
		}
	}

	public void keyReleased(KeyEvent e) {

	}

	public void keyTyped(KeyEvent e) {

	}
	
	static Applet applet;
	Run run = new Run();
	Timer timer = new Timer();
	Image klocek,klocek2, postac, portal;
}

Nie moge usunąć:

public void update(Graphics g)
	{
		paint(g);
	}

Jak to usunę to ruch postaci działa normalnie ale wszystko miga.
Z góry dziękuje.

2

Luźna myśl: double buffering.

0

Bardzo dobra myśl, teraz wszystko działa jak powinno.
Dzięki :)

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