&& this.snakeHeadY == snakeStart.snakeBody.snakeBody.get(i).snakeFoodY
&& snakeStart.snakeBody.snakeBody.get(i).isSnakeBody) {
snakeDead = true;
}
}
}
/**
* 自动移动蛇头,按方向
*/
public void autoMoveSnakeHead() {
if (directionUp && !directionDown && !directionLeft && !directionRight) {
moveSnakeHead(0, -20);
}
if (!directionUp && directionDown && !directionLeft && !directionRight) {
moveSnakeHead(0, 20);
}
if (!directionUp && !directionDown && directionLeft && !directionRight) {
moveSnakeHead(-20, 0);
}
if (!directionUp && !directionDown && !directionLeft && directionRight) {
moveSnakeHead(20, 0);
}
snakeStart.snakeBody.moveSnakeBody(this);
}
/**
* 按下键盘的监听函数,移动蛇头
*/
public void keyPressEvent(KeyEvent event) {
int code = event.getKeyCode();
directionUp = directionDown = directionLeft = directionRight = false;
switch (code) {
case KeyEvent.VK_LEFT:
moveSnakeHead(-20, 0);
directionLeft = true;
break;
case KeyEvent.VK_RIGHT:
moveSnakeHead(20, 0);
directionRight = true;
break;
case KeyEvent.VK_UP:
moveSnakeHead(0, -20);
directionUp = true;
break;
case KeyEvent.VK_DOWN:
moveSnakeHead(0, 20);
directionDown = true;
break;
case KeyEvent.VK_SPACE:
break;
default:
moveSnakeHead(0, 0);
break;
}
}
/**
* 得到食物的矩形
*/
public Rectangle getRectangle() {
return new Rectangle(snakeHeadX, snakeHeadY, snakeBodyWidthHeight,
snakeBodyWidthHeight);
}
}
2、蛇身类SnakeBody
public class SnakeBody {
/************ 属性区 **************/
/**
* 蛇身的集合对象
*/
public List
/************** 方法区 ******************/
/**
* constructor
*/
public SnakeBody(SnakeHead snakeHead) {
SnakeFood foodOne = new SnakeFood(snakeHead.snakeHeadX,
snakeHead.snakeHeadY, Color.red);
foodOne.isSnakeBody=true;
snakeBody.add(foodOne);
SnakeFood foodTwo = new SnakeFood(snakeHead.snakeHeadX,
snakeHead.snakeHeadY - 20, Color.green);
foodTwo.isSnakeBody=true;
snakeBody.add(foodTwo);
}
/**
* 画出蛇身
*
* @param g
* 画笔,向控制台画出蛇身
*/
public void drawSnakeBody(Graphics g) {
for (int i = 0; i < snakeBody.size(); i++) {
snakeBody.get(i).drawSnakeBody(g);
}
}
/**
* 蛇身的移动
*/
public void moveSnakeBody(SnakeHead snakeHead) {
for (int i = snakeBody.size() - 1; i > 0; i--) {
snakeBody.get(i).snakeFoodX = snakeBody.get(i - 1).snakeFoodX;
snakeBody.get(i).snakeFoodY = snakeBody.get(i - 1).snakeFoodY;
}
snakeBody.get(0).snakeFoodX = snakeHead.snakeHeadX;
snakeBody.get(0).snakeFoodY = snakeHead.snakeHeadY;
}
}
3、食物类
View Code
public class SnakeFood {
/************ 属性区 **************/
/**
* 食物的的坐标
*/
public int snakeFoodX;
public int snakeFo