makeDou();
}
if(this.isEatSelf() || this.isOverBounds()){System.out.println("hello world 2");
JOptionPane.showMessageDialog(null, "你玩完了");
System.exit(0);
}
}
}
/*造豆和造蛇、显示蛇、显示豆子函数*/
public void makeDou(){
douX=(int)((int)(Math.random()*10));
douY=(int)((int)(Math.random()*8));
if(douX>15)douX=douX-4;
if(douY>14)douY=douY-4;
douX=douX*30;douY=douY*30;
for(Point x:snake){
int tempX=x.x;
int tempY=x.y;
if(tempX==douX&&tempY==douY){
makeDou();
}
}
}
public void displaySnake(Graphics g){
for(Point pos:snake){
if(pos==snake.get(0)){
g.setColor(Color.green);
g.fillRect(pos.x, pos.y, 30, 30);
}
else
g.setColor(Color.red);
g.fillRect(pos.x, pos.y, 30, 30);
}
}
public void displayDou(Graphics g){
g.setColor(gamePane.getBackground());
g.drawRect(tempDouX, tempDouY, 30, 30);
g.setColor(Color.blue);
g.fillRect(douX, douY, 30, 30);
tempDouX=douX;tempDouY=douY;
}
//eat the bean ,return true if eat successfully,otherwise return false;
public boolean isEatDou(){
if(douX==snake.get(0).x && douY==snake.get(0).y){
return true;
}
return false;
}
public boolean isEatSelf(){
int x=snake.get(0).x , y =snake.get(0).y;
for(int i=snake.size()-1;i>1;i--){
if(x==snake.get(i).x && y==snake.get(i).y)
return true;
}
return false;
}
public boolean isOverBounds(){
int x=snake.get(0).x,y=snake.get(0).y;
if(x<0 || x>480 || y<0 ||y>450)
return true;
return false;
}
public void moveSnake(){
for(int i =snake.size()-1;i>0;i--){
snake.get(i).x=snake.get(i-1).x;
snake.get(i).y=snake.get(i-1).y;
}
int tx=snake.get(0).x , ty=snake.get(0).y;
switch(direct){
case 1: if(snake.get(1).y
break;
case 2: if(tx-snake.get(1).x==0){
tx=tx-30;
}
else{
ty=ty+30;
}
break;
case 3: if(tx-snake.get(1).x==0){
tx=tx+30;
}
else{
ty=ty-30;
}
break;
case 4: if(snake.get(1).y>snake.get(0).y){System.out.println("不能往下");}
else ty += 30;
case 5:
break;
}
snake.remove(snake.size()-1);
snake.add(0, new Point(tx,ty));
}
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
signal = true;
switch(e.getKeyCode()){
case KeyEvent.VK_UP: direct=1;
break;
case KeyEvent.VK_LEFT: direct =2;
break;
case KeyEvent.VK_RIGHT: direct =3;
break;
case KeyEvent.VK_DOWN: direct =4;
break;
default :direct=5;
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public