贪吃蛇Controller Java实现(二)
package cn.tcc.snake.Controller;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Random;
import cn.tcc.snake.antition.Food;
import cn.tcc.snake.antition.Ground;
import cn.tcc.snake.antition.Sanke;
import cn.tcc.snake.listener.SnakeListener;
import cn.tcc.snake.tcc.View.GamePanel;
//处理用户按键事件有两种方法;
//1.实现一个接口;
//2.继承一个类 //只用到它的一个方法;
import cn.tcc.snake.util.Global;
public class Controller extends KeyAdapter implements SnakeListener{
@Override
public void SnakeMoved(Sanke snake) {
// TODO Auto-generated method stub
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);
}
private Sanke snake;
private Food food;
private Ground ground;
private GamePanel gamePanel;
public Controller(Sanke snake, Food food, Ground ground, GamePanel gamePanel) {
super();
this.snake = snake;
this.food = food;
this.ground = ground;
this.gamePanel = gamePanel;
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
snake.changDirection(snake.UP);
break;
case KeyEvent.VK_DOWN:
snake.changDirection(snake.DOWN);
break;
case KeyEvent.VK_LEFT:
snake.changDirection(snake.LEFT);
break;
case KeyEvent.VK_RIGHT:
snake.changDirection(snake.RIGHT);
break;
default:
break;
}
}
public void newGame(){
food.newFood(ground.getpoint());
snake.start();
}
}
贪吃蛇Controller Java实现(二)的更多相关文章
- 贪吃蛇GamePanel Java实现(二)
package cn.tcc.snake.tcc.View; import java.awt.Color;import java.awt.Graphics; import javax.swing.JP ...
- 贪吃蛇snake Java实现(二)
package cn.tcc.snake.antition; import java.awt.Color;import java.awt.Graphics;import java.awt.Point; ...
- 贪吃蛇Food Java实现(二)
1.antition包Food类 package cn.tcc.snake.antition; import java.awt.Graphics;import java.awt.Point;publi ...
- 贪吃蛇Ground Java实现(二)
package cn.tcc.snake.antition; import java.awt.Color;import java.awt.Graphics; import java.awt.Point ...
- 贪吃蛇Global Java实现(二)
package cn.tcc.snake.util; public class Global {public static final int CELL_SIZE=20;public static f ...
- 贪吃蛇Listener Java实现(二)
package cn.tcc.snake.listener; import cn.tcc.snake.antition.Sanke;//接口//处理用户按键事件public interface Sna ...
- 贪吃蛇的java代码分析(二)
代码剖析 贪吃蛇是一款十分经典的小游戏,对初入coding的朋友来说,拿贪吃蛇这样一个案例来练手十分合适,并不高的难度和成功后的成就感都是学习所必须的.下面我将依照我当时的思路,来逐步分析实现的整个过 ...
- 贪吃蛇的java代码分析(一)
自我审视 最近自己学习java已经有了一个多月的时间,从一开始对变量常量的概念一无所知,到现在能勉强写几个小程序玩玩,已经有了长足的进步.今天没有去学习,学校里要进行毕业答辩和拍毕业照了,于是请了几天 ...
- 贪吃蛇的java代码分析(三)
代码剖析 在上一篇文章中,我们完成了贪吃蛇部分代码的构造.回头审视我们写的代码与思路,会发现我们遗漏了一个重要的地方,那就是:贪吃蛇的自身移动.想必大家都知道,贪吃蛇自身是会自己移动的,并且会跟随你的 ...
随机推荐
- git 找回本地误删的文件
1, 查看本地工作区变化 => git status 2, 重新设置文件状态 => git reset HEAD url ( url 是上一步第二个红框中的地址) 3, 检出文件 ...
- leetcode1022
class Solution(object): def __init__(self): self.li = list() self.sums = 0 def Trace(self,root): if ...
- 什么是ThreadLocal
当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本.ThreadLocal ...
- HBuilder开发APP自动登录时跳过"登录页面"
刚接触开发公司APP项目,用HBuilder开发工具. manifest.json中的入口页面就是"登录页面",现在获取到自动登录状态是true,但是真机联调时"登录页面 ...
- docker之手动构建新的镜像
转自:https://www.cnblogs.com/jsonhc/p/7766561.html 查看本地现有镜像: [root@docker ~]# docker images REPOSITORY ...
- DATASNAP远程方法返回TSTREAM正解(转咏南兄)
DATASNAP远程方法返回TSTREAM正解 DATASNAP远程方法返回TSTREAM,如果数据大小超过32K是会报错的.许多DELPHIER栽在这个上头,甚至开始怀疑TSTREAM返回数据的可行 ...
- git使用 从远程库克隆和更新到本地
从远程库克隆到本地. git clone git@github.com:kingbook/Framework.git 或 git clone http://github.com/kingBook/Fr ...
- dependencies与dependencyManagement的区别
1.DepencyManagement应用场景 当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建.文档.报告.依赖.scms.发布.分发的方法.可以方便的编译代码.进行 ...
- 【原创】利用Office宏实现powershell payload远控
本文将演示使用Veil-Evasion生成远控所需要的payload以及监听器,然后使用MacroShop生成payload 相关的VBA代码,最后演示将VBA代码写入.doc文本文档的宏中. 环境: ...
- Hibernate 再接触 基础配置 续
<property name="show_sql">true</property> 这句话是意思显示sql语句 <property name=&quo ...