T
Thorse
Gast
Ich bin gerade dabei eine Art Snake zu programmieren, dabei habe ich folgendes Problem :
Eigentlich soll zuerst das Spielfeld gezeichnet werden und dann die Punkte.
Doch dadurch das die Punkte gezeichnet werden wird das Spielfeld (das Rechteck) "gelöscht".
Sieht vll jmd vion euch den Fehler:
Eigentlich soll zuerst das Spielfeld gezeichnet werden und dann die Punkte.
Doch dadurch das die Punkte gezeichnet werden wird das Spielfeld (das Rechteck) "gelöscht".
Sieht vll jmd vion euch den Fehler:
Java:
import java.awt.Color;
import java.awt.Graphics; //x+8 //y+28
import java.awt.event.*;
import java.util.Random;
import javax.swing.JFrame;
public class Snake extends JFrame implements KeyListener
{
private static final long serialVersionUID = 3800165321162121122L;
Color schwarz = new Color( 0, 0, 0 );
Random rand = new Random();
String pcom;
String com;
String comnext=new String("r");
int lifes = 4;
int s = 100;
int dots = 3;
int points=0;
Boolean equal=false;
Boolean got=true;
int[]xvals=new int[20];
int[]yvals=new int[30];
int i;
int e=0;
int x1 = 13;
int y1 = 33;
int xl = 4000;
int yl = 4000;
int xg;
int yg;
int fx=0;
int fy=0;
Snake()
{
setSize(425,360); //x + 2x8Framerand + 2x5Spielfeld
//y+28+8 Framerand + 2x5 Spielfeld
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(schwarz);
addKeyListener(this);
}
public void keyPressed(KeyEvent ev)
{
if(ev.getKeyCode()==KeyEvent.VK_LEFT && com.equals("r")==false)
{comnext = "l";}
if(ev.getKeyCode()==KeyEvent.VK_RIGHT && com.equals("l")==false)
{comnext = "r";}
if(ev.getKeyCode()==KeyEvent.VK_UP && com.equals("d")==false)
{comnext = "u";}
if(ev.getKeyCode()==KeyEvent.VK_DOWN && com.equals("u")==false)
{comnext = "d";}
}
public void keyTyped (KeyEvent ev)
{
if(ev.getKeyCode()==KeyEvent.VK_LEFT && com.equals("r")==false)
{comnext = "l";}
if(ev.getKeyCode()==KeyEvent.VK_RIGHT && com.equals("l")==false)
{comnext = "r";}
if(ev.getKeyCode()==KeyEvent.VK_UP && com.equals("d")==false)
{comnext = "u";}
if(ev.getKeyCode()==KeyEvent.VK_DOWN && com.equals("u")==false)
{comnext = "d";}
}
public void keyReleased (KeyEvent ev){}
public void paint( Graphics g )
{
if(pcom.equals("flash"))
{
g.setColor(new Color(0,0,0));
g.fillRect(8, 28, 450, 350);
g.setColor(Color.GRAY);
g.drawRect(8, 28, 408, 303);
g.drawRect(9, 29, 406, 301);
g.drawRect(10, 30, 404, 299);
}
if(pcom.equals("score"))
{
g.setColor(Color.WHITE);
g.drawString("Score "+points,30,345);
}
if(pcom.equals("loop"))
{
g.setColor(new Color(255,0,0));
g.fillRect(xg, yg, 5, 5);
g.setColor(new Color(0,0,0));
g.fillRect(xvals[0], yvals[0], 5, 5);
g.setColor(new Color(rand.nextInt(256),rand.nextInt(256),rand.nextInt(256)));
g.fillRect( x1, y1, 5, 5);
}
}
void draw(String c)
{
pcom=c;
repaint();
}
public void start()throws Exception
{
draw("flash");
draw("score");
while(lifes!=0)
{
while(dots<=15)
{
Thread.sleep(s);
xvals[dots]=x1;
yvals[dots]=y1;
com = comnext;
if(com.equals("l"))
x1=x1-7;
if(com.equals("r"))
x1=x1+7;
if(com.equals("u"))
y1=y1-7;
if(com.equals("d"))
y1=y1+7;
if(x1==xg&&y1==yg)
{
got=true;
dots++;
}
i = 0;
while(i<dots)
{
xvals[i]=xvals[i+1];
yvals[i]=yvals[i+1];
i++;
}
if(got==true)
{
equal=true;
while(equal==true)
{
equal=false;
xg=13+(rand.nextInt(57)*7);
yg=33+(rand.nextInt(42)*7);
while(e<=dots)
{
if(xg==xvals[e]&&yg==yvals[e])
equal=true;
e++;
}
e=0;
}
got=false;
points++;
draw("score");
}
draw("loop");
}
dots=3;
s-=50;
x1=13;
y1=33;
comnext="r";
draw("flash");
}
}
}