⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controller.java

📁 java编写的贪吃蛇的源代码,myeclipse平台实现
💻 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;

	/**
	 * 构造器
	 * 
	 * @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();// 游戏就结束
		}
		// 如果吃到自己的身体
		if (snake.isEatBody()) {
			snake.die();// 游戏就结束
		}

		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;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -