?? controller.java
字號:
package com.nilaiya.snake.controller;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import com.nilaiya.snake.entities.Food;
import com.nilaiya.snake.entities.Ground;
import com.nilaiya.snake.entities.Snake;
import com.nilaiya.snake.listener.SnakeListener;
import com.nilaiya.snake.view.GamePanel;
/**
* @author yellow
*
*/
public class Controller extends KeyAdapter implements SnakeListener {
// 定義對象
private Snake snake;
private Food food;
private Ground ground;
private GamePanel gamePanel;
/**
* 構(gòu)造器
*
* @param snake
* @param food
* @param ground
* @param gamePanel
*/
public Controller(Snake snake, Food food, Ground ground, GamePanel gamePanel) {
super();
this.snake = snake;
this.food = food;
this.ground = ground;
this.gamePanel = gamePanel;
}
/**
* 開始新游戲的方法
*
*/
public void newGame() {
snake.start();
food.newFood(ground.getPoint());
}
/**
* 顯示蛇、石頭、食物
*/
public void snakeMoved(Snake snake) {
// 如果吃到了食物
if (food.isSnakeEatFood(snake)) {
snake.eatFood();
food.newFood(ground.getPoint());
}
// 如果吃到了石頭
if (ground.isSnakeEatRock(snake)) {
snake.die();// 游戲就結(jié)束
}
// 如果吃到自己的身體
if (snake.isEatBody()) {
snake.die();// 游戲就結(jié)束
}
gamePanel.display(snake, food, ground);
}
/**
* 覆蓋KeyAdapter的keyPressed()方法
*/
@Override
public void keyPressed(KeyEvent e) {
// 改變蛇的方向
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
snake.changeDirection(Snake.UP);
break;
case KeyEvent.VK_DOWN:
snake.changeDirection(Snake.DOWN);
break;
case KeyEvent.VK_LEFT:
snake.changeDirection(Snake.LEFT);
break;
case KeyEvent.VK_RIGHT:
snake.changeDirection(Snake.RIGHT);
break;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -