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实现(二)的更多相关文章

  1. 贪吃蛇GamePanel Java实现(二)

    package cn.tcc.snake.tcc.View; import java.awt.Color;import java.awt.Graphics; import javax.swing.JP ...

  2. 贪吃蛇snake Java实现(二)

    package cn.tcc.snake.antition; import java.awt.Color;import java.awt.Graphics;import java.awt.Point; ...

  3. 贪吃蛇Food Java实现(二)

    1.antition包Food类 package cn.tcc.snake.antition; import java.awt.Graphics;import java.awt.Point;publi ...

  4. 贪吃蛇Ground Java实现(二)

    package cn.tcc.snake.antition; import java.awt.Color;import java.awt.Graphics; import java.awt.Point ...

  5. 贪吃蛇Global Java实现(二)

    package cn.tcc.snake.util; public class Global {public static final int CELL_SIZE=20;public static f ...

  6. 贪吃蛇Listener Java实现(二)

    package cn.tcc.snake.listener; import cn.tcc.snake.antition.Sanke;//接口//处理用户按键事件public interface Sna ...

  7. 贪吃蛇的java代码分析(二)

    代码剖析 贪吃蛇是一款十分经典的小游戏,对初入coding的朋友来说,拿贪吃蛇这样一个案例来练手十分合适,并不高的难度和成功后的成就感都是学习所必须的.下面我将依照我当时的思路,来逐步分析实现的整个过 ...

  8. 贪吃蛇的java代码分析(一)

    自我审视 最近自己学习java已经有了一个多月的时间,从一开始对变量常量的概念一无所知,到现在能勉强写几个小程序玩玩,已经有了长足的进步.今天没有去学习,学校里要进行毕业答辩和拍毕业照了,于是请了几天 ...

  9. 贪吃蛇的java代码分析(三)

    代码剖析 在上一篇文章中,我们完成了贪吃蛇部分代码的构造.回头审视我们写的代码与思路,会发现我们遗漏了一个重要的地方,那就是:贪吃蛇的自身移动.想必大家都知道,贪吃蛇自身是会自己移动的,并且会跟随你的 ...

随机推荐

  1. django 之Paginator

    Django自身提供了一些类来实现管理分页,数据被分在不同的页面中,并带有“上一页/下一页”标签.这个类叫做Pagination,其定义位于 django/core/paginator.py 中. p ...

  2. idea插件JRebel 解决热编译,开启高级debug之路

    idea自身的debug模式遇到 类属性增加什么的只能重启,不能做到更深层次的热部署...至于为啥不能,---这是java自身类加载机制导致的?这个问题可以以后深究(貌似很深奥)....本文的重点是介 ...

  3. sourcetree 跳过注册

    https://www.cnblogs.com/lucio110/p/8192792.html

  4. SQL Server 中系统视图sysobjects中type字段的说明

    对象类型: AF = 聚合函数 (CLR) C = CHECK 约束 D = DEFAULT(约束或独立) F = FOREIGN KEY 约束 FN = SQL 标量函数 FS = 程序集 (CLR ...

  5. APP发行渠道

    1,安卓APP发行:google play,原名android store 2,IOS APP: apple store 3,国内各大平台,应用宝,360,小米,华为 ...

  6. Grafana+Zabbix使用配置

    官方提供的网友分享的图形面板,可以自行选择使用下载---  https://grafana.com/dashboards   Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编 ...

  7. debian下redis2.8.17安装过程

    下载redis源码包,我下载的是redis2.8.17 解压缩该源码包 tar zxf redis-2.8.17.tar.gz 进入解压缩后的目录 cd redis-2.8.17/ 添加redis用户 ...

  8. angularjs 请求数据转换为Form Data传参

    在angularjs中配置好服务,有时传参会导致后台借不到值或者后台直接报错: 这就与后台框架有关,如果后台是以public ModelAndView接收接口传过来的参数,这种情况,前台传参的形式比较 ...

  9. delphi 域名转ip并判断ip是否可以联通

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  10. 10.mysql-触发器.md

    目录 定义 语法 定义 当操作了某张表时,希望同时触发一些动作/行为,可以使用触发器完成 语法 -- 需求: 当向员工表插入一条记录时,希望mysql自动同时往日志表插入数据 -- 创建触发器(添加) ...