[网页游戏开发资料]超强的 js 版星际争霸,让你不得不服
2008-04-12 来源: 作者:
以下是本站小编 04-12 日为您精心收集整理的最新网页游戏新闻:
超强的 JS 版星际争霸,让你不得不服。
演示地址:http://www.vwebgame.com/xingji
/uploads/soft/1_080412152040.rar
%
背景介绍
对很多人来说,JavaScript 是一种颇为神秘的语言,这种语言由浏览器解析,可以实现很复杂的功能,但在实际中又使用甚少。在
以相对定位为基础的网站体系中,js 并不是必不可少的,最早的浏览器并不支持 js,只需使用纯静态的 html,也能建立功能完备的网站。
对于页面开发人员来说,使用 js 的时候估计也就是用于数据合法性检查而已。近年来,随着 ajax 概念崛起,js 的使用有所增加,不过除
了 web 邮箱等少数工具型的网站之外,其作用仍然是辅助性的。
实际上,js 作为最流行的脚本语言,功能是非常强大的,笔者就曾经利用 js 来模拟星际争霸。大家都知道,星际争霸是即时战略游
戏史上的里程碑,在玩家心目中的地位是不言而喻的,泡在各种各样的网吧里玩星际曾经是笔者生活的一部分。仅凭一腔热血,我就着
手用 js 来开发星际,这是一次坚难的历程,充满了挫折,也享受到了乐趣,最后能够完成,却是开始时我也没有奢望到的。
js 星际源码最早发布于无忧脚本的论坛里,得到了很多网友的好评,让我感动之余,也唯有更加努力。通过这次开发,我的 js 开发
技术有了很多提高,还认识了许多喜欢 js 开发的朋友,幸哉!js 星际现在的存放地址是 http://www.vwebgame.com/xingji,有兴趣的朋友
欢迎参与讨论。
解决方案
寻径算法是游戏的基础,也是运算量最大的部分。我没有使用 A*算法,因为对脚本来说开销太大了,而是自主开发一种新算法,称
之为交点法,特点是线性寻径,运算量比较小,缺点是不能保证结果为最短路径。交点法的基本思路简述如下:
1.从起点到终点画直线,与障碍物相交时,总会出现对应的穿入点和穿出点。
2.从穿入点的两个方向同时绕行障碍物,选择先到达穿出点的路线作为前进路线,这样就得到了一条比较原始的路线。
3.对路线进行优化,判断两点是否形成通路,删除冗余点,得到最终的路径。
寻径时大量使用了判断是否障碍点的运算,一般的做法是遍历数组,分别比较才能得到结果。我把障碍点序列变成一个长字符串,
通过字符串包含关系就可以判断出当前点是否障碍点,这样就减少了很多运算量。
js 星际所实现的,相当于是星际争霸的开场部分,即采矿、制造建筑物和生产士兵,战斗部分略有涉及。在编码之前,就需要有许
多准备工作,光是图片的制作就非常烦锁,需要万分的耐心才行。另外,我还用 hta 技术开发了一个地图编辑器,用于生成地图数据。
游戏里的控制面板比较精简,缩略地图和选择信息集成到右上角的一个小面板里,其他部分都属于游戏场景。每个移动单位有 8 个
方向,以枪兵为例,需要用 24 张图片来表现站立和走动各种姿态。这些图片都集成在一张大图里,根据走动或站立情况,显示其中的对
应部分,比如在走动时,判断出走动方向,一边移动枪兵位置,一边三张图片轮显,表现出走动的情形。
游戏初始化时,载入地图数据,根据不同的建筑物属性,一方面生成场景,另一方面生成障碍物列表,用于寻路之用。默认情况下,
地图上有几个矿工,圈选后,点击目标可以自主行走,根据游戏要求,如果点击到的是矿石,就会在矿区和总部间来回走动,每次往返