关闭

flash as3.0 五子棋的游戏制作

938人阅读 评论(1) 收藏 举报
分类:

主界面的截图
五子棋主界面
游戏玩法:
五子连珠这个游戏需要由两位选手一起来完成,其中一位是电脑,电脑在游戏中使用黑棋比赛,您在游戏中使用白棋进行比赛,游戏的目的是尽量将自己的棋在棋盘上排列成五颗棋子连在一起的直线,水平方向,垂直方向或者斜向都可以,但是不能有拐点,必须是一条直线,哪一方先连好,则胜利。玩家在游戏中一方面要尽量将自己的棋子连起来,另一方面也需要阻碍对手进行连子,不让对手轻易的将棋子连起来,直到有一方先连好五颗棋子,则游戏结束。游戏中为了防止一方没有看清对方上一步的落子位置,在棋盘的右上角将显示上一步的落子位置,棋子的位置根据棋盘上的横纵标识来决定(横向为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++;
}

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

3
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

基于Java的“多功能五子棋”游戏的设计和实现

基于Java的“多功能五子棋”游戏的设计和实现 引言       随着经济社会的迅速发展,人们生活水平有了很大的提高,人们的生活观念也发生了巨大的改 变。高品质的生活、现代化得生活方式成为人们共同追求...
  • clx55555
  • clx55555
  • 2016-12-09 19:26
  • 2283

Win32游戏制作之---五子棋的简单设计

想必每个人都玩过五子棋,其实对于我而言,五子棋是小时候玩的最多的棋类游戏,当然小时候也爱玩象棋以及国际象棋之类的,不过由于五子棋比较简单,所以就先实现一个简单的人机五子棋。最近我就在想如今学会了一点编...
  • Loving_Forever_
  • Loving_Forever_
  • 2016-07-17 00:05
  • 3461

C++应用:简易五子棋游戏

在实现五子棋小游戏时,首先应该分为棋盘和玩家,我们先定义两个类:chessboard、player。分别提供棋盘的构造和玩家及游戏规则的确定。下面我们看下代码:chessboard.h: 对棋盘che...
  • Dandelion_gong
  • Dandelion_gong
  • 2016-04-17 21:44
  • 8214

分享基于Flash AS 3.0制作五子棋的故事

【首先,很感谢每一位看这份博客的侠客。本人编程小白,刚刚上路,希望各路高手可以多多提宝贵意见。】 1,作品: 基于Flash AS3.0 语言的简单五子棋制作 2,流程: 要熟悉flash cs6的工...
  • ljw_Josie
  • ljw_Josie
  • 2015-10-20 15:18
  • 1342

Flash as3.0制作的打字测试小游戏源码。

  • 2015-12-02 14:12
  • 12KB
  • 下载

Flash as3.0制作的格斗之路小游戏源码。

  • 2015-12-02 13:53
  • 176KB
  • 下载

五子棋游戏制作的详细思路及原理

五子棋设计思路文档 一、程序设计原理、目的以及算法 运用java swing和awt框架实现五子棋的绘图,按钮的事件响应等功能。主要分为三个类:主要UI类、棋子类、以及棋盘类。在原有的五子棋的基础...
  • AJo07JamSider
  • AJo07JamSider
  • 2018-01-07 01:36
  • 69

javascript五子棋游戏制作(-)

闲着无事,使用jquery和js写写五子棋游戏,帮各位拍砖呀。 准备工作: 下载jQuery包。 1、制作房间: Jsp页面 <% String path =...
  • psyuhen
  • psyuhen
  • 2012-10-28 18:13
  • 2744

javascript五子棋游戏制作(二)

上一篇文章:javascript五子棋游戏制作(一) 上一篇文章的抛砖引玉,希望大家拍砖! 下面来第二篇: 设计原理: 房间——》桌子——》椅子——》准备——》开始——结束。 ...
  • psyuhen
  • psyuhen
  • 2012-10-30 20:49
  • 2397

游戏制作第三棒——有界面版五子棋

这次的五子棋应用了上次的算法,但是添加了界面。  package chesses; import javax.swing.*; import java.awt.*; import java.a...
  • My_ACM_Dream
  • My_ACM_Dream
  • 2014-11-14 16:50
  • 581
    个人资料
    • 访问:9124次
    • 积分:254
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类