Source :
package Snake_engin;import javax.swing.JOptionPane;import m_snake.MainPanel.snakeBody.Food;import m_snake.MainPanel.snakeBody.snake;/** * * @author SQLStudent */public class engin {         /** Creates a new instance of engin */    public engin()     {        }      public   void Move_mySnake(int newDirection,boolean food_eaten)    {                       if(!Game_Over)        {                 switch(newDirection)        {            case 1:    if(direction!=3)                            {                       my_snake.put_Head_postion(0,-step_to_move);                      direction=1;                            }                    else move_as_last(direction);                       break;//UP                                    case 2:   if(direction!=4)                          {                   my_snake.put_Head_postion(step_to_move,0);                     direction=2;                             }                        else move_as_last(direction);                    break;//RIGHT            case 3:                          if(direction!=1)                      {                   my_snake.put_Head_postion(0,step_to_move);                      direction=3;                      }                      else move_as_last(direction);                     break;//DOWN                                               case 4:                          if(direction!=2)                       {                  my_snake.put_Head_postion(-step_to_move,0);                        direction=4;                        }                      else move_as_last(direction);                                            break;//LEFT        }                               if(food_eaten)            {               my_snake.Increase_lenght();// IF the Snake ate new Food            }        my_snake.Move_snake();                       if((my_snake.getHeadX()==snakeFood.get_int_X())&&(my_snake.getHeadY()== snakeFood.get_int_Y()))        {            snakeFood.getFood();            Score+=20;                         my_snake.Increase_lenght();            while(check_food_place())            {               snakeFood.getFood();                }                     }                 Game_Over=my_snake.check_game_over();                          }        if(Game_Over)        {            JOptionPane.showConfirmDialog(null,"Score = "+Integer.toString(Score),"Your Score",JOptionPane.DEFAULT_OPTION);        //    Thread.yield();        }                               }    public void move_as_last(int diirec)    {         switch(direction)        {            case 1:                                                       my_snake.put_Head_postion(0,-step_to_move);                                                                       break;//UP                                    case 2:                       my_snake.put_Head_postion(step_to_move,0);                                         break;//RIGHT            case 3:                                               my_snake.put_Head_postion(0,step_to_move);                                              break;//DOWN                                               case 4:                                           my_snake.put_Head_postion(-step_to_move,0);                                                                    break;//LEFT        }                    }    public int[] return_Snake_postionsX()    {        return my_snake.get_All_postionsX();    }    public int[] return_Snake_postionsY()    {        return my_snake.get_All_postionsY();    }        public int get_Oval_size()    {        return my_snake.getOval_Size();    }         public int get_my_snake_lenght()    {        return my_snake.get_lenght();    }    public void set_step_length()    {        step_to_move=5;    }    public int get_Food_X()    {        return (int)snakeFood.getX();    }    public int get_Food_Y()    {        return (int)snakeFood.getY();    }    public boolean check_food_place()    {       int xfood=(int)snakeFood.getX();       int yfood=(int)snakeFood.getY();       if(xfood>260||yfood>260)return true;       else        return my_snake.compare_with_foodPostion(xfood,yfood);            }          public boolean get_Game_over()    {        return Game_Over;    }         private int direction=2;   private boolean Game_Over;   private boolean Moving_vertical=false;   private snake my_snake=new snake();   private final Food snakeFood=new Food();   private int step_to_move=20;       private int Score;    }