-
您的位置:首页 → 网页设计 → Flash → Flash游戏制作--五子连珠(二)
Flash游戏制作--五子连珠(二)
时间:2004/11/7 2:23:00来源:本站整理作者:蓝点我要评论(0)
-
// 显示棋子
_root.display = "Xpos : " + (x + 1);
temp = chr ( y + 65);
_root.display1 = "Ypos : " + temp;
_root.playnow = "player";
//判断是否获胜
xx = x;
yy = y;
for (k=0; k<4; k++) {
if (_root.a_result <> 6) {
_root.a_result = 0;
x = xx;
y = yy;
while ((_root.table[y][x] == 2) and (y+_root.dir[k][1] < 16) and (x+_root.dir[k][0] >= -1) and (x+_root.dir[k][0] < 16) and (y+_root.dir[k][1] >= -1)) {
x = x + _root.dir[k][0];
y = y + _root.dir[k][1];
// "_root.table["+y+"]["+x+"]="+_root.table[y][x]
_root.a_result = _root.a_result+1;
}
x = xx;
y = yy;
while ((_root.table[y][x] == 2) and (y+_root.dir[k+4][1] < 16) and (x+_root.dir[k+4][0] >= -1) and (x+_root.dir[k+4][0] < 16) and (y+_root.dir[k+4][1] >= -1)) {
x = x + _root.dir[k+4][0];
y = y + _root.dir[k+4][1];
_root.a_result = _root.a_result+1;
}
if (_root.a_result == 6) {
_root.playnow = "nobody";
}
}
}
if (_root.playnow =="nobody") {
_root.gameoverman.gotoAndPlay(2);
}
}
C:新建一个Movie clip组件,并命名为bb,此组件用来计算电脑如何走棋,进入组件编辑状态后,在图层layer1绘制一个有填充色的矩形,然后在第5桢插入一个关键桢,在同样位置绘制一个大小相同填充色不同的矩形。新建一个图层,在矩形里输入提示文字:电脑走棋,然后再新建一个图层Action,在第一桢添加AS: stop();,在第8桢插入一个关键桢,在此桢添加如下AS:
if (_root.playnow == "computer") {
//初始化棋盘
_root.func.makelist("white");
_root.func.makelist("black");
//调用自定义函数
max_computer = 0;
max_player = 0;
k = 0;
//定义三变量
for (j=0; j<15; j++) {
for (i=0; i<15; i++) {
for (k=0; k<4; k++) {
if (_root.computer[j*15+i][k] == max_computer) {
rndnum = random ( 100 ) + 1;
if (rndnum > 50) {
max_computer = _root.computer[j*15+i][k] ;
xc = i;
yc = j;
}
}
if (_root.computer[j*15+i][k] > max_computer) {
max_computer = _root.computer[j*15+i][k] ;
xc = i;
yc = j;
}
if (_root.player[j*15+i][k] > max_player) {
max_player = _root.player[j*15+i][k] ;
xp = i;
yp = j;
}
}
}
}
if (max_computer > max_player) {
x = xc;
y = yc;
} else {
x = xp;
y = yp;
}
// 绘制棋子
num = y * 15 + x;
removeMovieClip(_root.b add num);
duplicateMovieClip(_root.white, "white" add num, num + 300);
setProperty(_root.white add num, _x, 34.7 + x * 20);
setProperty(_root.white add num, _y, 34.7 + y * 20);
_root.table[y][x] = 2;
// 显示棋子
_root.display = "Xpos : " + (x + 1);
temp = chr ( y + 65);
_root.display1 = "Ypos : " + temp;
_root.playnow = "player";
// 判断是否获胜
xx = x;
yy = y;
for (k=0; k<4; k++) {
if (_root.a_result <> 6) {
_root.a_result = 0;
x = xx;
y = yy;
while ((_root.table[y][x] == 2) and (y+_root.dir[k][1] < 16) and (x+_root.dir[k][0] >= -1) and (x+_root.dir[k][0] < 16) and (y+_root.dir[k][1] >= -1)) {
x = x + _root.dir[k][0];
y = y + _root.dir[k][1];
// "_root.table["+y+"]["+x+"]="+_root.table[y][x]
_root.a_result = _root.a_result+1;
}
x = xx;
y = yy;
while ((_root.table[y][x] == 2) and (y+_root.dir[k+4][1] < 16) and (x+_root.dir[k+4][0] >= -1) and (x+_root.dir[k+4][0] < 16) and (y+_root.dir[k+4][1] >= -1)) {
x = x + _root.dir[k+4][0];
y = y + _root.dir[k+4][1];
_root.a_result = _root.a_result+1;
}
if (_root.a_result == 6) {
_root.playnow = "nobody";
}
}
}
// 游戏结束
if (_root.playnow =="nobody") {
_root.gameoverman.gotoAndPlay(2);
}
}
最后的时间线如图6所示:
图6
D:再新建一个movie clip组件,命名为buttonclip,此组件用来控制双方的落子,进入组件编辑状态后,将前面做好的隐形按钮拖放到编辑区中,然后给第一桢添加AS:stop();.
E:最后再制作一个movie clip,命名为gameover,此组件用来判断游戏是否结束,也就是判断是缶有一方已经连好了五颗棋子。进入组件编辑状态后,连续建立四个图层,分别为layer1,layer2,layer3和action,在layer1,layer2,layer3的第一桢插入空白,然后在第2桢绘制电脑获胜的提示信息,并将Replay按钮拖到编辑区中,给按钮添加As:
on (release) {
gotoAndPlay("endit");
}
如图7所示:
图7
在layer1,layer2,layer3的第三桢按照同样的方法设置您胜利的提示信息,如图8所示:
图8
然后回到图层action,接下来就要添加具体的控制Action了,在此图层的前三个关键桢分别添加as: stop();,在第四关键桢添加如下AS:
for (i=0; i<=225; i++) {
removeMovieClip(_root.black add i);
removeMovieClip(_root.white add i);
removeMovieClip(_root.b add i);
}
//清除棋盘上的棋子
_root.gotoAndPlay("run");
//跳转到游戏的开始
最后的时间线如图9所示:
图9
布置主场景:
游戏的主要工作完成后,接下来需要布置主场景了。
首先使用绘图工具绘制出游戏中的棋盘,棋盘大小为15*15的矩阵,然后给棋盘标上横向和纵向的标识,如图10所示:
图10
分别将组件white,black,buttonclip,blk,bb和gameover拖到舞台的合适位置,如图11所示:
图11
组件white的实例名为:black
组件black的实例名为:white
组件buttonclip的实例名为:b
组件blk的实例名为:func
组件bb的实例名为:computerrun
组件gameover的实例名为:gameoverman
然后在棋盘上绘制两个Dynamic text动态文本框,用来显示上一步落子的位置,分别设置变量名为display和display1。
最后,给第一关键祯添加as:
stop();
urls = "边城浪子-闪客帝国";
num = 0;
table = new Array();
computer = new Array();
player = new Array();
a_result = 0;
// Table array
for (i=0; i<15; i++) {
table[i] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
}
// Computer and player table list
for (j=0; j<15; j++) {
for (i=0; i<15; i++) {
computer[j*15+i] = new Array(0,0,0,0);
player[j*15+i] = new Array(0,0,0,0);
}
}
// Make buttons
count = 0;
for (j=0; j<15; j++) {
for (i=0; i<15; i++) {
duplicateMovieClip(_root.b, "b"add count, count + 30);
setProperty("b"add count, _x, 34.7 + i * 20);
setProperty("b" add count, _y, 34.7 + j * 20 );
count++;
}
}
// Eight directions
var dir = new Array();
dir[0] = new Array(1,0);
dir[1] = new Array(1,1);
dir[2] = new Array(0,1);
dir[3] = new Array(-1,1);
dir[4] = new Array(-1,0);
dir[5] = new Array(-1,-1);
dir[6] = new Array(0,-1);
dir[7] = new Array(1,-1);
playnow = "player";
removeMovieClip(_root.b112);
duplicateMovieClip(_root.white, "white112", 142);
setProperty("white112", _x, 174.7);
setProperty("white112", _y, 174.7);
// The first black point
table[7][7] = 2;
到此为止,五子连珠这个游戏就制作完成了,本游戏属于较高级的游戏制作,需要有一定的Action编程基础,不过如果您对Action不太了解,相信学完本实例后,可以在一定程度上提高您的Action水平。
相关阅读
Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
-
热门文章
没有查询到任何记录。
最新文章
Flash CS4基础入门
如何在Flash中打开一个定制的浏览器新窗口?学习ActionScript 3.0的6个好处几个小技巧精简Flash文件体积在Flash动画中添加“加为收藏”和“设为首页
人气排行
Flash游戏制作--小熊拼图用Flash实现几种镜头效果Flash制作动画知识:遮罩Flash如何做鼠标指针样式Flash制作环形文字Flash制作声情并茂的电子相册实例讲解flashMTV制作全过程(3)鼠标效果系列教程:游动的鱼
查看所有0条评论>>