用AS3.0制作五子棋

鲍克力 2015-11-14 09:53:53
因为自己刚做了一个五子棋懂得还不是很多,这里写点自己的心得,如果哪里写的不对或者不好希望大家多指点指点。

首先讲讲棋子怎么下在棋盘上。我是自己画了个12*12的棋盘并且设定好棋盘的坐标。

我这里是设置在(50,100)棋盘大小是500*500所以棋盘每个节点之间间距就是45.5,再通过对鼠标的监听获取鼠标点击屏幕位置的坐标。这个获取到的坐标再通过计算就可以得到点击的位置属于哪个节点的区域和它的虚拟坐标。找到这个坐标我们就容易下这颗棋子了。

我事先把棋子做成影片剪辑并设置好AS链接。下面是生成棋子到相应位置的代码:

//x1,y1是鼠标点击棋盘的位置
var mc:Black=new Black();//Black为黑子的AS链接
mc.x = int(x1 / (500 / 12)) *(500 / 12);//先将获得点击棋盘的坐标转化成0~11的虚拟横坐标
mc.y =int(y1 / (500 / 12))*(500 / 12);//将获得点击棋盘的坐标转化成0~11的虚拟纵坐标
qi.addChild(mc);//qi是棋盘的实例名,设置好棋子的坐标后为棋盘添加黑子



写代码的时候千万别忘了判断鼠标点出界时候的情况以免出现程序出错。讲了添加棋子再讲讲怎么删棋子。利用removeChildAt()和numChildren两个函数就可以轻松的解决这个问题。当你每下一颗棋子的时候numChildren就会自动+1。假设你下了n颗棋子numChildren就为n,然后在用removeChildAt(n),就可以删掉刚刚下过的那颗棋子,再用个循环就可以全删光了。这两个函数一般重新开始和悔棋功能里面会有用到。

接下来就是输赢的判断,我把每个棋子下的位置都用数组arr【】【】表示出来,空子为0,黑子为1,白子为2。这里我引用一个别人的思路。用字符串对比,落棋后,以横向为例,从当前点(i-4)到(i+4)一共9个点,将从arr数组中取出的int值合并为字符串str,(请注意处理数组越界空指针问题)若str.indexof(“11111”)> 0,则表示在str字符串中存在连续5个棋子,即五子连珠,即可判断输赢。



因为时间不多所以只能写了这么一点剩下的下次补上。(PS:因为第一次写所以写的不是很好希望大家多多指点!)
...全文
172 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

934

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 交互式设计
社区管理员
  • 交互式设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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