使用链表设计基于方块游戏的本质
来源:互联网 发布:两年java工程师简历 编辑:程序博客网 时间:2024/06/06 03:47
完全使用链表使得数据结构更加统一,并且将游戏面板上的所有元素看做链表元素本身就是合理的,在《完全用链表实现的贪吃蛇》一文中,其中有一个图示,其中大红色的线段连接的元素指示了需要拐弯的节点,类似一种路标,这也是一种链表...。
这种链表的设计很容易扩展到其它情形,诸如俄罗斯方块等小游戏的设计。实际上任何的基于方块的平面游戏(或者3D游戏),都可以使用基于链表的方案进行开发,这种方式使用链表将游戏中的元素聚合了起来,之后的游戏逻辑可以完全归结为针对链表的操作。
但是且慢,在那篇文章中,有位哥们提出一个更好的算法,以下是他的回复:蛇的移动可以采取更简单的处理方式,就是在移动过程中,首先判断当前蛇的移动方向AB(蛇头的坐标A减去与蛇头相邻的下一个节点的坐标B,矢量型的),再根据按键的方向C(上下左右,矢量型,如(1,0)表示右),得到蛇头的移动矢量D(D=AB+C),要是D=(0,0)的话,则不移动,否则,将蛇尾从蛇身中删除,再将其坐标修改为A+D,并将其插到蛇头前面做为新的蛇头,即可.此方法免去了对拐点的判断,而且时间复杂度为O(1).
以下是我的回复:开始也是这么想的,可是后来放弃了,我总想用统一的链表来包容所有的元素,包括拐点,然后把坐标和链表分离,仅仅作为链表的一个属性。把问题搞复杂了,看来有时候真得返璞归真啊,不能一味寻求什么统一。
真的如此啊,有的时候不能寻求太多的所谓统一!仔细考虑了自己的所谓统一算法之后,觉得虽然遍历了好几次链表,算法的时间复杂度并不是O(n),因为还有边墙的限制,一条蛇的任何一部分身体节点都不会超过面板的长度或者宽度。
这种链表的设计很容易扩展到其它情形,诸如俄罗斯方块等小游戏的设计。实际上任何的基于方块的平面游戏(或者3D游戏),都可以使用基于链表的方案进行开发,这种方式使用链表将游戏中的元素聚合了起来,之后的游戏逻辑可以完全归结为针对链表的操作。
但是且慢,在那篇文章中,有位哥们提出一个更好的算法,以下是他的回复:蛇的移动可以采取更简单的处理方式,就是在移动过程中,首先判断当前蛇的移动方向AB(蛇头的坐标A减去与蛇头相邻的下一个节点的坐标B,矢量型的),再根据按键的方向C(上下左右,矢量型,如(1,0)表示右),得到蛇头的移动矢量D(D=AB+C),要是D=(0,0)的话,则不移动,否则,将蛇尾从蛇身中删除,再将其坐标修改为A+D,并将其插到蛇头前面做为新的蛇头,即可.此方法免去了对拐点的判断,而且时间复杂度为O(1).
以下是我的回复:开始也是这么想的,可是后来放弃了,我总想用统一的链表来包容所有的元素,包括拐点,然后把坐标和链表分离,仅仅作为链表的一个属性。把问题搞复杂了,看来有时候真得返璞归真啊,不能一味寻求什么统一。
真的如此啊,有的时候不能寻求太多的所谓统一!仔细考虑了自己的所谓统一算法之后,觉得虽然遍历了好几次链表,算法的时间复杂度并不是O(n),因为还有边墙的限制,一条蛇的任何一部分身体节点都不会超过面板的长度或者宽度。
- 使用链表设计基于方块游戏的本质
- 用Qt设计自己的方块游戏
- 游戏的本质
- 我的J2ME游戏作品:音乐方块
- 大学实训专周完成的【感染方块】游戏
- 也写一个变色方块的游戏
- 设计的本质是什么?
- 基于cocos2d-x的游戏框架设计
- 基于cocos2d-x的游戏框架设计
- 基于cocos2d-x的游戏框架设计
- 游戏和引擎的本质
- 打方块游戏
- 一款新方块游戏
- 方块游戏—题解
- 方块消除游戏
- 简单的使用键盘控制方块移动
- 电子设备可靠性设计的本质
- 基于java的俄罗斯小方块,code code...
- wordpress头像无法显示两种解决办法
- WordPress设置文章页面的动态关键字和描述
- IAR EW430+proteus仿真搭建
- wordpress分类显示友情链接
- 不用插件 WordPress 显示文章浏览次数
- 使用链表设计基于方块游戏的本质
- spider tcl脚本编写
- mv命令的使用方法
- HTML各元素的默认CSS属性
- Proteus VSM CSPY Driver
- $_SERVER的兼容处理类[PHP]
- 问题解决总结4_fortran,openmp
- 一个快得出奇又慢得可以的比特排序算法
- 使用Apache Mod_Layout模块向网页动态插入内容