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

ActionScript
FLASH AS3与网页JS参数值传递的问题
Flash AS3的parameters对象处理网页参数
Flash教程 认识Flash ActionScript的环境
Flash ActionScript编程基础
Flash AS3代码实现鼠标跟随喷枪涂鸦效果
falsh 跨域调用配置
Flash AS3.0 实例教程 喷泉动画特效
AS3 Loader与URLLoader的比较
ColorTransform类调整显示对象的颜色值
Flash AS3 快速制作烟雾动画
Flash AS3 制作文字飞出动画
ActionScript 学习小心得
ActionScript3.0读取网页FlashVars中的参数的问题
通过实例学习AS3.0:案例三
通过实例学习Flash AS3.0:案例四
通过实例学习Flash AS3.0:案例五
通过实例学习Flash AS3.0:案例六
Flash教程:认识Flash ActionScript的环境
Flash as入门(1):认识AS面板
Flash as入门(3):AS基本语法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-19   浏览: 75 ::
收藏到网摘: 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 实行函数() {

}