| 
         // 把贪吃蛇头部增加一格 
        head = (WormLink)worm.lastElement(); 
        head.increaseLength(); 
        // 如果没有吃到食物则尾部减少一格 
        if (!hasEaten) { 
           WormLink tail; 
           tail = (WormLink)worm.firstElement(); 
           int tailX = tail.getX(); 
           int tailY = tail.getY(); 
           // 如果尾部块长度为0就删除 
           tail.decreaseLength(); 
           if (tail.getLength() == 0) { 
               worm.removeElement(tail);        } 
           // 尾部减少一格 
           g.setColor(WormPit.ERASE_COLOUR); 
           drawLink(g, tailX, tailY, tailX, tailY, 1); 
           } else {          
           // 如果吃到食物就不删除尾部 
           hasEaten = false;        } 
        needUpdate = false; 
        // 确认是否在边界中 
        if (!WormPit.isInBounds(head.getEndX(), head.getEndY())) { 
           // 如果不在,就死了 
           throw new WormException("over the edge");         } 
        headX = (byte)head.getEndX(); 
        headY = (byte)head.getEndY(); 
        //贪吃蛇的头部增加一格 
        g.setColor(WormPit.DRAW_COLOUR); 
        drawLink(g, headX, headY, headX, headY, 1); 
        // 判断是否吃到自己 
        for (int i = 0; i < worm.size()-1; i++) { 
        sl = (WormLink)worm.elementAt(i); 
        if (sl.contains(headX, headY)) { 
            throw new WormException("you ate yourself");     }       }  |