文档章节

贪吃蛇游戏Java实现

叫我哀木涕
 叫我哀木涕
发布于 2017/09/11 12:46
字数 512
阅读 88
收藏 1

简介:

    周五在天码营看到一个java-snake的学习任务,地址https://course.tianmaying.com/java-snake。看了挺有意思,然后就花了几个小时按照其描述给实现了,因很多地方都是伪码,或者中文描述。所以 写起来也挺有意思,会让你自己去考虑细节代码实现。

 

项目:

    相信大家好多人都玩过这个游戏,在看到怎么实现的逻辑,自己在之前还从未去考虑。写完了小游戏,把几个游戏的小细节给大家描述下。蛇的身体结构是个LinkedList<Node>,其中Node是棋盘Grid上面的点,非像素点;

    1,蛇的移动:首先根据移动方向和Snake的head生成一个新的Node,然后把node添加到头部,最后把尾部给删除。就完成了snake的一次移动;

    2,吃到食物:上一步生成的新头部节点和当前棋盘上的一个food节点比较,如果是同一个节点。则再把刚才干掉的尾部给添加上去即可;

    3,边界检查:碰到边界,也就是Direction方向上的0或者width-1。如果当前head是这个,next时候就失败了。游戏game over;还有一种是碰撞自身,其实拿到新生成的node遍历对比Snake的body即可。也可以维护一个表格覆盖情况,其实觉得还是对比body比较简单些;

    4,分层设计:任务的分层还是很好的,Grid,Snake,Node,Direction的基础类,其中Snake的移动,食物生成都是在Grid处理。GameView负责具体Grid里面对象的打印。蛇就是遍历body然后画N个矩形;KeyListener就是监听键盘事件,然后改Grid里面的Direction即可。

    5,贪吃蛇详细代码地址见:https://github.com/iruimeng/gluttonous-snake,碰撞自身没写;可能有未测得到的bug,但是已经可以正常玩了。

    还有就是看到的轻拍砖。

 

 

© 著作权归作者所有

共有 人打赏支持
叫我哀木涕
粉丝 2
博文 22
码字总数 10879
作品 0
海淀
程序员
CSDN精选Android开发博客

[1] 张国威:Android从入门到提高系列 前面写了十四篇关于界面的入门文章,大家都看完和跟着练习之后,对于常用的Layout和View都会有一定的了解了,接下来的文章就不再强调介绍界面了,而是针...

晨曦之光
2012/02/24
0
0
贪吃蛇系列之三——在窗口上绘制出简单的方形

有了游戏的窗口了,接下来我们就开始在游戏的窗口中绘制出一些图形,由于我们做的是贪吃蛇嘛,就画一个方形吧,下面还是直接看代码: /** 绘制界面的方法 */@Overridepublic void paint(Gra...

多利的猫粮
2012/12/19
0
4
Java实现贪吃蛇小游戏(附完整源码)

今天我就从零开始来完成这个小游戏,完成的方式也是一步一步的添加功能这样的方式来实现。 第一步完成的功能:写一个界面 大家见到的贪吃蛇小游戏,界面肯定是少不了的。因此,第一步就是写一...

Java团长
05/14
0
0
贪吃蛇系列之二——游戏窗口的建立

下面,我们废话不多说,就开始我们的贪吃蛇小项目。首先,我们打开我们的Eclipse,孤狼用的呢是比较新的版本,Eclipse 4.2.0的,没有Eclipse工具的朋友呢,可以到Eclipse的官方网站http://ww...

多利的猫粮
2012/12/19
0
7
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

阿里云API网关使用教程

API 网关(API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简...

mcy0425
37分钟前
4
0
解决远程登陆误按ctrl+s锁屏假死恢复

使用putty时,偶尔发生屏幕假死,不能输入等情况。 后来发现,只要数据ctrl+s,就会假死;输入ctrl+q就可以恢复过来。 很多刚从windows转移到linux上来工作的朋友,在用vi/vim编辑文件时,常常...

HJCui
40分钟前
0
0
@Transactional

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于...

asdf08442a
44分钟前
2
0
widows下强制解除8080端口占用问题

使用win+R打开命令窗口 输入以下命令查看哪个任务占用了8080端口 netstat -ano |findstr "8080" 然后通过任务id强制关闭占用该端口的进程 tskill 10044 // 自己的试情况而定,这个ID是LISTE...

_Artisan
53分钟前
2
0
productFlavors简单实用

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下 1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,...

火云
56分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部