}catch(Exceptione){}}elseif(fangxiang==2)//向上{try{y-=10;snake[0].setLocation(x,y);if(x==weix&;&;y==weiy){shu++;weix=(int)(food[shu]*0.1)*60;weiy=(int)(food[shu]%10)*40;repaint();add(snake[shu]);snake[shu].setBounds(snake[shu-1].getBounds());}thread.sleep(100);}catch(Exceptione){}}elseif(fangxiang==3)//向下{try{y+=10;snake[0].setLocation(x,y);if(x==weix&;&;y==weiy)
{shu++;weix=(int)(food[shu]*0.1)*60;weiy=(int)(food[shu]%10)*40;repaint();add(snake[shu]);snake[shu].setBounds(snake[shu-1].getBounds());}thread.sleep(100);}catch(Exceptione){}}intnum1=shu;while(num1>1)//判断是否咬自己的尾巴{if(snake[num1].getBounds().x==snake[0].getBounds().x&;&;snake[num1].getBounds().y==snake[0].getBounds().y){t=false;result=false;repaint();}num1--;}if(x<0||x>=this.getWidth()||y<0||y>=this.getHeight())//判断是否撞墙{t=false;result=false;repaint();
}intnum=shu;while(num>0)//设置蛇节位置{snake[num].setBounds(snake[num-1].getBounds());num--;}if(shu==15)//如果蛇节数等于15则胜利{t=false;result=true;repaint();}}}publicvoidkeyPressed(KeyEvente)//按下键盘方向键{if(e.getKeyCode()==KeyEvent.VK_RIGHT)//右键{if(fangxiang!=1)//如果先前方向不为左fangxiang=0;}elseif(e.getKeyCode()==KeyEvent.VK_LEFT){if(fangxiang!=0)fangxiang=1;}elseif(e.getKeyCode()==KeyEvent.VK_UP){if(fangxiang!=3)fangxiang=2;}
elseif(e.getKeyCode()==KeyEvent.VK_DOWN){if(fangxiang!=2)fangxiang=3;}}publicvoidkeyTyped(KeyEvente){}publicvoidkeyReleased(KeyEvente){}publicvoidpaint(Graphicsg)//在面板上绘图{intx1=this.getWidth()-1;inty1=this.getHeight()-1;g.setColor(Color.red);g.fillOval(weix,weiy,10,10);//食物g.drawRect(0,0,x1,y1);//墙if(t==false&;&;result==false)g.drawString("GAMEOVER!",250,200);//输出游戏失败elseif(t==false&;&;result==true)g.drawString("YOUWIN!",250,200);//输出游戏成功}}classMyWindowextendsFrameimplementsActionListener//自定义窗口类{MyPanelmy;Buttonbtn;Panelpanel;MyWindow()
{super("GreedSnake");my=newMyPanel();btn=newButton("begin");panel=newPanel();btn.addActionListener(this);panel.add(newLabel("begin后请按Tab键选定蛇"));panel.add(btn);panel.add(newLabel("按上下左右键控制蛇行动"));add(panel,BorderLayout.NORTH);add(my,BorderLayout.CENTER);setBounds(100,100,610,500);setVisible(true);validate();addWindowListener(newWindowAdapter(){publicvoidwindowClosing(Window