リプタクのもう覚えられません
Google
Web サイト内
topmemo ▶ 配列で障害物を作るサンプル

ActionScript

配列で障害物を作るサンプル

マトリクス状に作成した配列を元に障害物を作成するサンプル。

【サンプル】「←,→,↑,↓」キーでムービークリップ(赤)移動

JavaScriptを有効にし、最新のFlashPlayerをインストールお願いしますGet Adobe Flash player



考え方イメージ
配列で障害物イメージ

アクションスクリプト3.0




//---------------------------------------------------------------配列で障害物マップを作成
var ToT:Array = [
				 [0,0,1,0,0,0,0,0,0,0],//y=0 x=0〜9
				 [1,0,0,0,1,0,1,1,1,1],//y=1 x=0〜9
				 [0,0,1,0,1,1,1,0,0,0],//y=2 x=0〜9
				 [1,0,0,0,0,0,1,0,1,0],//y=3 x=0〜9
				 [1,0,1,0,1,0,0,0,1,0] //y=4 x=0〜9
				 ];


//---------------------------------------------------------------配列を調べて障害物を配置
var xxx:int;//配列取得用横マスカウンタ
var yyy:int;//配列取得用縦マスカウンタ

//配列の中身を確認してブロックを配置
while(yyy < ToT.length){
	
	//データに1があったら印を配置
	if(ToT[yyy][xxx] == 1){
		var shikaku_01_mc:Cra_Shikaku_01 = new Cra_Shikaku_01();//障害物オブジェクト
		stage.addChild(shikaku_01_mc);
		shikaku_01_mc.x = xxx * 50;
		shikaku_01_mc.y = yyy * 50;
	}
	
	//次のデータ確認にカウントアップ
	//xxxがmaxだったらxxx=0,yyy++ それ以外はxxx++
	if(xxx == ToT[yyy].length-1){
		xxx = 0;
		yyy ++;
	}else{
		xxx ++;
	}
}

//---------------------------------------------------------------マップ上を移動させる
var p_mc:CraBoxP = new CraBoxP();//プレイヤーオブジェクト
stage.addChild(p_mc);//プレイヤー配置
var moveLeng:int = 50;//一回で移動する長さ
var xxxP:int;//プレイヤーポジション横マス位置
var yyyP:int;//プレイヤーポジション縦マス位置

/*
考え方
1.押されたキーボードの先にデータがあるか確認
2.押されたキーボードの先に障害物がないか確認
3.条件クリアで移動処理
*/

stage.addEventListener(KeyboardEvent.KEY_DOWN,func_stage_KEY_DOWN);
function func_stage_KEY_DOWN(e:KeyboardEvent):void{
	
	switch (e.keyCode) {
		case 39 ://「→」
			if(xxxP != ToT[yyyP].length-1){
				if(ToT[yyyP][xxxP+1] == 0){
					p_mc.x += moveLeng;
					xxxP ++;
				}
			}
			break;
		case 37 ://「←」
			if(xxxP != 0){
				if(ToT[yyyP][xxxP-1] == 0){
					p_mc.x -= moveLeng;
					xxxP --;
				}
			}
			break;
		case 38 ://「↑」
			if(yyyP != 0){
				if(ToT[yyyP-1][xxxP] == 0){
					p_mc.y -= moveLeng;
					yyyP --;
				}
			}
			break;
		case 40 ://「↓」
			if(yyyP != ToT.length-1){
				if(ToT[yyyP+1][xxxP] == 0){
					p_mc.y += moveLeng;
					yyyP ++;
				}
			}
			break;
	}
	
}



last update 2011.2.18
参考・出典等
「特に無し」

▲page top

topmemogalleryblogtestaboutlinksmail
Copylight(C)2008-2010 Riptac. All Rights Reserved.