站长中国
设为首页 | 站长论坛

站长论坛 站长下载
您所在的位置: 站长中国 > 站长学院 > 网络媒体 > Flash > 正文

五子棋
  2008年02月18日16:54:41  评论(0条) 字体:[ ]
相关热点: mydata // var 连续 if this_i is_ok for this_j 检测
点击浏览该文件
点击浏览该文件
重新做了个(每个格子多帧的方法),测试了很久,好像没什么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;
}
}
}

收藏本文 打印 打印本文  推荐本文 告诉好友 投稿 投稿邮箱

站长排行

学院

新闻

专栏

盈利

[揭密网络黄链]中国留学生买凶专破日本
windows 2008中文版iis7+asp+php+Acces
贴吧发帖机使用教程(绝对原创)
超强弹出窗口代码,什么都挡不住
Windows Vista局域网网络连接设置
JSP语法(6)
FLASH视觉特效实例之地震效果
关于数据分页(转自www.codeproject.co
教你如何在Vista中设置麦克风
不用Photoshop 在线恶搞大头像
全国哀悼日网友自发QQ隐身上线 向死难
淘宝网卖家公然叫卖“艳照门”照片集
抗震救灾/鱼目混珠?
Google绿色专家质疑黑色背景网页节省资
阿里妈妈广告卖主全攻略
电影小说类相关关键字搜索量列表
爆笑 阿里就这样把亿告征服!
大脚:实战单页面优化关键词之——淘宝
国内各IT企业办公环境揭秘(多图)
心系灾区,点燃希望——手机QQ2008祈福
ECSHOP模板制作参考文档
悬挂阿里妈妈会否被百度惩罚
ECSHOP模板下载
阿里妈妈是否是中小站长的救世主?
最强网店ECShop发新版 众多酷炫功能给
土豆网,优酷网,爆米花等视频网站采集
DedeCms模板安装/制作概述
网上商店系统巅峰对决 ECShop vs ShopE
编程中国全站采集规则
http://www.mt86.com全站采集规则
性福联盟 一个不尊重站长的联盟
百度网络广告利润增长将会持续多久
大脚:日赚100元—揭露最新firefox欺骗
分享经验:个人网站如何月赚1万!
大脚:垃圾站超级赚钱法之二—突破“站
迅雷联盟、快车联盟收入对比
大脚:垃圾站超级赚钱法之——前言
Google Adsense的秘密 第二版
风险投资公司vc联系方式名录大全(一)
经理人必看的十个管理网站
站长学院  网页设计 建站教程 图形图象 网络编程

制定完整的网站
制定完整的网站
中国企业网站的
中国企业网站的

网站运营之怎么样来粘住你的用
网麒:网站建设创意
怎样提高网页快照更新
两种方法,教你如何通过微软正
英文网站优化细节
利用SSL加密增强FTP服务器的安
网页设计常用Javascript经典代

新闻线索

如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13156089008