用javascript做一个webgame连连看大家看下

 更新时间:2008年01月19日 20:48:59   作者:  
用javascript做一个webgame连连看大家看下
最后成品代码写的仓促,没有容错,封装也不合理,只实现了核心部分,其他部分,喜欢添加的旧添加吧。

下面就开始我的教程(姑且算是教程吧,草草写点吧,时间太少,大家原谅)

以最高难度游戏级别作的分析。
第一步,大体分析
看看游戏主要包含哪些元素,发现3部分,一些成对的图片块,一个能盛图片块的方盘容器,一个能连接两个图块的线。

第二步,元素分析
图块:图块一共有32种不同的图案,每种图案4张,图块会相应鼠标的点击,图块会消失,图块有高度和宽度。
方盘:能承载128个图块,2维承载,横向16块,纵向8块,方盘可以放图块,可以打乱已有图块的位置顺序。
连线:游戏的核心,连接两块图块得中心点,最多只能折两次,不能穿透图块,连线可以通过方盘外部

第三步,抽象
有了上面的分析,把3个元素抽象成3个对象,怎么抽象的,自己动脑吧,我写的代码就是因为动脑不足,导致封装乱七八糟的。

第四部,核心算法

1,洗牌算法(很简单的算法)
把2维数组的数据推到1维数组,交换数据中位置属性,重新按照位置放置元素


2,查找路径:
其实连连看最主要的地方就是如何查找两个图块之间的一条最多只有两个折点的路径,这里的实现方法有很多种,我这里实现的是找到的方法,不是最短路径或者最优路径的方法。
根据研究你会发现,连线可以分成两部分,一部分是法线,一部分是图块投影到法线上的射线,那么,我们就可以利用这个关系,查找一条路径。

首先,设两个图块A,B,那么每个图块都有X向和Y向两条射线,那么如果存在一条Y向法线在AB的X射线公共区之间,或者存在X向法线在AB的Y射线公共区之间,那么就找到了一条路径。

没有实现的地方:(这些基本都是无关紧要了,关口可以根据洗牌的方法很容易改造出来,有兴趣你就去实现吧)
计时、计分、提示、关口


[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

相关文章

  • JS实现li标签的删除

    JS实现li标签的删除

    这篇文章主要为大家详细介绍了JS实现li标签的删除,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Jquery代码实现图片轮播效果(一)

    Jquery代码实现图片轮播效果(一)

    经理交给我一个网站新闻资讯网页开发的活儿,对于我这样的java程序员,没有接触过网页设计这么高端的东东,该怎么搞呢,去度娘那搜索到不少结果,而且很大部分都是用jquery做的,于是根据自己的一些的理解,提供了这篇jquery轮播效果的讲解,有需要的朋友可以来参考下
    2015-08-08
  • JavaScript的内置对象Math和字符串详解

    JavaScript的内置对象Math和字符串详解

    这篇文章主要为大家介绍了JavaScript的内置对象Math和字符串,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • bootstrap table 多选框分页保留示例代码

    bootstrap table 多选框分页保留示例代码

    在使用bootstrap table的复选框功能的时候,由于采用服务端分页,当在第一页选择了某些数据,然后点击第二页选择一些数据,再次点回第一页,发现原先选择的数据已经清空了,原来的多选框并不支持翻页保留多选数据,怎么解决呢,下面小编给大家分享下解决思路
    2017-03-03
  • js实现tab选项卡函数代码

    js实现tab选项卡函数代码

    js实现tab选项卡函数代码,需要的朋友可以参考下,这样的代码也是比较常用的,相当原理也比较简单。
    2010-04-04
  • 微信小程序实现上传图片小功能

    微信小程序实现上传图片小功能

    这篇文章主要为大家详细介绍了微信小程序实现上传图片小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • JS基于VUE组件实现城市列表效果

    JS基于VUE组件实现城市列表效果

    这篇文章主要为大家详细介绍了JS基于VUE组件实现城市列表效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • bootstrap treeview 扩展addNode方法动态添加子节点的方法

    bootstrap treeview 扩展addNode方法动态添加子节点的方法

    bootstrap-treeview 是一款基于Jquery+bootstrap的树控件,这篇文章主要介绍了bootstrap treeview 扩展addNode方法动态添加子节点的方法,需要的朋友可以参考下
    2017-11-11
  • 如何实现表格中行点击时的渐扩效果!

    如何实现表格中行点击时的渐扩效果!

    如何实现表格中行点击时的渐扩效果!...
    2007-01-01
  • 纯JS实现根据CSS的class选择DOM

    纯JS实现根据CSS的class选择DOM

    这篇文章主要介绍了纯JS实现根据CSS的class选择DOM,需要的朋友可以参考下
    2014-03-03

最新评论