Game

贪吃蛇系列之十一——总结

北城以北 提交于 2021-01-23 23:10:57
好了,在开始我们的总结之前,我们先来把上一个项目中的那个BUG修复了。修复的方法呢也很简单,我们在Snake类中添加一个方法,代码如下: /** * 判断蛇是否吃到了自己的身体 * @return 如果蛇吃到了自己的身体则返回true,否则返回false */ public boolean isEatBody(){ Body head = snakeBody.getFirst(); for(int i = 1; i < snakeBody.size(); i++){ Body body = snakeBody.get(i); if(head.x == body.x && head.y == body.y){ return true; } } return false; } 有了这个方法之后,我们在蛇的move()方法中添加进对这个状况的判断,如下: //判断蛇是否吃到了石头或者是自己的身体 if(isEatStone() || isEatBody()){ die(); } 那么至此,我们的游戏大体上就算完成了,最后呢,我修改了Snake.Body类中的drawMe的实现,使得我们的Snake有了一个红色的头,这个呢我就不贴代码了,大家看源代码吧,下面还是给一张我们最后完成的效果图: 这个项目呢,第一阶段呢我们就到这里结束了,上图呢就是最后一个项目运行后的截图了,呵呵,是不是很有爱呢

贪吃蛇系列之四——蛇对象的创建

随声附和 提交于 2019-12-27 20:03:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在上一个项目中,我们已经在窗口上绘制出了一个蓝色的方块,在这个项目中,我们将开始对蛇开始进行编码,所以我们先创建一个类,叫做Snake,放在com.gulang.snake.entity的包下面。在看代码之前,我们先来做一些铺垫。首先我们分析一下蛇的构造,蛇的身体是一节一节的,每一节都是相同的结构,因此,我们需要将蛇的身体抽象出来,成一个类。这里呢我们采用了内部类的方式来实现。即下面的这部分代码: /** * 蛇的一节身体 * @author jiladeyouxiang@qq.com * */ class Body{ /** 蛇的身体的绘制的横坐标 */ private int x; /** 蛇的身体的绘制的纵坐标 */ private int y; /** * 构造一个蛇的身体节点 * @param x 绘制的横坐标 * @param y 绘制的纵坐标 */ public Body(int x, int y){ this.x = x; this.y = y; } /** * 绘制一个蛇身体的一个节点 * @param g */ public void drawMe(Graphics g){ //获得画笔原来的颜色 Color c = g.getColor(); //给画笔设置新的颜色 g.setColor

贪吃蛇系列之八——我是吃货我自豪

旧街凉风 提交于 2019-12-27 20:03:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在上一个项目中,我们已经把食物绘制在我们的游戏界面上了,那么在这次的项目中,我们就来把这个食物吃掉。好了,还是先来看代码: /** * 判断蛇有没有吃到食物的方法 * @param food 食物对象 * @return 如果蛇吃到食物则返回true,否则返回false */ public boolean isEatFood(){ Body head = snakeBody.getFirst(); Food food = gameView.getFood(); if(head.x == food.getX() && head.y == food.getY()){ return true; } return false; } /** * 蛇吃掉食物的方法 */ public void eatFood(){ //让原来的食物消失,并且产生一个新的食物 gameView.setFood(new Food(this)); } 我们为了完成蛇吃掉食物的逻辑,于是就在Snake类中添加了两个方法,就是上面的两个方法。isEatFood呢我们是用来判断蛇是不是吃到了食物的方法,我想其中的逻辑大家看一眼应该就能懂。eatFood方法呢我们是来处理蛇碰到了食物之后真正把食物吃下去的逻辑。在这里呢,大家发现了,我引用了一个新的对象

cocos2d-js 项目编译

Deadly 提交于 2019-11-30 06:15:52
cocos2d-js 项目将cocos2d-x的c++接口绑定到javascript, 从而支持脚本化;现在的3.0版本和之前的2.x版本 项目的创建和编译方式有所不同,3.0版本提供了cocos命令行工具(一个用Python写的脚本),该脚本提供创建新项目、编译、运行的功能;和2.x版本提供的方式不同,3.0版本将多个功能全部集成到了cocos工具中了 3.0版本下载完后,会有一个安装的过程,其实就是运行一个Python脚本,在环境变量中加入了cocos命令的路径而已。C++版本确实只是加入了cocos工具的路径,但如果是安装的js版本,运营setup.py脚本是会检测当前系统中的ant命令,并将ant的路径加入到PATH中; 有点跑题了:关于js项目工程的编译,可以在终端下切换到项目目录下,运行:cocos compile -p android 命令,该命令执行一系列动作,直到apk打包;当然,要想成功运行cocos compile -p android 命令,是有条件的,不外乎定义android sdk , ndk ,ant的系统路经; 这里要提下的是,android sdk 目录下的platform-tools目录和tools目录最好也要加入到系统PATH路径,以方便调用相关工具 哦,对了,写这个记录的原因是,虽然用3.0版本和JS绑定有一个多月了

100行JS实现HTML5的3D贪吃蛇游戏

雨燕双飞 提交于 2019-11-27 11:53:38
js1k.com 收集了小于1k的javascript小例子,里面有很多很炫很酷的游戏和特效, 今年规则 又增加了新花样,传统的classic类型基础上又增加了WebGL类型,以及允许增加到2K的++类型,多次想尝试提交个小游戏但总无法写出让自己满意还能控制在这么小的字节范围。 自己写不出来,站在巨人肩膀总是有机会吧,想起 《基于HTML5的电信网管3D机房监控应用》 这篇提到的 threejs , babylonjs 和 Hightopo 的几种基于WebGL的3D引擎,突然想挑战下自己实现个100行JS的3D小游戏,折腾了一番最终采用 Hightopo 搞了个3D贪吃蛇游戏,算了算JS代码还只有90来行,终于满足了自己的小小心愿写完这篇可以满意去睡觉了。 以下先上一段最终3D游戏在平板上的运行交互 视频效果 : http://v.youku.com/v_show/id_XNjgxMzIxOTcy.html 传统2D的贪吃蛇游戏一般通过方向键盘控制蛇的前进方向,我一开始就想定位可运行在平板上的Touch交互,所以不考虑键盘的操作交互方式,采用完全用点击的方式来控制,通过 HT 的g3d.getHitPosition(e)函数我能得到鼠标点击所在的平面位置,这样与蛇头的位置做比较就能判断出新的前进方向,如果点击位置超出了贪吃蛇的运行矩阵范围我就不做处理,这时候留给 HT