那些年,我还在学习java (二)

2014-11-24 07:23:35 · 作者: · 浏览: 1
nakeFoodX

&& 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 snakeBody = new ArrayList();

/************** 方法区 ******************/

/**

* 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