📄 control.java
字号:
package cn.edu.usc.snake.controller;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Random;
import cn.edu.usc.snake.entities.Food;
import cn.edu.usc.snake.entities.Ground;
import cn.edu.usc.snake.entities.Snake;
import cn.edu.usc.snake.listener.SnakeListener;
import cn.edu.usc.snake.util.ConstValue;
import cn.edu.usc.snake.util.Direction;
import cn.edu.usc.snake.view.GamePanel;
public class Control extends KeyAdapter implements SnakeListener{
private Snake snake;
private Food food;
private Ground ground;
private GamePanel gamePanel;
private boolean over = false;
public Control(Snake snake, Food food, Ground ground, GamePanel gamePanel) {
super();
this.snake = snake;
this.food = food;
this.ground = ground;
this.gamePanel = gamePanel;
snake.addSnakeListener(this);
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
snake.changeDirection(Direction.U);
break;
case KeyEvent.VK_RIGHT:
snake.changeDirection(Direction.R);
break;
case KeyEvent.VK_DOWN:
snake.changeDirection(Direction.D);
break;
case KeyEvent.VK_LEFT:
snake.changeDirection(Direction.L);
break;
case KeyEvent.VK_F2:
this.over = false;
snake.initSnake();
newGame();
break;
}
}
@Override
public void snakeMove(Snake snake) {
if(food.isSnakeEatFood(snake)) {
snake.eatFood();
food.newFood(this.getPoint());
}
if(ground.isSnakeEatRock(snake)) {
snake.die();
}
if(snake.isEatBody()) {
snake.die();
}
if(!snake.isAlive()) {
this.gameOver();
}
gamePanel.display(snake, food, ground);
}
public Point getPoint() {
Random random = new Random();
int x = 0, y = 0;
Point newPoint = null;
do {
x = random.nextInt(ConstValue.PANEL_WIDTH);
y = random.nextInt(ConstValue.PANEL_HEIGHT);
newPoint = new Point(x, y);
}while(snake.isInSnake(newPoint) || ground.isRock(newPoint));
return newPoint;
}
/**
* 开始新游戏
*/
public void newGame() {
if(!over) {
snake.start();
food.newFood(this.getPoint());
}
}
public void gameOver() {
this.over = true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -