Witam ma problem z grą .Przy wciskaniu klawiszy ekran miga i jest ok do następnego ruchu , powiedzcie mi jak to usunąć.
Oto kod do klasy:
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Timer;
import javax.swing.JApplet;
import javax.swing.JButton;
public class Main extends JApplet implements KeyListener,ActionListener
{
private static final long serialVersionUID = -6424241029525055908L;
private Image Bufor ;
private Graphics bg;
private boolean lvl1=true,menu=false;
private JButton k;
private Container s;
private Timer timer=new Timer();
private Plansza planszaSkrypt=new Plansza();
static JApplet applet;
public void init()
{
applet=this;
applet.setSize(1200,800);
applet.addKeyListener(this);
applet.setBackground(Color.black);
applet.setLayout(null);
applet.addKeyListener(this);
applet .setFocusable(true );
lvl1=false;
menu=true;
if(menu)
{
s=getContentPane();
s.setLayout(null);
s.setBackground(Color.red);
k=new JButton("");
k.setBounds(100, 100, 200, 50);
k.addActionListener(this);
s.add(k);
}
planszaSkrypt.inicjujPlansze();
applet.repaint();
Bufor = createImage(1200,800);
bg=Bufor.getGraphics();
timer.scheduleAtFixedRate(planszaSkrypt, 1, 1);
}
public void start ()
{
}
public void update(Graphics g)
{
bg.clearRect(0, 0, 1200, 800);
paint(bg);
g.drawImage(Bufor, 0, 0, applet);
applet.repaint();
}
public void paint(Graphics g)
{
super.paint(g);
if(lvl1)
{
rysujPlansze(g);
}
}
public void rysujPlansze(Graphics g)
{
for(int i = 0 ;i<planszaSkrypt.plansza.length;i++)
{
for(int k = 0 ;k<planszaSkrypt.plansza[0].length;k++)
{
switch (planszaSkrypt.plansza[i][k]) {
case 0:
g.setColor(Color.black);
g.fillRect(k*40, i*40, 40, 40);
break;
case 1:
g.setColor(Color.orange);
g.fillRect(k*40, i*40, 40, 40);
break;
case 2:
g.setColor(Color.blue);
g.fillRect(k*40, i*40, 40, 40);
break;
case 3:
g.setColor(Color.white);
g.fillRect(k*40, i*40, 40, 40);
planszaSkrypt.pozycjaGraczaX=k;
planszaSkrypt.pozycjaGraczaY=i;
break;
}
}
}
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
int klawisz = e.getKeyCode();
if(klawisz==KeyEvent.VK_W)
{
if(planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY-1][planszaSkrypt.pozycjaGraczaX]==0)
{
System.out.println("W");
planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY][planszaSkrypt.pozycjaGraczaX]=0;
planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY-1][planszaSkrypt.pozycjaGraczaX]=3;
applet.repaint();
}
}else
if(klawisz==KeyEvent.VK_S)
{
if(planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY+1][planszaSkrypt.pozycjaGraczaX]==0)
{
System.out.println("S");
planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY][planszaSkrypt.pozycjaGraczaX]=0;
planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY+1][planszaSkrypt.pozycjaGraczaX]=3;
applet.repaint();
}
}else
if(klawisz==KeyEvent.VK_A)
{
if(planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY][planszaSkrypt.pozycjaGraczaX-1]==0)
{
System.out.println("A");
planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY][planszaSkrypt.pozycjaGraczaX]=0;
planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY][planszaSkrypt.pozycjaGraczaX-1]=3;
applet.repaint();
}
}else
if(klawisz==KeyEvent.VK_D)
{
if(planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY][planszaSkrypt.pozycjaGraczaX+1]==0)
{
System.out.println("D");
planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY][planszaSkrypt.pozycjaGraczaX]=0;
planszaSkrypt.plansza[planszaSkrypt.pozycjaGraczaY][planszaSkrypt.pozycjaGraczaX+1]=3;
applet.repaint();
}
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
menu=false;
lvl1=true;
k.removeActionListener(this);
s.remove(k);
s.setBackground(null);
applet.repaint();
}
}
Ato kod do klasy plansza:
package werty12121.gry.graaplet;
import java.util.TimerTask;
public class Plansza extends TimerTask {
int[][] plansza=new int[20][30];
int pozycjaGraczaX;
int pozycjaGraczaY;
public void inicjujPlansze()
{
int[][] planszatemp={
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,1},
{1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};
for(int i = 0 ;i<plansza.length;i++)
{
for(int k = 0 ;k<plansza[0].length;k++)
{
plansza[i][k]=planszatemp[i][k];
Main.applet.repaint();
}
}
}
@Override
public void run() {
// TODO Auto-generated method stub
//Main.applet.repaint();
}
}