Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 21 of 21

Thread: Help with the Snake in a Snake Game

  1. #1
    Junior Member
    Join Date
    Sep 2012
    Posts
    28
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Help with the Snake in a Snake Game

    Hello all, I am in the process of making my very own Snake game. It is going quite well. I have taken Computer Math in my junior year of high school and now during my senior year I am taking AP Computer Science. I was doing fine with the game until I came across this problem. I am, for some reason, having trouble getting a "snake" onto a panel that I have. The "food" works fine and appears randomly within the frame, but I created the snake in the panel using the paint component. The snake moves, but I do not know how to work on a collide method with the "snake" and the "food" if it is created in the paint. Thus I tried creating a SnakeBody class where the snake then could be moved around, but it would not show up on the panel, just the food showed up. Can someone help me get a SnakeBody class up and running or a way to work on a collide method between and object and a paint? That is all I need, I can do the rest. Here is my code, it is a tiny bit sloppy from all the trial and errors:
    Food Class:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
     
    public class Food
    {
    	double x = 0, y = 0;
    	private static final int FRAME = 700;
    	private double myX;   // x and y coordinates of center
          private double myY;
          private double myDiameter;
          private Color myColor; 
          private double myRadius;
     
    	public Food()
    	{
    		myX = 200;
          myY = 200;
          myDiameter = 25;
          myColor = Color.RED;
          myRadius = myDiameter/2;
    	}
    	public Food(double x, double y, double d, Color c)
    	{
    		myX = x;
          myY = y;
          myDiameter = d;
          myColor = c;
          myRadius = d/2; 
    	}
    	 public double getX() 
          { 
             return myX;
          }
           public double getY()      
          { 
             return myY;
          }
           public double getDiameter() 
          { 
             return myDiameter;
          }
           public Color getColor() 
          { 
             return myColor;
          }
           public double getRadius() 
          { 
             return myRadius;
          }
       // modifier methods
           public void setX(double x)
          {
             myX = x;
          } 
           public void setY(double y)
          {
             myY = y;
          } 
           public void setColor(Color c)
          {
             myColor = c;
          }
           public void setDiameter(double d)
          {
             myDiameter = d;
             myRadius = d/2;
          }
           public void setRadius(double r)
          {
             myRadius = r;
             myDiameter = 2*r;
          }
        //	 instance methods
           public void jump(int rightEdge, int bottomEdge)
          {
             // moves location to random (x, y) within the edges
             myX = (Math.random()* (rightEdge-myDiameter) + myRadius);
             myY = (Math.random()* (bottomEdge-myDiameter) + myRadius);
          }
     
    	public void draw(Graphics myBuffer) 
          {
             myBuffer.setColor(myColor);
             myBuffer.fillOval((int)(myX - myRadius), (int)(myY-myRadius), (int)myDiameter, (int)myDiameter);
          }
    }

    Snake Class:
    import javax.swing.*;
     
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.awt.image.BufferedImage;
     
    public class Snake extends JPanel implements ActionListener, KeyListener
    {
    	Timer t = new Timer(5, this);
    	double x =350, y = 350, velx = 0, vely = 0, x1 = 0, y1 = 0;
    	private static final int FRAME = 700;
    	private Food food;
    	private Snake snake;
    	private BufferedImage myImage;
       private Graphics myBuffer;
    	private static final Color BACKGROUND = new Color(204, 204, 204);
     
     
    	public Snake()
    	{
    		myImage =  new BufferedImage(FRAME, FRAME, BufferedImage.TYPE_INT_RGB);        myBuffer = myImage.getGraphics();
          myBuffer.setColor(BACKGROUND);
          myBuffer.fillRect(0, 0, FRAME,FRAME);
     
    		x = 350;
    		y = 350;
     
    		x1 = Math.random()*FRAME;
    		y1 = Math.random() *FRAME;
     
    		food = new Food(x1,y1,15,Color.BLUE);
    		t.start();
    		addKeyListener(this);
    		setFocusable(true);
    		setFocusTraversalKeysEnabled(false);
    	}
    	public void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
    		Graphics2D g2 = (Graphics2D) g;
    		g2.setColor(Color.RED);
    		g2.fill(new Rectangle2D.Double(x,y,15,15));
     
    		food.draw(g);
    		// Graphics2D g3 = (Graphics2D) g;
    // 		g3.setColor(Color.BLUE);
    // 		g3.fill(new Rectangle2D.Double(x1,y1,15,15));
     
    	}
    	public void actionPerformed(ActionEvent e)
    	{
    	//	myBuffer.setColor(BACKGROUND);
    	//	myBuffer.fillRect(0,0,FRAME,FRAME);
     
    		//food.draw(myBuffer);
    		repaint();
    		x += velx;
    		y += vely;
    	}
    	private void collide(Snake snake, Food food)
    	{
    		double d = distance(snake.getX(),snake.getY(),food.getX(),food.getY());
     
    		if(d <= snake.getWidth()/2 + food.getRadius())
    		{
    			food.jump(FRAME,FRAME);
    		}
     
    	}
     
    	//directions
    	public void up()
    	{
    		vely = -1.5;
    		velx = 0;
    	}
    	public void down()
    	{
    		vely = 1.5;
    		velx = 0;
    	}
    	public void left()
    	{
    		velx = -1.5;
    		vely = 0;
    	}
    	public void right()
    	{
    		velx = 1.5;
    		vely = 0;
    	}
    	//movement keys
    	public void keyPressed(KeyEvent e)
    	{
    		int code = e.getKeyCode();
    		if(code == KeyEvent.VK_LEFT)
    		{
    			if(velx == 1.5)
    			{
    				up();
    			}
    			else if(velx == -1.5)
    			{
    				down();
    			}
    			else if(vely == 1.5)
    			{
    				right();
    			}
    			else if(vely == -1.5)
    			{	
    				left();
    			}
    			else
    			{
    				left();
    			}
    		}
    		if(code == KeyEvent.VK_RIGHT)
    		{
    			if(velx == 1.5)
    			{
    				down();
    			}
    			else if(velx == -1.5)
    			{
    				up();
    			}
    			else if(vely == 1.5)
    			{
    				left();
    			}
    			else if(vely == -1.5)
    			{	
    				right();
    			}
    			else
    			{
    				right();
    			}
    		}
    	}
    	public void keyTyped(KeyEvent e){}
    	public void keyReleased(KeyEvent e){}
     
    	private double distance(double x1, double y1, double x2, double y2)
          {
             return Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2));
          }
     
     
    }

    Main Class:
    import javax.swing.JFrame;
     
    public class SnakeMain
    {
    	public static void main(String[] args)
    	{
    		JFrame f = new JFrame("Snake Game");
    		Snake s = new Snake();
    		f.add(s);
    		f.setVisible(true);
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		f.setSize(700,700);
    	}
    }


  2. #2
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,193
    Thanks
    49
    Thanked 2,172 Times in 2,145 Posts

    Default Re: Help with the Snake in a Snake Game

    When I execute the code I see a red shape and a blue shape at random locations.
    The red shapes moves when a keyboard arrow is pressed.

    Can you explain what the code is supposed to do?
    If you don't understand my answer, don't ignore it, ask a question.

  3. #3
    Junior Member
    Join Date
    Sep 2012
    Posts
    28
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Re: Help with the Snake in a Snake Game

    In essence, the game Snake is a game(obviously) where you control a snake(the red square) and you have to gather the food(the blue shape). When the snake runs into the food, it grows a body part and the food jumps to a new location. The goal of the game is to go as long as you can without running into your own tail, which gets longer every time you run into a food. I hope that cleared it up.

  4. #4
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,193
    Thanks
    49
    Thanked 2,172 Times in 2,145 Posts

    Default Re: Help with the Snake in a Snake Game

    To see what the code is doing, try debugging it by adding some println statements that print out the values of variables that control execution and the location of the shapes. The print out will show you what the computer sees and help you understand why the code is doing what it does.

    The red shape responds to two of the keyboard arrow keys.

    Pick one of the problems with the code and work on that.
    When it's fixed move to the next problem.
    If you don't understand my answer, don't ignore it, ask a question.

  5. #5
    Junior Member
    Join Date
    Sep 2012
    Posts
    28
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Re: Help with the Snake in a Snake Game

    I was using the debugger and I still cannot locate the problem, I created a SnakeBody class and it now appears along with the food, however I cannot control it. here is the code:
    SnakeBody class:
       import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
     
    import javax.swing.JPanel;
     
        public class SnakeBody implements ActionListener, KeyListener
       {
          private double myX;   // x and y coordinates of center
          private double myY;
          private double myDiameter;
          private Color myColor; 
          private double myRadius;
      		double x =350, y = 350, velx = 0, vely = 0, x1 = 0, y1 = 0;
     
         // constructors
           public SnakeBody()     //default constructor
          {
             myX = 200;
             myY = 200;
             myDiameter = 25;
             myColor = Color.RED;
             myRadius = myDiameter/2;
     
          }
           public SnakeBody(double x, double y, double d, Color c)
          {
             myX = x;
             myY = y;
             myDiameter = d;
             myColor = c;
             myRadius = d/2;
          }
        // accessor methods
           public int getX() 
          { 
             return (int) myX;
          }
           public int getY()      
          { 
             return (int) myY;
          }
           public double getDiameter() 
          { 
             return myDiameter;
          }
           public Color getColor() 
          { 
             return myColor;
          }
           public double getRadius() 
          { 
             return myRadius;
          }
       // modifier methods
           public void setX(double x)
          {
             myX = x;
          } 
           public void setY(double y)
          {
             myY = y;
          } 
           public void setColor(Color c)
          {
             myColor = c;
          }
           public void setDiameter(double d)
          {
             myDiameter = d;
             myRadius = d/2;
          }
           public void setRadius(double r)
          {
             myRadius = r;
             myDiameter = 2*r;
          }
        //	 instance methods
           public void draw(Graphics myBuffer) 
          {
             myBuffer.setColor(myColor);
             myBuffer.fillOval((int)(myX - myRadius), (int)(myY-myRadius), (int)myDiameter, (int)myDiameter);
          }
    	public void up()
    	{
    		vely = -1.5;
    		velx = 0;
    	}
    	public void down()
    	{
    		vely = 1.5;
    		velx = 0;
    	}
    	public void left()
    	{
    		velx = -1.5;
    		vely = 0;
    	}
    	public void right()
    	{
    		velx = 1.5;
    		vely = 0;
    	}
    	//movement keys
    	@Override
    	public void keyPressed(KeyEvent e)
    	{
    		int code = e.getKeyCode();
    		if(code == KeyEvent.VK_LEFT)
    		{
    			if(velx == 1.5)
    			{
    				up();
    			}
    			else if(velx == -1.5)
    			{
    				down();
    			}
    			else if(vely == 1.5)
    			{
    				right();
    			}
    			else if(vely == -1.5)
    			{	
    				left();
    			}
    			else
    			{
    				left();
    			}
    		}
    		if(code == KeyEvent.VK_RIGHT)
    		{
    			if(velx == 1.5)
    			{
    				down();
    			}
    			else if(velx == -1.5)
    			{
    				up();
    			}
    			else if(vely == 1.5)
    			{
    				left();
    			}
    			else if(vely == -1.5)
    			{	
    				right();
    			}
    			else
    			{
    				right();
    			}
    		}
    	}
    	@Override
    	public void keyTyped(KeyEvent e){}
    	@Override
    	public void keyReleased(KeyEvent e){}
    	@Override
    	public void actionPerformed(ActionEvent e)
    	{
    		// TODO Auto-generated method stub
    		x += velx;
    		y += vely;
    	}

    and here is the snake panel again now with changes:
    import javax.swing.*;
     
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.awt.image.BufferedImage;
     
    public class Snake extends JPanel implements ActionListener, KeyListener
    {
    	Timer t = new Timer(5, this);
    	double x =350, y = 350, velx = 0, vely = 0, x1 = 0, y1 = 0;
    	private static final int FRAME = 700;
    	private Food food;
    	private SnakeBody snake;
    	private BufferedImage myImage;
       private Graphics myBuffer;
    	private static final Color BACKGROUND = new Color(204, 204, 204);
     
     
    	public Snake()
    	{
    		myImage =  new BufferedImage(FRAME, FRAME, BufferedImage.TYPE_INT_RGB);        myBuffer = myImage.getGraphics();
          myBuffer.setColor(BACKGROUND);
          myBuffer.fillRect(0, 0, FRAME,FRAME);
     
    		x = 350;
    		y = 350;
     
    		x1 = Math.random()*FRAME;
    		y1 = Math.random() *FRAME;
     
    		food = new Food(x1,y1,15,Color.BLUE);
    		snake = new SnakeBody(x,y,15,Color.RED);
    		t.start();
    		addKeyListener(snake);
    		setFocusable(true);
    		setFocusTraversalKeysEnabled(false);
    	}
    	public void paintComponent(Graphics g)
    	{
    		//super.paintComponent(g);
    		//Graphics2D g2 = (Graphics2D) g;
    		//g2.setColor(Color.RED);
    		//g2.fill(new Rectangle2D.Double(x,y,15,15));
     
    		food.draw(g);
    		snake.draw(g);
    		collide(snake,food);
    		// Graphics2D g3 = (Graphics2D) g;
    // 		g3.setColor(Color.BLUE);
    // 		g3.fill(new Rectangle2D.Double(x1,y1,15,15));
     
    	}
    	public void actionPerformed(ActionEvent e)
    	{
    	//	myBuffer.setColor(BACKGROUND);
    	//	myBuffer.fillRect(0,0,FRAME,FRAME);
     
    		//food.draw(myBuffer);
    		repaint();
    		//x += velx;
    		//y += vely;
    	}
    	private void collide(SnakeBody snake, Food food)
    	{
    		double d = distance(snake.getX(),snake.getY(),food.getX(),food.getY());
     
    		if(d <= snake.getRadius() + food.getRadius())
    		{
    			food.jump(FRAME,FRAME);
    		}
     
    	}
     
    	//directions
    	public void up()
    	{
    		vely = -1.5;
    		velx = 0;
    	}
    	public void down()
    	{
    		vely = 1.5;
    		velx = 0;
    	}
    	public void left()
    	{
    		velx = -1.5;
    		vely = 0;
    	}
    	public void right()
    	{
    		velx = 1.5;
    		vely = 0;
    	}
    	//movement keys
    	public void keyPressed(KeyEvent e)
    	{
    		/*int code = e.getKeyCode();
    		if(code == KeyEvent.VK_LEFT)
    		{
    			if(velx == 1.5)
    			{
    				up();
    			}
    			else if(velx == -1.5)
    			{
    				down();
    			}
    			else if(vely == 1.5)
    			{
    				right();
    			}
    			else if(vely == -1.5)
    			{	
    				left();
    			}
    			else
    			{
    				left();
    			}
    		}
    		if(code == KeyEvent.VK_RIGHT)
    		{
    			if(velx == 1.5)
    			{
    				down();
    			}
    			else if(velx == -1.5)
    			{
    				up();
    			}
    			else if(vely == 1.5)
    			{
    				left();
    			}
    			else if(vely == -1.5)
    			{	
    				right();
    			}
    			else
    			{
    				right();
    			}
    		}*/
    	}
    	public void keyTyped(KeyEvent e){}
    	public void keyReleased(KeyEvent e){}
     
    	private double distance(double x1, double y1, double x2, double y2)
          {
             return Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2));
          }
     
     
    }

  6. #6
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,193
    Thanks
    49
    Thanked 2,172 Times in 2,145 Posts

    Default Re: Help with the Snake in a Snake Game

    I still cannot locate the problem
    I think there is more than one problem. Which one are you working on?
    If you don't understand my answer, don't ignore it, ask a question.

  7. #7
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,193
    Thanks
    49
    Thanked 2,172 Times in 2,145 Posts

    Default Re: Help with the Snake in a Snake Game

    The code you posted is incomplete. It's missing the end of the source.
    If you don't understand my answer, don't ignore it, ask a question.

  8. #8
    Junior Member
    Join Date
    Sep 2012
    Posts
    28
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Re: Help with the Snake in a Snake Game

    yea, one of the end brackets did not copy over for some reason in the SnakeBody class, and it is not really a problem, I just cannot control the SnakeBody object that is created, like I need to. The keylistener is in the wrong place or I am missing something.

  9. #9
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,193
    Thanks
    49
    Thanked 2,172 Times in 2,145 Posts

    Default Re: Help with the Snake in a Snake Game

    Where does the code change the location of the snake? How often is the draw() method called?
    Do the x & y values for the snake's location ever change?

    Why does the code call repaint() so many times when there has not been any changes to the locations of anything? The paintComponent() method only needs to be called when something has changed location.

    The keylistener is in the wrong place or I am missing something.
    See post#4 re debugging
    Last edited by Norm; September 26th, 2012 at 10:38 AM.
    If you don't understand my answer, don't ignore it, ask a question.

  10. The Following User Says Thank You to Norm For This Useful Post:

    godlynom (September 27th, 2012)

  11. #10
    Junior Member
    Join Date
    Sep 2012
    Posts
    28
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Re: Help with the Snake in a Snake Game

    I am having trouble with the debugging, it is not helping me. If i want to control the SnakeBody object, should i put the KeyListener in the SnakeBody class, or the Snake class?

  12. #11
    Super Moderator jps's Avatar
    Join Date
    Jul 2012
    Posts
    2,642
    My Mood
    Daring
    Thanks
    90
    Thanked 263 Times in 232 Posts

    Default Re: Help with the Snake in a Snake Game

    Quote Originally Posted by godlynom View Post
    If i want to control the SnakeBody object, should i put the KeyListener in the SnakeBody class, or the Snake class?
    Which class do you control the snake movement from?

  13. #12
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,193
    Thanks
    49
    Thanked 2,172 Times in 2,145 Posts

    Default Re: Help with the Snake in a Snake Game

    I am having trouble with the debugging,
    How are you doing the debugging?
    I use calls to println statements that print out the values of variables so I can see what the computer sees. If you know what you want the code to do, then when you see what it is doing from the print outs, you should be able to change the code so it will do what you want.

    Can you answer these questons:
    1)Where does the code change the location of the snake? Add printlns there to show when the location has been changed.
    2)How often is the draw() method called? Add a println there so you will know
    3)Do the x & y values for the snake's location ever change? See 1)


    Put println calls in the listeners so you will know if they are called.

    There is a lot of unused/dead code in the classes you posted. It should be commented out or removed to keep from confusing.
    Last edited by Norm; September 27th, 2012 at 06:56 AM.
    If you don't understand my answer, don't ignore it, ask a question.

  14. #13
    Junior Member
    Join Date
    Sep 2012
    Posts
    28
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Re: Help with the Snake in a Snake Game

    that was a dumb question, the KeyListener should be in the Snake class, still trying to figure out what is not working, it should be working, mep

  15. #14
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,193
    Thanks
    49
    Thanked 2,172 Times in 2,145 Posts

    Default Re: Help with the Snake in a Snake Game

    it should be working
    What prints out from the printlns you should be adding?

    What are your answers to the questions I asked in post #12?
    If you don't understand my answer, don't ignore it, ask a question.

  16. #15
    Junior Member
    Join Date
    Sep 2012
    Posts
    28
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Re: Help with the Snake in a Snake Game

    The timer printed out the values of the x and y coordinates, following the timer specified at the top, but it does not change the x or y coordinates

    I did :

    System.out.println(x + " " + y);

    and got an output of:

    350.0 350.0

    every time

  17. #16
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,193
    Thanks
    49
    Thanked 2,172 Times in 2,145 Posts

    Default Re: Help with the Snake in a Snake Game

    does not change the x or y coordinates
    Is that the answer for question 3) or is that just for the code in the timer?
    What about the other questions in post #12?
    If you don't understand my answer, don't ignore it, ask a question.

  18. #17
    Junior Member
    Join Date
    Sep 2012
    Posts
    28
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Re: Help with the Snake in a Snake Game

    well a fix to my response, now the coordinates of x and y change when keys are pressed, (questions 1 and 3) and the draw method is called also, but the shapes themselves are not drawing, it is not recognizing that i designated the x and y to belong to the snake, so after contemplating this, i changed it so that after the x and y are changed, I ALSO change the snake's x and y,and now I get somethign similiar to a tron game, where there is a continuous line after the object moves, but at least the object moves now

  19. #18
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,193
    Thanks
    49
    Thanked 2,172 Times in 2,145 Posts

    Default Re: Help with the Snake in a Snake Game

    You need to clear the graphics context before doing a new drawing by calling the super method that you have commented out.
      //super.paintComponent(g);
    If you don't understand my answer, don't ignore it, ask a question.

  20. #19
    Junior Member
    Join Date
    Sep 2012
    Posts
    28
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Re: Help with the Snake in a Snake Game

    ugh dang small problems....thank you so much for your time, have now got it working and everything, thanks so much

  21. #20
    Forum Squatter newbie's Avatar
    Join Date
    Nov 2010
    Location
    North Wales
    Posts
    661
    My Mood
    Stressed
    Thanks
    28
    Thanked 115 Times in 106 Posts
    Blog Entries
    1

    Default Re: Help with the Snake in a Snake Game

    Thanks for the update godlynom, could you kindly mark this thread as "Solved" now? (Thread tools > Mark this thread as solved).
    Please use [highlight=Java]//code goes here...[/highlight] tags when posting your code

  22. #21
    Junior Member
    Join Date
    Sep 2012
    Posts
    28
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default Re: Help with the Snake in a Snake Game

    yea sorry, was at soccer practice

Similar Threads

  1. [Snake]Help
    By Totel in forum Object Oriented Programming
    Replies: 23
    Last Post: September 26th, 2012, 09:17 AM
  2. [Help] Snake algorithm
    By 123099 in forum Algorithms & Recursion
    Replies: 1
    Last Post: May 25th, 2012, 12:14 PM
  3. Snake Game
    By Cuju in forum What's Wrong With My Code?
    Replies: 6
    Last Post: February 19th, 2011, 07:31 PM
  4. Snake Game In Java
    By Shyamz1 in forum What's Wrong With My Code?
    Replies: 2
    Last Post: February 10th, 2011, 09:00 AM
  5. Snake game in java
    By freaky in forum Object Oriented Programming
    Replies: 0
    Last Post: April 19th, 2010, 11:04 AM

Tags for this Thread