本教本教程主要用Flash AS來編寫一個智力過河小游戲,全部使用AS代碼來實現,教程比較基礎,轉發過來,希望對大家有所幫助。
游戲規則:
一只大獅子,一只小獅子,一只大老虎、一只小老虎、一只大花豹,一只小花豹要到河對面去,只有大動物和小老虎會劃船,船每次只能乘兩只動物。大動物之間互相吃不了,小動物之間互相吃不了,如果大動物不在同類的小動物就會被異類大動物吃掉。
復制粘貼到第一幀,測試:
創建開始場景();
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 實行函數() {
}
教程結束,以上就是Flash AS代碼實現智力過河小游戲,希望大家喜歡本教程!