[size=18px]这是一个贪吃蛇的代码:有几个地方我不太懂的,想请教一下大家
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class Snake extends JFrame /*implements KeyListener*/{
private int stat=1,direction=0,bodylen=2,headx=3,heady=4,
tailx=1,taily=4,tail,foodx,foody,food;//初始化定义变量
public final int EAST=1,WEST=2,SOUTH=3,NORTH=4;//方向常量
int [][] fillblock=new int [50][50];//定义蛇身所占位置
    public Snake() {//构造函数
        super("贪吃蛇");
    setSize(510,510);
    setVisible(true);//设定窗口属性
    //addKeyListener(this);//添加监听
    this.addKeyListener(new KeyAdapter(){
     public void keyPressed(KeyEvent e) {//按键响应
    int keyCode=e.getKeyCode();
        if(stat==1) switch(keyCode){
            case KeyEvent.VK_UP:if(direction!=SOUTH) direction=NORTH;break;
            case KeyEvent.VK_DOWN:if(direction!=NORTH)direction=SOUTH;break;
            case KeyEvent.VK_LEFT:if(direction!=EAST)direction=WEST;break;
            case KeyEvent.VK_RIGHT:if (direction!=WEST)direction=EAST;break;
        } 
    }
  });
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    for(int i=1;i<=3;i++) fillblock[i][4]=EAST;//初始化蛇身属性
    direction=EAST;//方向初始化的设置
    FoodLocate(); //定位食物
        while (stat==1){
       fillblock[headx][heady]=direction;
       switch(direction){
       case 1:headx++;break;
       case 2:headx--;break;
       case 3:heady++;break;
       case 4:heady--;break;
       }//蛇头的前进
       if(heady>19||headx>19||tailx>19||taily>19||heady<0||headx<0||tailx<0||taily<0||fillblock[headx][heady]!=0){   
       stat=0;
       break;
       } //判断游戏是否结束 
       try{
           Thread.sleep(150); }
         catch(InterruptedException e){}//延迟
          fillblock[headx][heady]=direction;
          if(headx==foodx&&heady==foody){//吃到食物
          FoodLocate();
          food=2;
       try{
           Thread.sleep(100); }
         catch(InterruptedException e){}//延迟
       }
       if(food!=0)food--;
       else{tail=fillblock[tailx][taily];
           fillblock[tailx][taily]=0;//蛇尾的消除
            switch(tail){
              case 1:tailx++;break;
              case 2:tailx--;break;
              case 3:taily++;break;
              case 4:taily--;break;
             }//蛇尾的前进
           }         
       repaint();     
       }
       if(stat==0){
                JOptionPane.showMessageDialog(null,"GAME     OVER","Game      Over",JOptionPane.INFORMATION_MESSAGE);
              }
 } 
        public void FoodLocate(){//定位食物坐标
        do{
           Random r=new Random();
           foodx=r.nextInt(20);
           foody=r.nextInt(20);
        }while (fillblock[foodx][foody]!=0);
    }
    public void paint(Graphics g){//画图
        super.paint(g);
    g.setColor(Color.BLUE);
    for(int i=0;i<20;i++)
       for(int j=0;j<20;j++)
        if (fillblock[i][j]!=0)
         g.fillRect(25*i+5,25*j+5,24,24);
    g.setColor(Color.RED);
    g.fillRect(foodx*25+5,foody*25+5,24,24);   
    }
public static void main(String[] args) {//主程序
        Snake application=new Snake();
        }
}tail=fillblock[tailx][taily];
           fillblock[tailx][taily]=0;  还有bodylen=2这有什么作用,怎样理解呢?
[/size]