www.pudn.com > snakḛ³ÔÉß(javaʵÏÖ).rar > Snake.java


import java.awt.*; 
import java.applet.*; 
 
public class Snake extends Applet implements Runnable 
{ 
Image dot[]=new Image[400]; 
Image back; 
Image     offI; 
Graphics  offG; 
 
int x[]= new int[400]; 
int y[]= new int[400]; 
int rtemp=1; 
int game=1; 
int level; 
int z; 
int n; 
int count=0; 
int score=0; 
int add=1; 
 
Button b= new Button("Beginner"); 
Button i= new Button("Intermediate"); 
Button p= new Button("Professional"); 
Button X= new Button("Xtreamest"); 
 
String stemp; 
String s; 
String t; 
 
boolean go[]=new boolean[400]; 
boolean left=false; 
boolean right=false; 
boolean up=false; 
boolean down=false; 
boolean started=false ; 
boolean me=false; 
 
Thread setTime; 
 
public void init()  
{ 
add(b); 
add(i); 
add(p); 
add(X); 
setBackground(Color.black); 
back = getImage(getCodeBase(), "screan.gif"); 
for (z=0 ; z < 400 ; z++){dot[z] = getImage(getCodeBase(), "dot.gif");  } 
} 
 
public void update(Graphics g) 
{ 
Dimension d = this.size(); 
if(offI == null) 
{ 
offI = createImage(d.width, d.height); 
offG = offI.getGraphics(); 
} 
offG.clearRect(0, 0, d.width, d.height); 
paint(offG); 
g.drawImage(offI, 0, 0, null); 
} 
 
public void paint(Graphics g) 
{ 
g.drawImage(back, 0, 0, this); 
g.setColor(Color.white); 
 
if(started) 
{ 
g.setFont(new Font("Verdana", 1, 12)); 
t = "Score "+score+""; 
g.drawString(t, 75, 220); 
} 
 
if(game==1)  
{  
g.setFont(new Font("Arial", 1, 13)); 
s = "Set Mode"; 
g.drawString(s, 65, 30); 
 
b.move(75, 50);  
i.move(68, 90); 
p.move(68, 130); 
X.move(73, 170); 
} 
 
if((game==2)||(game==3)) 
{ 
if(!started) 
{ 
g.setFont(new Font("Verdana", 1, 11)); 
t = "Use the key board arrows to move!"; 
g.drawString(t, 5, 215); 
} 
for (z=0 ; z <= n ; z++){  g.drawImage(dot[z],x[z],y[z],this);  } 
me=true; 
} 
 
if(!me) 
{ 
g.setFont(new Font("Verdana", 1, 11)); 
t = "by ali"; 
g.drawString(t, 5, 215);   
} 
 
if(game==3) 
{ 
g.setFont(new Font("Verdana", 1, 13)); 
s="Game Over"; 
g.drawString(s, 65, 60); 
} 
 
} 
 
public void run() 
{ 
for(z=4 ;z <400 ; z++) { go[z]=false;} 
for(z=0 ; z<4 ; z++) { go[z]=true;x[z]=91;y[z]=91;} 
n=3; 
game=2; 
score=0; 
b.move(70, -100); 
i.move(70, -100); 
p.move(70, -100); 
X.move(70, -100); 
left=false; 
right=false; 
up=false; 
down=false; 
locateRandom(4); 
 
while(true) 
{ 
if (game==2) 
{ 
if ((x[0]==x[n])&&(y[0]==y[n])){go[n]=true;locateRandom((n+1));score+=add; } 
for(z = 399 ; z > 0 ; z--) 
{ 
if (go[z])  
{  
x[z] = x[(z-1)]; y[z] = y[(z-1)];  
if ((z>4)&&(x[0]==x[z])&&(y[0]==y[z])){ game=3; }  
} 
} 
if(left){ x[0]-=10; } 
if(right){ x[0]+=10; } 
if(up){ y[0]-=10; } 
if(down){ y[0]+=10; } 
} 
 
if(y[0]>191){y[0]=191;game=3;} 
if(y[0]<1){y[0]=1;game=3;} 
if(x[0]>191){x[0]=191;game=3;} 
if(x[0]<1){x[0]=1;game=3;} 
 
if (game==3) 
{  
if (count <(1500/level)) { count++; } else { count=0;game=1;repaint();setTime.stop(); }  
} 
 
repaint(); 
try{setTime.sleep(level);} 
catch(InterruptedException e){} 
} 
} 
 
public void locateRandom(int turn) 
{ 
rtemp=(int)(Math.random()*20); 
x[turn]=((rtemp*10)+1) ; 
rtemp=(int)(Math.random()*20); 
y[turn]=((rtemp*10)+1); 
n++; 
} 
 
public boolean keyDown(Event e, int key)  
{ 
if ((key == Event.LEFT) &&(!right)){left = true; up = false; down = false;if(!started)started=true;} 
if ((key == Event.RIGHT) && (!left)){right = true; up = false; down = false;if(!started)started=true;} 
if ((key == Event.UP) && (!down)){ up = true; right = false; left = false;if(!started)started=true;} 
if ((key == Event.DOWN) && (!up)){down = true; right = false; left = false;if(!started)started=true;} 
return true; 
} 
 
public boolean action(Event event, Object obj) 
{ 
stemp = (String) obj; 
 
if(stemp.equals("Beginner")) 
{ 
add=2; 
level=100; 
setTime = new Thread(this); 
setTime.start(); 
return true; 
} 
 
if(stemp.equals("Intermediate")) 
{ 
add=5; 
level=70; 
setTime = new Thread(this); 
setTime.start(); 
return true; 
} 
 
if(stemp.equals("Professional")) 
{ 
add=10; 
level=40; 
setTime = new Thread(this); 
setTime.start(); 
return true; 
} 
 
if(stemp.equals("Xtreamest")) 
{ 
add=20; 
level=20; 
setTime = new Thread(this); 
setTime.start(); 
return true; 
} 
return false; 
}                       
}