qq游戏连连看攻略小游戏?寻一连连看小游戏...

陌陌助手之QQ游戏连连看辅助下载_1.0绿色版_9号软件下载Javascript小游戏,连连看(一)初步实现寻路 傅唯一的日志
Javascript小游戏,连连看(一)初步实现寻路
小时候的梦想是做一名游戏程序员,可惜没成功。但做为大龄青年的我,仍然有一颗游戏的心,所以,现在我要来试着做一个小游戏,连连看。玩着很简单,做起来就不容易了。
本文只是初步实现寻路,关于性能、连连看规则、边缘处理都没有涉及,后面将陆续增加(如果弄得出来的话)
试玩(本程序很可能引起浏览器崩溃,且边缘方块未做处理)
正在努力加载...
连连看规则
在两个相同元素之间,通过上下左右四个方向进行连接,如果在这些路径上没有任何一个元素,且在2次转角内连通,那么,这两个元素消除。(有点拗口,没关系,大家都懂)
规则真是超级简单,但程序要怎么处理呢,这里先分析一下:
1、程序要判断两个点击的元素是否相同,不相同,则不做任何事(可以扣分的)
2、分析一个点击元素四个方向上相邻位置的元素是否存在,如果不存在,表示可以走,如果存在,表示不可以走
3、按照第2点的方式,继续分析每个可走点的相邻元素,是不是可以继续走
4、一直走到目标元素的位置,如果成功,消除两个元素。(如果不考虑游戏规则的话是这样的,如果考虑2次转角的规则,那就不是一直走了,这里,我们先不考虑这个规则)
好嘛,听着不算复杂,也不算简单,其实就是一个寻路,没元素的位置是路,有元素的位置是墙,不是超人,自然只有走路,走不通就over。
正如我前面所说,本人不是一个游戏程序员,所以没有接触过寻路的算法,只里能想到的就是利用递归来寻路。每一个点四个方向,一层一层走下去。但要是真的这样走下去,肯定是一条不归路,因为它会在里面打转,所以,必须得加上一个条件:走过的地方,不能再走,不然肯定在里面转圈了。
最简单的情况基本上就是这样了,那么先来建一张地图吧,这样好操作,如下图:
它是一个9*14的方格组,每个大小50*50像素,这些不重要,重要的是,会把这些小方块写成一个二维数组里,用于寻路时判断相邻位置是否是通的。看看创建地图的函数:
//创建地图
var mapW=14,mapH=9;itemW=50,itemH=50;
var totalItemNums=mapW*mapH;
var game_map='';
for(var i=1;i&=mapH;i++){
gameItems[i]=new Array();
for(var j=1;j&=mapW;j++){
gameItems[i][j]=Math.floor(5*Math.random());
game_map+='&div k1="'+i+'" k2="'+j+'" v="'+gameItems[i][j]+'" id="'+i+'_'+j+'" class="mapItem mapItem_'+gameItems[i][j]+'" &'+i+'-'+j+'&/div&';
$("#game_map").html(game_map);
一目了然,中间的gameItems,就是用来存储小方块的数组,每一点个放了一个随机数在里面,而小方块就是利用这些随机数来填充不同的颜色,数字一样的,颜色一样,颜色一样的表示是同一类。连连看是同一类的元素才能消除的,对吧,所以目的就是这个。
这里只用了几个随机数,好测试。
接下来是一些必须要做记录的数据,例如先点的那个元素,为什么要记录这个,因为要点击两个元素,才能判断是否能够消除,所以先点的那个先记录下来,这样才可以和后点的元素进行处理。所以,使用一个数组来记录第一次点击的元素:
var clicked=new Array(0,0,0);
它的长度为3,每个值都为0,因为地图是个二维数组,所以,要确定一个坐标,要2个值,再加上元素本身身份值(颜色),所以是3个。
var gameItems=new Array();
这个就是存储小方块的数组,当然这个申明是在创建地图的前面。
var ways=[];
这个数组,是用来存放已经走过的元素位置。后面程序会通过判断目标位置是否存在于这个数组里,如果存在,就不能走,反之,就可走。
var direction=0,corner=0;
这两个变量,是用来判断方向和转角次数(当然,转角次数在本文里是不涉及的,先放这里吧)。为什么要把方向加入,是因为,如果本来是向东移动了一格,那在这一格的四个方向里,就不可能再向西(也就是来路的方向)移动的必要。这样可以减少一个方向的判断。所以,程序在每次移动一格后,都要重置direction的值,假如用:1=上,2=右,3=下,4=左,来表示方向。
地图创建好后,为每一个小方块绑定一个点击事件,这时就要判断点击的是第一次,还是第二次,如果是第一次,记录该方块的数据,如果是第二次,先判断两个点是否同类型,如果不同类,不做处理,如果同类,就开始寻路了。
function clickItem(){
$(".mapItem").click(function(){
//绑定单击事件
var k1=$(this).attr('k1');
//取得方块的横坐标
var k2=$(this).attr('k2');
//方块的纵坐标
var v=$(this).attr('v');
//方块的值
if(clicked[0]==0){
//判断是第几次点击,如果已点击数组里的值是0,表明是第一次
$(this).addClass('click');
//高亮被点击方块(只是一个提示处理)
clicked[0]=k1;
//记录方块信息
clicked[1]=k2;
clicked[2]=v;
//清空已走过的位置坐标。因为这是一次新的寻路
//如果是第二次
if(v != clicked[2]){
//判断两个元素是否同类型,不是,去除第一次点击元素的高亮效果
$("#"+clicked[0]+"_"+clicked[1]).removeClass('click');
//如果是同类型,开始寻路
if(wayFinding(clicked[0],clicked[1],k1,k2)){
//寻路函数(递归)
$("#"+clicked[0]+"_"+clicked[1]).removeClass('click');
//如果函数返回为真,去除高亮效果
clicked[0]=0;
//将已点击数组重置为0,表明没有点。
clicked[1]=0;
clicked[2]=0;
这个函数很好理解,最重要也是最麻烦的是寻路函数,wayFinding(),它是一个递归,先来看看它的样子(没什么技巧):
function wayFinding(a1,a2,b1,b2){
//它有4个参数,前两个是第一个点的坐标,后两个是第二个点的坐标
a1=parseInt(a1);
//都要做转型处理,保证是整数
a2=parseInt(a2);
b1=parseInt(b1);
b2=parseInt(b2);
for(var i=1;i&=4;i++){
//每个方块有四个方向,所以做一个4次循环
if(direction!=3||(direction==3&&preItems[1]!=a2)){
//通过判断来向,确定是否要执行该方向的判断
//1代表向上找
direction=1;
//向上,就是纵坐标-1
//横坐标不变
if(direction!=4||(direction==4&&preItems[0]!=a1)){
//2代表向右
direction=2;
//向右,就是纵坐标不变
k2=a2+1; //横坐标+1
if(direction!=1||(direction==1&&preItems[1]!=a2)){
//3代表向下
direction=3;
//向下,就是纵坐标+1
//横坐标不变
if(direction!=2||(direction==2&&preItems[0]!=a1)){
//4代表向左
direction=4;
//向左,就是纵坐标不变
k2=a2-1; //横坐标-1
//判断存放所所方块的数组里,对应的位置的值是不是blank,如果是,表明这一格是空的,可以走
if(gameItems[k1][k2]=='blank'){
//判断这个位置在已走路径数组里是否存在,如果不存在,表明可以走
if(jQuery.inArray(k1+''+k2,ways)==-1){
preItems[0]=k1;
preItems[1]=k2;
//将这个位置坐标加入已走路径数组里
ways.push(k1+''+k2);
//递归继续走,如果返回值为假,那return false,结果这一层
if(!wayFinding(k1,k2,b1,b2)){
}else if(k1==b1&&k2==b2){
//如果下一个的坐标和目标坐标相吻合,说明已经到终点了
//清除被点击的两个方块
remveItem(clicked[0],clicked[1],b1,b2);
这样看,递归也不复杂,但如果你跟着它一直想下去,会发现,很绕,而且这样的做法是没有效率的,仅仅只是做到了一个简单的寻路处理。
到这里,连连的初步的程序已经搭建完成了,但仅仅只是一个寻路,后面还需要做三大处理,这个游戏才算完成。
1、提高寻路的效率。别让本来就在边上的目标点,要走遍所有空格才能到达。
2、增加对边缘方块的处理。
3、增加连连看的规则,最多只能转2次角。
以上内容,将会在后面的文章里继续。
Please enable JavaScript to view theQQ 专区相关分类
常用装机软件
软件标签:
软件授权:破解版
更新时间: 19:58:04
软件类型:国产软件
软件大小:385 KB
软件语言:简体中文 
应用平台:Win2000/XP/2003/Vista/win7/win8
咪兔QQ连连看助手是免qq游戏连连看辅助工具,全新的内核,精准定位,易用快速安全,玩家必备。&支持自动准备,禁止特效,无限道具,道具免疫,模拟真人以及单步,挂机,秒杀笑容茹&213.1.22&咪兔QQ游戏连连看助手v1.7.17&破解版运行压缩包内&破解补丁.exe&文件即可。
软件下载   
点击以下链接下载咪兔QQ连连看助手1.7.17破解版(qq游戏连连看辅助)笑容茹  
相关资源   
?上一软件:
?下一软件:
 华彩软件站的所有软件都经过严格安装检测,如发现有病毒木马或不能下载,请()反馈。
 推荐使用[]等专业工具下载本站软件,可获取最高速的下载速度。
 请尽量使用[]或[]等解压缩工具,这样能确保您下载的软件运行正常。
 若下载的软件压缩包有加密,密码将是
 华彩软件站中所包含的破解版及注册码均搜集自互联网,如果上述行为侵犯到您的权益,敬请通知。
 感谢您对本站的支持,欢迎您加入华彩软件站用户QQ群进行交流!QQ 专区相关分类
常用装机软件
软件标签:
软件授权:绿色版
更新时间: 12:49:26
软件类型:国产软件
软件大小:14.0 KB
软件语言:简体中文 
应用平台:Win2000/XP/2003/Vista/win7/win8
鬼鬼QQ游戏连连看机器人是QQ游戏大厅连连看的一种辅助工具软件。开发环境为64位Win7兼容XP运行无需特殊权限。程序在压缩包内只有16K没想到吧!小的可以无视,比一张图片还小的辅助你用过吗?鬼鬼QQ游戏连连看机器人软件使用说明:运行辅助后会自动锁定(QQ连连看)游戏窗口且辅助会出现在游戏窗口上方,这样则说明辅助已成功的开启了,默认是自动消。也可按(F7)或点击选择取消自动,用快捷键(F3)或按键选择一个一个消,具体请下载后使用便知。&
软件下载   
点击以下链接下载鬼鬼QQ游戏连连看机器人1.0绿色版(QQ连连看作弊器)  
相关资源   
?上一软件:
?下一软件:
 华彩软件站的所有软件都经过严格安装检测,如发现有病毒木马或不能下载,请()反馈。
 推荐使用[]等专业工具下载本站软件,可获取最高速的下载速度。
 请尽量使用[]或[]等解压缩工具,这样能确保您下载的软件运行正常。
 若下载的软件压缩包有加密,密码将是
 华彩软件站中所包含的破解版及注册码均搜集自互联网,如果上述行为侵犯到您的权益,敬请通知。
 感谢您对本站的支持,欢迎您加入华彩软件站用户QQ群进行交流!热门小游戏
最新好玩小游戏
小游戏专题推荐
女生小游戏
冒险小游戏
休闲小游戏
换装小游戏
敏捷小游戏}

我要回帖

更多关于 qq游戏连连看攻略 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信