当前位置: 首页 > 图文教程 > Flash动画 > ActionScript > Flash AS实例:智力过河小游戏源代码

ActionScript
FLASH 3D相册之利用BitmapData类制作
Flash 脚本游戏开发教程 第一课
Flash 脚本游戏开发教程第二课
Flash 脚本游戏开发教程第三课
Flash 脚本游戏开发教程第四课
Flash 脚本游戏开发教程第五课
Flash 脚本游戏开发教程第六课
Flash 脚本游戏开发教程第七课
Flash 脚本游戏开发教程第八课
Flash AS实现的蝌蚪摆尾动画的教程
从基础开始深入学Flash AS3教程(4)(译文)
从基础开始深入学Flash AS3教程(5)(译文)
从基础开始深入Flash AS3教程(2)(译文)
从基础开始深入学Flash AS3教程(3)(译文)
Flash AS3对单个图片进行角色动作化处理
从基础开始深入Flash AS3教程(1)(译文)
Flash教程:if条件语句的用法
Flash AS教程:_visible属性的详细讲解
Flash AS教程:图片环绕旋转效
Flash教程:trace()的使用

ActionScript 中的 Flash AS实例:智力过河小游戏源代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-19   浏览: 79 ::
收藏到网摘: n/a

游戏规则:
      一只大狮子,一只小狮子,一只大老虎、一只小老虎、一只大花豹,一只小花豹要到河对面去,只有大动物和小老虎会划船,船每次只能乘两只动物。大动物之间互相吃不了,小动物之间互相吃不了,如果大动物不在同类的小动物就会被异类大动物吃掉。

复制粘贴到第一帧,测试:

创建开始场景();

function 创建开始场景() {

创建TXT_MC(this, "游戏名", "智力过河", 200, 100, 300, false);

创建TXT_MC(this, "游戏开始", "游戏开始", 250, 200, 100, true);

创建TXT_MC(this, "游戏说明", "游戏说明", 250, 250, 100, true);

游戏开始.onPress = function() {

删除开始场景();

创建游戏场景();

};

游戏说明.onPress = function() {

删除开始场景();

创建说明场景();

};

}

function 删除开始场景() {

游戏名.removeMovieClip();

游戏开始.removeMovieClip();

游戏说明.removeMovieClip();

}

function 删除说明场景() {

规则.removeMovieClip();

说明.removeMovieClip();

游戏开始.removeMovieClip();

}

function 创建说明场景() {

var 内容 = "一只大狮子,一只小狮子,一只大老虎、一只小老虎、一只大花豹,"+"\n"+"一只小花豹要到河对面去,只有大动物和小老虎会划船,船每次只能乘"+"\n"+"两只动物。大动物之间互相吃不了,小动物之间互相吃不了,如果大动"+"\n"+"物不在同类的小动物就会被异类大动物吃掉。";

创建TXT_MC(this, "规则", "游戏规则", 230, 50, 150, false);

创建TXT_MC(this, "说明", 内容, 50, 100, 120, false);

创建TXT_MC(this, "游戏开始", "游戏开始", 250, 200, 100, true);

游戏开始.onPress = function() {

删除说明场景();

创建游戏场景();

};

}

function 创建TXT_MC(路径, 名称, 文本, 坐标X, 坐标Y, 大小, 框) {

var MC = 路径.createEmptyMovieClip(名称, 路径.getNextHighestDepth());

MC._x = 坐标X;

MC._y = 坐标Y;

MC._xscale = MC._yscale=大小;

var TXT = MC.createTextField("TXT", 0, 0, 0, 0, 0);

TXT.text = 文本;

TXT.selectable = false;

TXT.autoSize = true;

if (框 == true) {

MC.onRollOver = function() {

this.TXT.border = true;

this.onReleaseOutside = this.onRollOut=function () {

this.TXT.border = false;

};

};

}

return MC;

}

this.createEmptyMovieClip("遮照MC", this.getNextHighestDepth());

function 创建游戏场景() {

var 船上成员 = [];

var 左岸 = ["大狮子", "小狮子", "大老虎", "小老虎", "大花豹", "小花豹"];

this.createEmptyMovieClip("左岸MC", this.getNextHighestDepth());

创建河流();

this.createEmptyMovieClip("码头MC", this.getNextHighestDepth());

画方块(码头MC, 0, 348, 94, 50, true);

画方块(码头MC, 454, 348, 94, 50, true);

this.createEmptyMovieClip("提示MC", this.getNextHighestDepth());

左岸MC._y = 100;

左岸MC._x = 20;

for (var i = 0; i<左岸.length; i++) {

if (i%2 == 0) {

var MC = 创建TXT_MC(左岸MC, 左岸[i], 左岸[i], 0, 40*i, 100, true);

MC.名字 = MC._name;

MC.划船 = true;

MC.方位 = "左岸";

MC.大小 = "大";

} else {

var MC = 创建TXT_MC(左岸MC, 左岸[i], 左岸[i], 0, 40*i, 100, true);

MC.名字 = MC._name;

MC.划船 = false;

MC.方位 = "左岸";

MC.大小 = "小";

}

MC.onPress = function() {

if (船上成员.length == 2) {

提示信息("船上不能再乘座更多的动物了");

}

if (船上成员.length<2 && 船MC.行动 == false && this.方位 == 船MC.状态) {

this._visible = false;

this.方位 = "船上";

船上成员.push(this);

eval("船仓"+船上成员.length).TXT.text = this.名字;

}

};

}

左岸MC["小老虎"].划船 = true;

this.createEmptyMovieClip("船MC", this.getNextHighestDepth());

船MC._y = 360;

船MC._x = 100;

船MC.Y = 0;

船MC.状态 = "左岸";

船MC.行动 = false;

船MC.速度 = 20;

画船(船MC);

创建TXT_MC(船MC, "TXT", "===>>", 40, -2, 100, false);

船MC.onPress = function() {

if (this.行动 == false && 是否能划船(船上成员) && 能否呆船上(船上成员) && 岸上(this.状态)) {

this.行动 = true;

船移动(this);

}

};

创建TXT_MC(this, "船仓1", "", 船MC._x+35, 船MC._y-20, 100, true);

创建TXT_MC(this, "船仓2", "", 船MC._x+35, 船MC._y-40, 100, true);

船仓1.onPress = function() {

if (船MC.状态 == "左岸") {

左岸MC[this.TXT.text]._visible = true;

左岸MC[this.TXT.text]._x = 0;

左岸MC[this.TXT.text].方位 = "左岸";

删除(船上成员, this.TXT.text);

this.TXT.text = 船仓2.TXT.text;

船仓2.TXT.text = "";

}

if (船MC.状态 == "右岸") {

左岸MC[this.TXT.text]._visible = true;

左岸MC[this.TXT.text]._x = 480;

左岸MC[this.TXT.text].方位 = "右岸";

删除(船上成员, this.TXT.text);

this.TXT.text = 船仓2.TXT.text;

船仓2.TXT.text = "";

var n = 0;

for (var i in 左岸MC) {

if (左岸MC[i].方位 == "右岸") {

n++;

if (n == 6) {

提示信息("地球已经不适合你居住"+"\n"+"快去上火星去吧!!");

创建结束画面();

return;

}

}

}

}

};

船仓2.onPress = function() {

if (船MC.状态 == "左岸") {

左岸MC[this.TXT.text]._visible = true;

左岸MC[this.TXT.text]._x = 0;

左岸MC[this.TXT.text].方位 = "左岸";

删除(船上成员, this.TXT.text);

this.TXT.text = 船仓2.TXT.text;

船仓2.TXT.text = "";

}

if (船MC.状态 == "右岸") {

左岸MC[this.TXT.text]._visible = true;

左岸MC[this.TXT.text]._x = 480;

左岸MC[this.TXT.text].方位 = "右岸";

删除(船上成员, this.TXT.text);

this.TXT.text = 船仓2.TXT.text;

船仓2.TXT.text = "";

}

};

返回开始();

}

function 画船(MC) {

MC.lineStyle(0, 0);

MC.moveTo(0, 0);

MC.lineTo(10, 15);

MC.lineTo(100, 15);

MC.lineTo(110, 0);

MC.lineTo(0, 0);

}

function 船移动(MC) {

MC.onEnterFrame = function() {

this._x += this.速度;

船仓1._x += this.速度;

船仓2._x += this.速度;

this.状态 = "航行";

if (this._x>=340) {

this.行动 = false;

this.速度 *= -1;

this.TXT.TXT.text = "<<===";

this.状态 = "右岸";

delete this.onEnterFrame;

}

if (this._x<=100) {

this.行动 = false;

this.速度 *= -1;

this.TXT.TXT.text = "===>>";

this.状态 = "左岸";

delete this.onEnterFrame;

}

};

}

function 是否能划船(数组) {

for (var i = 0; i<数组.length; i++) {

if (数组[i].划船 == true) {

return true;

}

}

提示信息("这条船上没有能划船的动物");

return false;

}

function 能否呆船上(数组) {

if (数组.length == 2) {

var TXT0 = 数组[0].名字;

var TXT1 = 数组[1].名字;

if (数组[0].大小 == 数组[1].大小 || TXT0.substring(1, 3) == TXT1.substring(1, 3)) {

return true;

}

} else {

return true;

}

提示信息("船上的大动物会吃掉小动物");

return false;

}

function 岸上(岸) {

//这个算法不好`实在想不出其他的好算法

var 大数组 = new Array();

var 小数组 = new Array();

for (var i in 左岸MC) {

if (左岸MC[i].方位 == 岸) {

if (左岸MC[i].大小 == "大") {

大数组.push(左岸MC[i]._name.substring(1, 3));

}

if (左岸MC[i].大小 == "小") {

小数组.push(左岸MC[i]._name.substring(1, 3));

}

}

}

var 小记数 = 小数组.length;

var 大记数 = 大数组.length;

if (小记数<=0) {

return true;

}

if (大记数<=0) {

return true;

}

var 记数 = 0;

for (var i = 0; i<小记数; i++) {

var 对象 = 小数组[i];

for (var n = 0; n<大记数; n++) {

if (对象 == 大数组[n]) {

记数++;

break;

}

}

}

if (记数 == 小记数) {

return true;

} else {

提示信息("岸上的大动物会吃掉小动物");

return false;

}

}

function 删除(数组, 对象) {

for (var i = 0; i<数组.length; i++) {

if (数组[i].名字 == 对象) {

数组.splice(i, 1);

return true;

}

}

}

function 画方块(MC, X, Y, 宽, 高, 填充) {

if (填充 == true) {

MC.beginFill(0xFFFFFF, 100);

}

MC.lineStyle(0, 0);

MC.moveTo(X, Y);

MC.lineTo(X+宽, Y);

MC.lineTo(X+宽, 高+Y);

MC.lineTo(X, 高+Y);

MC.lineTo(X, Y);

MC.endFill();

}

function 创建河流() {

var 河水= "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

var MC = 创建TXT_MC(this, "河流", 河水, 0, 365, 100, false);

MC.X = 0;

MC.onEnterFrame = function() {

this._x += Math.cos(this.X)*1;

this.X += 0.1;

};

}

function 提示信息(内容) {

提示MC.clear();

画方块(提示MC, 180, 50, 200, 70);

提示MC.计时 = 0;

提示MC["提示"].removeMovieClip();

提示MC.onEnterFrame = function() {

if (this.计时 == 0) {

this._visible = true;

创建TXT_MC(提示MC, "提示", 内容, 提示MC._x+190, 提示MC._y+70, 115, false);

} else if (this.计时>30) {

this._visible = false;

delete onEnterFrame;

}

this.计时++;

};

}

function 创建结束画面() {

左岸MC.removeMovieClip();

船MC.removeMovieClip();

}

function 返回开始() {

创建TXT_MC(_root, "开始", "重新"+"\n"+"开始", 490, 360, 100, true);

开始.onPress = function() {

loadMovie(_url, _root);

};

}

画方块(遮照MC, 0, 0, 550, 400, true);

_root.setMask(遮照MC);

画方块(this, 0, 0, 548, 398, false);

////////////////////////////////////////////////////////////

var 菜单 = new ContextMenu();

菜单.hideBuiltInItems();

var QQ = new ContextMenuItem("QQ:31559783", 实行函数);

QQ.separatorBefore = true;

菜单.customItems.push(QQ);

this.menu = 菜单;

function 实行函数() {

}