Ich hab mich mal dran gesetzt und den Spiele-Klassiker " Snake " programmiert.
Bis jetzt bin ich soweit damit zu frieden und wollte euch mal fragen, ob ihr vielleich gute Ideen habt um das Spiel zu verbessern.
Hier ist der Quellcode und ihr könnt es euch mal anschaun:
Bis jetzt bin ich soweit damit zu frieden und wollte euch mal fragen, ob ihr vielleich gute Ideen habt um das Spiel zu verbessern.
Hier ist der Quellcode und ihr könnt es euch mal anschaun:
Java:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Snake extends Applet implements Runnable
{
Thread th = new Thread(this);
int xk=100,yk=200,rx,ry;
int x[]=new int[501];
int y[]=new int[501];
int anzahl=-1;
int i;
int s=10;
int score=-100;
double drx,dry;
boolean treffer=true;
boolean spiel=true;
char c;
char t;
String Score;
Font f = new Font("Serif",Font.BOLD,20);
private Image dbImage;
private Graphics dbg;
public void start()
{
th.start();
}
public void stop()
{
th.stop();
}
public void init()
{
setFont(f);
addKeyListener(
new KeyListener()
{
public void keyPressed(KeyEvent e)
{
if(spiel==true)
{
t = e.getKeyChar();
if(t=='w' && c!='s' || t=='s' && c!='w' || t=='a' && c!='d' || t=='d' && c!='a')
{
c = t;
}
}
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
});
}
public void run()
{
while(true)
{
for(int j=500;j!=1;j--)
{
x[j]=x[j-1];
y[j]=y[j-1];
}
x[1]=x[0];
y[1]=y[0];
x[0]=xk;
y[0]=yk;
if(c=='w')
{
yk=yk-20;
}
if(c=='s')
{
yk=yk+20;
}
if(c=='a')
{
xk=xk-20;
}
if(c=='d')
{
xk=xk+20;
}
for(int i=0;i<anzahl;i++)
{
if(xk==x[i] && yk==y[i])
{
c=',';
spiel=false;
th.stop();
}
}
if(xk==-20 || xk==320 || yk==-20 || yk==320)
{
c=',';
spiel=false;
th.stop();
}
repaint();
if(xk==rx && yk==ry)
{
treffer=true;
}
if(treffer==true)
{
drx = Math.random()*15;
dry = Math.random()*15;
rx = (int)drx;
ry = (int)dry;
rx*=20;
ry*=20;
repaint();
treffer=false;
anzahl++;
score+=100;
Score="Score: "+score;
System.out.println(anzahl);
}
try
{
Thread.sleep (160);
}
catch (InterruptedException ex){}
}
}
public void paint(Graphics g)
{
//Kopf
g.setColor(Color.green);
g.fillOval(xk,yk,20,20);
if(c=='s')
{
g.setColor(Color.black);
g.drawArc(xk+5,yk+10,10,5,180,180);
g.fillOval(xk+6,yk+5,3,3);
g.fillOval(xk+11,yk+5,3,3);
}
if(c=='w')
{
g.setColor(Color.black);
g.drawArc(xk+5,yk+5,10,5,-180,-180);
g.fillOval(xk+6,yk+10,3,3);
g.fillOval(xk+11,yk+10,3,3);
}
if(c=='a')
{
g.setColor(Color.black);
g.drawArc(xk+5,yk+5,5,10,-270,180);
g.fillOval(xk+10,yk+6,3,3);
g.fillOval(xk+10,yk+11,3,3);
}
if(c=='d')
{
g.setColor(Color.black);
g.drawArc(xk+10,yk+5,5,10,270,180);
g.fillOval(xk+5,yk+6,3,3);
g.fillOval(xk+5,yk+11,3,3);
}
//Roterpunkt
g.setColor(Color.red);
g.fillRect(rx,ry,20,20);
for(int p=0;p<anzahl;p++)
{
add(g,p);
}
g.setColor(Color.red);
g.drawString(Score,10,15);
}
public void update (Graphics g)
{
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
dbg.setColor (getForeground());
paint (dbg);
g.drawImage (dbImage, 0, 0, this);
}
public void add (Graphics g,int i)
{
g.setColor(Color.black);
g.fillOval(x[i],y[i],20,20);
}
}