主界面的截图

游戏玩法:
五子连珠这个游戏需要由两位选手一起来完成,其中一位是电脑,电脑在游戏中使用黑棋比赛,您在游戏中使用白棋进行比赛,游戏的目的是尽量将自己的棋在棋盘上排列成五颗棋子连在一起的直线,水平方向,垂直方向或者斜向都可以,但是不能有拐点,必须是一条直线,哪一方先连好,则胜利。玩家在游戏中一方面要尽量将自己的棋子连起来,另一方面也需要阻碍对手进行连子,不让对手轻易的将棋子连起来,直到有一方先连好五颗棋子,则游戏结束。游戏中为了防止一方没有看清对方上一步的落子位置,在棋盘的右上角将显示上一步的落子位置,棋子的位置根据棋盘上的横纵标识来决定(横向为1-15,纵向为1-15)。
游戏制作思路:
将五子棋的棋盘上在二维数组中进行记录,先在通过不同的位置的数字来记录棋子的类型。人工智能的解决思路,通过不同方向的分数记录和比较来确定棋子下落的位置。
游戏制作步骤:
1:素材的导入
依次导入所有的素材到flash的库中,依次将需要的素材设置为按钮、影片剪辑等元件。将元件添加到合适的位置(如主界面图所示)。
2:“开始”,“结束”按钮的制作
start_mc.addEventListener(MouseEvent.CLICK,start_mcclick);//开始游戏
function start_mcclick(e:MouseEvent)
{
start_mc.visible=false;
end_mc.visible=true;
blackground.visible=false;
var i,j:int;
for(i=0;i<15;i++){
for(j=0;j<15;j++){
chessborad1.chessman[i][j]=0;//将棋盘二维数组全部初始化为0
}
}
zhan_mc.visible=false;//将对战的影片剪辑不可视
blackwin_mc.visible=false;//将黑色赢的影片剪辑不可视
whitewin_mc.visible=false; //将白色赢的影片剪辑不可视
}
3:棋子的下落实现
代码:
var x1:int,y1:int,n:int;
x1=(event.stageX-65)/30;
y1=(event.stageY-75)/30;
if(chessborad1.chessman[x1][y1]==0)
{
var qia:MovieClip=new MovieClip;
if(chessborad1.nowchess==1)//黑色方走棋
{
qia=new black();
chessborad1.chessman[x1][y1]=1;
chessborad1.nowchess=2;
}
else//白色走棋
{
qia=new white();
chessborad1.chessman[x1][y1]=2;
chessborad1.nowchess=1;
}
qia.x=73+(30*(x1));
qia.y=85+(30*(y1));
aChessman.push(qia);
addChild(qia);
checkwinner(x1,y1,chessborad1.chessman[x1][y1]);
}
首先通过获取点击棋盘上的像素点,通过像素点的X,Y的值计算该点对应的棋盘的坐标值。
qia=new black();通过addChild(qia);绘制棋子到棋盘上。aChessman.push(qia);将棋子存到栈中方便接下来制作的悔棋和清盘的功能。
4:输赢的判断
输赢的判断我想到过两种方法,一种是直接全局遍历把棋盘的坐标依次遍历一遍,一种是先获取点击的坐标点,判断该点的横竖左斜右斜的四个方向是否存在五子连棋。
(00)(01)(02)(03)
(10)(11)(12)(13)
(20)(21)(22)(23)
(30)(31)(32)(33)
在思考后发现的规律,假设我点击了(21)点那么最左边的坐标为(20)最上边(01)左斜(10)右斜(30) 。可以想到在横竖方向的起始坐标都可以轻易的找到可是在在左斜的起始点就没有那么简单了。可是,仔细观察后可以发现左斜的方向又可以看成(X+Y,0)。
在找到初始的点后就可以遍历该直线上是否出现五子相连。
function checkwinner(xp:int,yp:int,side:int)//胜负检查函数
{
var i:int =0;
var j:int =0;
var n:int =0;
var c:int =0;
var winner:int = 0;
//x方向
for(i=0;i<15;i++)
{
if(chessborad1.chessman[i][yp]==side)
{
n++;
if(n==5){
winner=side;break;
}
}
else {n=0;}
}

//y
for(i=0;i<15;i++)
{if(chessborad1.chessman[xp][i]==side){n++;if(n==5){winner=side;break;}}else {n=0;}
}
//斜方向
n=0;
for(c=9;c>=0;c--)
{for(i=0,j=c;j<15;i++,j++){if(chessborad1.chessman[i][j]==side){n++;if(n==5){winner=side;break;}}else {n=0;}}
}
n=0;
for(c=9;c>0;c--)
{for(i=c,j=0;i<15;i++,j++){if(chessborad1.chessman[i][j]==side){n++;if(n==5){winner=side;break;}}else {n=0;}}
}
//右斜上方向
n=0;
for(c=4;c<15;c++)
{for(i=0,j=c;j>=0;i++,j--){if(chessborad1.chessman[i][j]==side){n++;if(n==5){winner=side;break;}}else {n=0;}}
}
n=0;
for(c=9;c>0;c--)
{for(i=c,j=14;i<15;i++,j--){if(chessborad1.chessman[i][j]==side){n++;if(n==5){winner=side;break;}}else {n=0;}}
}
if(winner==1){
trace("黑方胜利");
blackwin_mc.visible=true;
chessborad1.nowchess=0;
blackground.visible=true;
score1++;}
if(winner==2){
trace("白色胜利");
whitewin_mc.visible=true;
blackground.visible=true;
chessborad1.nowchess=0;
score2++;
}

}
现在人人对战的五子棋基本上实现了,虽然中间的过程充满困难但总是能够完成的。依稀博主晚上做的梦还梦到了五子棋。第一次靠自己的能力去一步一步实现一个小游戏,满满的成就感。人机对战就在下一篇实现。

flash as3.0 五子棋的游戏制作相关推荐

  1. Flash AS3.0实战

    如今网页游戏在游戏产业中占有半壁江山.在网页游戏中,百分之九十使用的是flash as3来做前端交互的开发.flash以其体积小等特性,吸引了无数的玩家.比如<傲剑>,<神仙道> ...

  2. Flash AS3.0实例教程:构建简单的声音可视化程序(波型图)

    本例为Flash AS3.0实例教程,在教程中我们将学习运用SoundMixer.computeSpectrum() 方法来构建简单的声音可视化程序(即波形图),希望能给朋友们带来帮助~~ AS3.0 ...

  3. flash as3.0 图片切换

    flash as3.0 图片切换 flash import fl.transitions.*; import fl.transitions.easing.*; import flash.system. ...

  4. Flash As3.0 游戏开发小结

    转自: http://blog.csdn.net/chongtianfeiyu/article/details/8096446 ActionScript3.0(以下简称AS3.0)开发flash游戏目 ...

  5. Flash AS3.0中文帮助下载

    AS3.0和Flash Video Encoder的中文帮助终于出来了.       这是我们学习和开发的好帮手,决不能错过.      官方的下载地址(PDF格式):                 ...

  6. flash html游戏开发,flash游戏制作|Flash AS3.0教你射击类游戏的制作_好特教程

    解析打飞机游戏的制作过程 (一) 演示: 这款游戏可能大家都玩过.敌机在蓝天上来回飞行,左右箭头键控制火炮在草地上左右移动.按下空格键发射子弹,击中敌机后,敌机爆炸.得分:记录击中的敌机数.剩余子弹: ...

  7. Flash(as3.0) CScreen

    package com.game.mr{import flash.display.*;import flash.events.*;// 游戏屏幕管理 v1.0 by mr&exepublic ...

  8. 基于 flash AS3.0 的BASE64编码与解码类

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://programmer.blogbus.com/logs/36436446.html 在国外网站上淘到一个很好用的AS3的 ...

  9. flash(as3.0)在线聊天室

    package {import flash.display.*;import flash.net.*;import flash.events.*;import flash.utils.*;import ...

最新文章

  1. 在Ubuntu 14.04 64bit上安装网易云音乐Linux版本(最新官方版)
  2. 串口 发送 接收 高位_电工进阶PLC大神,必备PLC串口通讯的基本知识!
  3. 转载:分享一下免费的ppt网站(好看,免费)
  4. 怎样使用计算机上的高级共享设置密码,win7系统电脑,如何设置共享,共享计算机的用户名和密码怎样设置...
  5. 【cocos2d-x 手游研发----地图活起来了】
  6. 快速解析大xml报文
  7. 验证软件需求正确性的四个角度
  8. 实战课堂:为什么更换存储之后一切正常但RAC集群启动不了?
  9. java重定向post_java实现响应重定向发送post请求操作示例
  10. Python---列表与元组
  11. 基于Raspbian(树莓派)搭建web安全练习环境(一)
  12. POJ3982 序列【大数】
  13. Choerodon 的微服务之路(二):Choerodon 的微服务网关
  14. Linux下socket-文件传输
  15. 【转】ASP.NET AJAX入门系列(9):使用ScriptManager控件
  16. MIUI11线刷包精简
  17. uml活动图 各个功能的操作流程和分支_uml活动图
  18. win10怎么更新显卡驱动_Intel发布核显新驱动:支持Win10 H2更新、11代酷睿狂喜-Intel,核显,驱动,Win10 ——快科技(驱动之家旗下媒体)-...
  19. 投影坐标系、大地坐标系(地理坐标系)
  20. pdd暑期实习生机试1

热门文章

  1. 【IoT】 产品设计:微信小程序如何适配不同机型
  2. ABBYY FineReader非15版16版注册机序列号秘钥下载版,安装使用教程详解
  3. prezi2展示思维的总结
  4. 解决xshell中小键盘乱码的情况
  5. cics中间件考试_CICS常用命令
  6. 除了Fiddler工具之外,其他常见的抓包工具(Charles、Wireshark)
  7. 2021龙川隆师中学高考成绩查询入口,2020重庆高考成绩查询系统入口官网
  8. C语言实现计算IPV6的subnet_id
  9. 日常生活中要怎么记账
  10. 【人工智能】模糊逻辑基本原理