频道直达 - 学院 - 下载 - 交易 - 截图 - 特效 - 字库 - 手册 - 排名-工具 - 繁體
设为首页
加入收藏
联系我们
建站搜索: 虚拟主机  域名注册   常用广告代码      用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 开发工具 -> Flash -> 文章内容
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 通过google 赶快来赚..
· [图文] 头像-qq头像(..
· 要10G免费网络硬盘的..
· 注册码大全三
· 注册码大全十
· [图文] 梦幻背景图片..
· [图文] 卡通动物图片..
相关文章
· Dreamweaver网页制作技巧..
· ASP实用大全-ASP基础(2)..
· WEB页面简单进度记时器
· 网页切片算法的若干问题..
· Google Adsense 随机转色..
· “手推车”功能的实现 (..
· asp中如何限制重复提交同..
· 用好活动字幕标记—marq..
· 马云投资口碑网可一石三..
· 将数据库的内容读到二维..
五子棋
作者:未知  来源:转载  发布时间:2005-8-12 20:25:59  发布人:acx

减小字体 增大字体


点击浏览该文件
点击浏览该文件
重新做了个(每个格子多帧的方法),测试了很久,好像没什么bug了
可以判断行列连续和斜线连续。
可惜我不会AI,不能做成和电脑对战。。
格子是做成MC的:1帧空白(值为0),2帧白子(值为1),3帧黑子(值为-1)
判断是否连续时用的是加法。。(5个格子的值相加,取绝对值,如果等于5,表示有连续)
我想这样效率高些,代码也可简洁些

var sm=20;//棋盘格子的行列数
var width=400;//棋盘长宽
var width2=width/sm;//格子长宽
var depth=10;
var kk=true;//上白子还是黑子。。
var mydata=[];//棋盘整体状况记录:0表示空,1表示白子,-1表示黑子
bbb._visible=false;//bbb就是那个“replay”按钮,最后临时加上的
bbb.onRelease=function(){
cls_dot();
win="";//“win”就是文本框显示的信息
this._visible=false;
}
for (var i=0;i<sm;i++){//构建i行j列的棋盘
mydata[i]=[];
for (var j=0;j<sm;j++){
mydata[i][j]=0;
var a=this.attachMovie("dot","dot"+i+"_"+j,depth++);
a.gotoAndStop(1);
a.i=i;
a.j=j;
a._width=a._height=width2;
a._x=j*width2;
a._y=i*width2;
a.onPress=function(){
if (this._currentframe==1 and !bbb._visible){//格子停留在第一帧,表示没有棋子
if (kk){
this.gotoAndStop(2);//停到2帧(白子)
mydata[this.i][this.j]=1;
//检测
var jc=is_ok(this.i,this.j);
if (jc!="") {
win=jc+"\n白子胜";
bbb._visible=true;
}
}else{
this.gotoAndStop(3);//停到3帧(黑子)
mydata[this.i][this.j]=-1;
//检测
var jc=is_ok(this.i,this.j);
if (jc!="") {
win=jc+"\n黑子胜";
bbb._visible=true;
}
}
//
trace("-----------目前局势------------------");
for (var bb=0;bb<sm;bb++)trace(mydata[bb]);
trace("-------------END---------------------");
kk=!kk;
} }
}
}
//-------------------------下面这段写得比较繁琐---------------------------------------------------

//判断有无连续五子。。
function is_ok(this_i,this_j){
var is_ok="";
//行检测范围
var sta_i=this_i-4;
if (sta_i<0) sta_i=0;
var end_i=this_i+4;
if (end_i>sm-1) end_i=sm-1;
//列检测范围
var sta_j=this_j-4;
if (sta_j<0) sta_j=0;
var end_j=this_j+4;
if (end_j>sm-1) end_j=sm-1;
//检测行连续
for (var j=sta_j;j<=this_j;j++){
if(Math.abs(mydata[this_i][j]+mydata[this_i][j+1]+mydata[this_i][j+2]+mydata[this_i][j+3]+mydata[this_i][j+4])==5){
is_ok="行连续";
break;
}
}
//检测列连续
for (var i=sta_i;i<=this_i;i++){
if(Math.abs(mydata[i][this_j]+mydata[i+1][this_j]+mydata[i+2][this_j]+mydata[i+3][this_j]+mydata[i+4][this_j])==5){
is_ok="列连续";
break;
}
}
//检测斜"\"连续
for (var i=sta_i,j=sta_j;i<=this_i;i++){
if(Math.abs(mydata[i][j]+mydata[i+1][j+1]+mydata[i+2][j+2]+mydata[i+3][j+3]+mydata[i+4][j+4])==5){
is_ok="斜“\\”连续";
break;
}
j++;
}
//检测斜"/"连续
for (var i=sta_i,j=0;i<=this_i;i++){
if(Math.abs(mydata[i][end_j-j]+mydata[i+1][end_j-j-1]+mydata[i+2][end_j-j-2]+mydata[i+3][end_j-j-3]+mydata[i+4][end_j-j-4])==5){
is_ok="斜“/”连续";
break;
}
j++;
}
//得出结果
return is_ok;
}
//——————————————————
//清除所有棋子
function cls_dot(){
for(var i=0;i<sm;i++){
for(var j=0;j<sm;j++){
this["dot"+i+"_"+j].gotoAndStop(1);
mydata[i][j]=0;
}
}
}
[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
免责申明:中国建站之家(www.jz123.cn)上的所有提供下载的软件和资源
均来源于网络,为软件或程序作者提供和网友推荐收集整理而来,仅供学习
和研究使用。如有侵犯你的版权,请立即联系我们,本站将在3个工作日内删除。
粤ICP备05092265号