import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
public class snake1
{
public static void main(String args[])
{
String name1= JOptionPane.showInputDialog("Enter Player one's name");
Windows myW=new Windows(name1);
myW.setSize(800,600);
myW.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent event)
{
System.exit(0);
}
});
myW.show();
while(true)
{
myW.repaint();
try{Thread.sleep(60/myW.getLevel());}catch(Exception e){}
}
}
}
class Windows extends Frame implements KeyListener
{
int appleSize = 10;
int snakeSize = 10;
private int x,y,xold,yold,textnum,turn,count;
private boolean go,move,firsttime,win,tie,goTitle,play,selectLevel;
private int size;
private int level = 0;
private int AppleX, AppleY, SnakeX, SnakeY;
private boolean left,right,up,down;
private boolean hitWall,start;
private int numHit;
private String nam1,nam2,winperson;
private int snakeBody[][];
private int growth,hits,totalHits,seconds,currentLength,snakeLength;
public Windows(String n1)
{
nam1=n1;
play=false;
win = false;
x=265;
y=265;
AppleX=x;
AppleY=y;
xold=x;
yold=y;
textnum=6;
firsttime =true;
go =false;
move =false;
goTitle=true;
go=false;
addKeyListener(this);
selectLevel=false;
level=0;
SnakeX=265;
SnakeY=265;
left=false;
right=true;
up=false;
down=false;
size=5;
hitWall=false;
start=false;
growth = 1;
snakeLength = 999;
currentLength = 1;
snakeBody = new int[snakeLength][2];
snakeBody[0][0] = SnakeX;
snakeBody[0][1] = SnakeY;
}
public int getLevel()
{
return level;
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
if(goTitle)
title(g);
if(firsttime){
selectLevel=true;
startgame(g);
movebox(g);
firsttime=false;
}
if(go){
selectLevel=true;
snakeGame(g);
}
if(play)
{
snakeGame(g);
selectLevel=false;
}
g.setFont(new Font("Courier",Font.BOLD,30));
g.setColor(Color.yellow);
g.drawString("X = ",490,100); // display x,y on screen
String xnum=Integer.toString(x);
g.drawString(xnum,550,100);
g.drawString("Y = ",640,100);
String ynum=Integer.toString(y);
g.drawString(ynum,700,100);
if(move)
movebox(g);
//repaint();
}
public void title(Graphics g)
{
g.setColor(Color.red);
g.fillOval(100,100,600,450);
g.fillRect(390,30,20,80);
//g.setColor(Color.black);
//g.drawRoundRect(100,150,20,10,20,20);
g.setColor(Color.black);
g.fillRect(0,0,800,600);
//g.setColor(Color.black);
//g.fillRect(100,100,600,400);
g.setColor(Color.red);
g.setFont(new Font("Courier",Font.ITALIC,36));
g.drawString("Snake Game", 300,200);
g.setColor(Color.white);
try{Thread.sleep(75);}catch(Exception e){}
g.drawOval(410,250,6,6);
try{Thread.sleep(75);}catch(Exception e){}
g.drawOval(404,250,6,6);
try{Thread.sleep(75);}catch(Exception e){}
try{Thread.sleep(75);}catch(Exception e){}
g.drawOval(400,240,20,20);
try{Thread.sleep(75);}catch(Exception e){}
g.drawOval(400,220,20,20);
try{Thread.sleep(75);}catch(Exception e){}
g.drawOval(320,200,20,20);
try{Thread.sleep(75);}catch(Exception e){}
g.drawOval(340,200,20,20);
try{Thread.sleep(75);}catch(Exception e){}
g.drawOval(360,200,20,20);
try{Thread.sleep(75);}catch(Exception e){}
g.drawOval(380,200,20,20);
try{Thread.sleep(75);}catch(Exception e){}
g.drawOval(400,200,20,20);
try{Thread.sleep(400);}catch(Exception e){}
for(int k=0; k<4; k++)
{
g.setColor(Color.green);
g.setFont(new Font("Courier",Font.ITALIC,36));
g.drawString("How you like them APPLES!", 140,400);
try{Thread.sleep(400);}catch(Exception e){}
g.setColor(Color.red);
g.setFont(new Font("Courier",Font.ITALIC,36));
g.drawString("How you like them APPLES!", 140,400);
try{Thread.sleep(400);}catch(Exception e){}
}
goTitle=false;
firsttime=true;
}
public void startgame(Graphics g)
{
g.setColor(Color.black);
g.fillRect(0,0,800,600);
g.setColor(Color.white);
g.setFont(new Font("Courier",Font.ITALIC,30));
g.drawString("Snake Game", 300,75);
firsttime=false;
g.setColor(Color.yellow);
g.drawString("Easy",250,265);
g.setColor(Color.yellow);
g.drawString("Normal",250,365);
g.setColor(Color.yellow);
g.drawString("Hard",250,465);
}
public void keyPressed(KeyEvent event)
{
if(selectLevel)
{
xold=x;
yold=y;
switch (event.getKeyCode())
{
case KeyEvent.VK_UP:
if(y<=265)
y=265;
else
y-=100;
move=true;
break;
case KeyEvent.VK_DOWN:
if(y>=465)
y=465;
else
y+=100;
move=true;
break;
case KeyEvent.VK_ENTER:
if(y==465) //HARD
level=3;
else if (y == 365) //MEDIUM
level=2;
else // EASY
level=1;
if(x==xold && y==yold)
{
play=true;
}
break;
}
}
else
{
if (event.getKeyCode() == KeyEvent.VK_UP)
{
if(!down)
{
down=false;
up=true;
}
left=false;
right=false;
move=false;
selectLevel=false;
}
if (event.getKeyCode() == KeyEvent.VK_DOWN)
{
if(!up)
{
up=false;
down=true;
}
left=false;
right=false;
move=false;
selectLevel=false;
}
if (event.getKeyCode() == KeyEvent.VK_LEFT)
{
if(!right)
{
right=false;
left=true;
}
up=false;
down=false;
move=false;
selectLevel=false;
}
if (event.getKeyCode() == KeyEvent.VK_RIGHT)
{
if(!left)
{
left=false;
right=true;
}
up=false;
down=false;
move=false;
selectLevel=false;
}
if (event.getKeyCode() == KeyEvent.VK_ENTER)
play=true;
}
}
public void keyReleased(KeyEvent event)
{
}
public void keyTyped(KeyEvent event)
{
}
public void movebox(Graphics screen)
{
screen.setColor(Color.black); //blue rectangle to clear
screen.fillRect(490,80,260,30);
screen.setFont(new Font("Courier",Font.BOLD,30));
screen.setColor(Color.yellow);
screen.drawString("X = ",490,100); // display x,y on screen
String xnum=Integer.toString(x);
screen.drawString(xnum,550,100);
screen.drawString("Y = ",640,100);
String ynum=Integer.toString(y);
screen.drawString(ynum,700,100);
if(x!=xold || y!=yold)
{
screen.setColor(Color.black);
screen.fillRect(xold-10,yold,xold+110,yold);
screen.setFont(new Font("Courier",Font.ITALIC,30));
screen.setColor(Color.yellow);
screen.drawString("Easy",250,265);
screen.setColor(Color.yellow);
screen.drawString("Normal",250,365);
screen.setColor(Color.yellow);
screen.drawString("Hard",250,465);
screen.setColor(Color.red);
screen.drawLine(x-10,y,x+110,y);
}
xold=x;
yold=y;
move=false;
selectLevel=true;
}
public void snakeGame(Graphics g)
{
Random rnum=new Random();
g.setColor(Color.gray);
g.fillRect(0,0,800,600);
DrawApple(g, AppleX, AppleY);
g.setColor(Color.white);
g.setFont(new Font("Courier",Font.ITALIC,30));
if(left)
SnakeX-=size;
if(right)
SnakeX+=size;
if (up)
SnakeY-=size;
if(down)
SnakeY+=size;
drawSnake(g);
if (SnakeX<5)
{
hitWall=true;
SnakeX=785;
}
if(SnakeX>785)
{
hitWall=true;
SnakeX=5;
}
if(SnakeY<30)
{
hitWall=true;
SnakeY=585;
}
if(SnakeY>585)
{
hitWall=true;
SnakeY=30;
}
selectLevel=false;
boolean touchSnakeX = (AppleX >= SnakeX) && (AppleX <= SnakeX + snakeSize);
boolean touchSnakeY = (AppleY >= SnakeY) && (AppleY <= SnakeY + snakeSize);
boolean touchAppleX = (AppleX <= SnakeX) && (AppleX + appleSize >= SnakeX);
boolean touchAppleY = (AppleY <= SnakeY) && (AppleY + appleSize >= SnakeY);
//if(SnakeX==AppleX && SnakeY==AppleY)
if((touchSnakeX && touchSnakeY) || (touchAppleX && touchAppleY))
{
AppleX = rnum.nextInt(785/size)*size+size;
AppleY = rnum.nextInt(585/size)*size+size;
if(AppleX<30)
AppleX=30;
if(AppleX>785)
AppleX=785;
if(AppleY<5)
AppleY=5;
if(AppleY>785)
AppleY=785;
}
}
public void DrawApple(Graphics g, int x, int y)
{
g.setColor(Color.green);
g.fillRect(x,y,appleSize,appleSize);
}
public void drawSnake(Graphics g)
{
g.fillRect(SnakeX,SnakeY, snakeSize, snakeSize);
}
}
Can anyone help me go through this..?