javascript贪吃蛇算法

ybq407723387 2009-05-10 10:45:14
加精
贪吃蛇算法中贪吃蛇身子的数据结构用啥好呢?
...全文
3054 105 打赏 收藏 转发到动态 举报
写回复
用AI写文章
105 条回复
切换为时间正序
请发表友善的回复…
发表回复
_南天北落 2012-09-29
  • 打赏
  • 举报
回复
学习,支持
浅巷丶长歌 2012-09-27
  • 打赏
  • 举报
回复
求一个成品 作为参考 学习 非常感谢 邮箱847542890@qq.com
liuhanfeng123 2011-08-29
  • 打赏
  • 举报
回复
很详细
lumouren009 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 cuixiping 的回复:]

我的意思是蛇的绘制只需要考虑两个变量,不好意思,没有考虑到游戏中的其他逻辑。
针对游戏,用一个一维数组记录从蛇尾到蛇头的逐个坐标,每个坐标用一个整数表示。
从蛇尾到蛇头来存,或者反过来,都可以。
如果从蛇尾到蛇头来存,蛇尾是arr[0],蛇头是arr[arr.length-1]
蛇每移动一步,则在数组arr.shift()一下,arr.push(iNew)一下即可。
如果从蛇头……
[/Quote]请问arr.shift()和arr.push(iNew)两个函数是什么含意?
zouhaifeng2012 2010-09-03
  • 打赏
  • 举报
回复
依旧学习中。。
mooneclipse 2010-08-28
  • 打赏
  • 举报
回复
学习中.............
miaoxinfire 2010-08-22
  • 打赏
  • 举报
回复
学习中。。。。值得期待
iLove9ouHenry 2010-08-19
  • 打赏
  • 举报
回复
学习。
allan4062 2010-08-06
  • 打赏
  • 举报
回复
好一個完整的~!~學習學習~!
zhangshaolongjj 2009-12-04
  • 打赏
  • 举报
回复
学。
dh20156 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 65 楼 daxian520 的回复:]
原来js如此强大,游戏也可以做。依旧努力的学习中……
[/Quote]

利用它还可以用来实现地震预警呢 ^_^

刚刚Beenz贴了一个贪吃蛇的:
http://topic.csdn.net/u/20091204/10/857ff1a1-5434-446c-a3be-7262df8d81b3.html
dh20156 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 67 楼 kitegirl 的回复:]
“贪吃的蛇”是一个低分辨率点阵下实现的游戏。最初是在Apple II的40×40色块分辨率下实现的。
实现这个游戏最好的办法是创建一个模拟的点阵显示环境。
如果用什么链表之类的东西来描述,不仅麻烦,而且不够真实。

你要创建一个W×H的点阵显示空间。记录这个空间的是W×H个元素的一维数组(相当于显示缓冲区)。

一维数组的索引和二维坐标的转换公式是这样的:

I=Y×W+X (i是从0到N的一维数组索引)
Y=I\W (Y是从0开始计算的垂直坐标)
X=I Mod W (X是从0开始计算的水平坐标)

在点阵里画一个点,一般是使元素大于0。擦除一个点一般是使元素等于0。
(如果你吃饱了撑的,也可以规定擦除是某个特定值比如99,0是有效点)

每当完成一个“周期”之后,将这个一维数组在界面上成像(相当于RAMDAC将显示缓冲区输出为视频信号)。
成像的方法有许多方式。你可以用O和X在文本显示;也可以用漂亮的明暗图片在网页里显示。这个就属于细节问题了。

实现了“点阵显示环境”和“画点、擦点”的函数之后。就可以实现“贪吃的蛇”了。

实现贪吃的蛇简单说就是:画当前周期的最新点,擦L个周期前的旧点(L就是蛇的长度)。做个FIFO很好解决。你可能会习惯在FIFO里存储一个x,y坐标。但明智的办法是存储一维显示缓冲区数组的索引,因为它不需要坐标转换。

当前点和擦除点之间的点并不重画,因为它们已经存在于点阵显示上。但假如蛇的轨迹穿过这些点,会导致它们在L个周期后被擦掉。那个年代的电脑运算速度特别慢,如果要保证将L个点全部重画会消耗运算资源。画一点、擦一点的方式最节省运算资源。这就是为什么“贪吃的蛇”游戏规则里不允许吃到自己身体的原因。

[/Quote]

小仙妹~```` ^_^
骄傲青蛙 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 70 楼 cuixiping 的回复:]
简单的贪食蛇,写起来非常简单,代码也很少。
给一个我周五写的简单贪食蛇(长按前进方向键可加速前进,代码简洁没OO)

【贪食蛇v1在线试玩点这里】

截图:



但是如果要做到很好的视觉效果,就难了。比如,
如果想让蛇不再是方块的蛇,而是仿真的蛇,则蛇头、蛇尾各有4个方向的不同图片,蛇身每段都应该有水平和竖直两种状态,蛇体转弯拐角处用圆形连接又有很多种情形,复杂着呢。
[/Quote]

FF3.5.5没反应
xieyuhang0221 2009-08-11
  • 打赏
  • 举报
回复
想法很不错~~~~~!
很期待,
看来要多学学JS方面技术了 这么强大~~~~~~
  • 打赏
  • 举报
回复
学习了
wo94jj 2009-08-10
  • 打赏
  • 举报
回复
真的有强人.
x15928666119 2009-08-10
  • 打赏
  • 举报
回复
Hoye不错噢,呵呵,这个贴挺起
梅子 2009-08-10
  • 打赏
  • 举报
回复
Mark
  • 打赏
  • 举报
回复
如何实现转弯?
blueyestar 2009-08-10
  • 打赏
  • 举报
回复
学习中
加载更多回复(82)
功能:蛇吃食物有三种情况:走到的地方有食物;走到的地方没有食物;走到的地方是墙壁。吃到食物后,蛇的身体会变长;碰到墙壁后 Game Over,询问是否重新开始。 整个游戏是在一个
框子(地图)里展开的,蛇有地图里的一系列
构成,初始状态(刚刚打开页面)蛇是一个
框,蛇头和蛇尾是在一起的,就是这个
框,以后吃了食物后
个数会变多,蛇就会长长。食物用一个框表示,初始时和蛇一样其位置是随机产生的。蛇和食物的坐标用
的绝对位置表示。 算法的关键是当蛇移动到新的位置后,判断前述的三种情况,做出相应的处理。而二维数组 Map[][] 就是判断的依据。二维数组 Map[][]通过其元素的值来表示蛇身、食物和空地。蛇身、食物和空地的值分别为'S'、'F'和'0'。 用 Javascript 编程和其他语言的一个大的区别就是键盘的控制代码不同。js是通过 Key=event.keyCode 语句获取键盘码,再在多分支 switch 结构里分别处理。看完这些代码就会对浏览器里的键盘控制有所了解了。 当然该段代码的最大价值还是让我们了解到网页游戏的大概写法,而算法其实是最重要的,把一个游戏的设想变为一堆包含许多的函数的结构化的代码,是值得我们借鉴和学习的。

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧