AS3でゲームを作成する その19 | Photoshop CC Tutorials
今回は画面をクリックし爆弾を置くと一秒後に爆弾が消えるプログラムです。

できあがりはこちらをクリック。

実行結果
$ピック社長のブログ

爆弾の画像です。
$ピック社長のブログ

画像を使用する場合はドット絵専門家のアルテミス職人の許可を取ってください。
アルテミス職人のサイト:http://ameblo.jp/yukineko-altemis/entry-11016380157.html

Main.as
package 
{
import flash.display.Sprite;
import flash.display.Graphics;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.text.TextFormat;

/**
* 爆弾ゲーム
*/
public class Main extends Sprite
{
// 描画エリア
private var pArea:Sprite = new Sprite();
private var margin:int = 50; // 余白

// 爆弾配列
private var bombArr:Array = new Array();

// マップ
private var map:Map = new Map();

// テキストエリア
private var textField_01:TextField;

public function Main():void
{
init();

// テキストフォント
var textformat:TextFormat = new TextFormat();
textformat.size = 13;
textformat.font = "_sans";
textformat.bold = true;

// 説明を表示
textField_01 = new TextField();
textField_01.defaultTextFormat = textformat;
textField_01.textColor = 0x000000;
textField_01.border = false;
textField_01.x = 150;
textField_01.y = 10;
textField_01.width = 300;
textField_01.height = 50;
textField_01.text = "爆弾ゲーム" + "\n" + "(爆弾を置いてください。)";
this.addChild(textField_01);

// リスナー登録
//----------------------------------
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
// マウスの左ボタンが押されたときに呼び出されるイベント
pArea.addEventListener(MouseEvent.MOUSE_DOWN, MouseLDownFunc);

//test();
}

private function test():void
{
var arr:Array = new Array();
arr.push(1);
arr.push(2);
arr.push(3);
//trace(arr.length);
arr.splice(0, 1);
//trace(arr.length);
for (var i:int = 0; i < arr.length; i++ ) {
trace(arr[i]);
}
}

private function init():void
{
pArea.graphics.beginFill(0xffffff);
pArea.graphics.drawRect(0,0,400,300);
pArea.graphics.endFill();
pArea.focusRect = false;
// 描画エリアの位置
pArea.x = 0;
pArea.y = margin;
this.addChild(pArea);
}

private function onEnterFrame(e:Event):void
{
pArea.graphics.clear();
pArea.graphics.beginFill(0xffffff);
pArea.graphics.drawRect(0,0,400,300);
pArea.graphics.endFill();

bombController(); // 爆弾操作
}

public function MouseLDownFunc(event:MouseEvent):void
{
// マウス座標を取得
var mx:int = mouseX / 32;
var my:int = (mouseY - margin) / 32;

if (map.mapArr[my][mx] != 1) { // 爆弾情報がマップに記録されていないなら
// 爆弾の座標を求める
var bomb_x:int = (mx % 32) * 32;
var bomb_y:int = (my % 32) * 32;

// 爆弾インスタンスを爆弾配列に格納する
var bomb:Bomb = new Bomb();
bombArr.push(bomb);
//bomb.bombFlag = true; // 爆弾点火
bomb.bitmap.x = bomb_x; // 爆弾座標
bomb.bitmap.y = bomb_y;
pArea.addChild(bomb.bitmap);

// マップに爆弾情報を記録
map.mapArr[my][mx] = 1;
}
}

private function bombController():void
{
if (bombArr.length != 0) {
for (var i:int = 0; i < bombArr.length; i++ ) {
bombArr[i].counter(); // 爆弾カウント
if (bombArr[i].count > 30) { // 爆弾カウンターが一秒たったなら
pArea.removeChild(bombArr[i].bitmap); // 描画エリアから爆弾を削除
map.mapArr[bombArr[i].bitmap.y / 32][bombArr[i].bitmap.x / 32] = 0; // 爆弾の情報を削除
bombArr.splice(0, 1); // 爆弾配列から削除
}
}
}
}
}

}


Bomb.as
package  
{
import flash.display.Bitmap;
import flash.display.Sprite;
/**
* 爆弾クラス
*/
public class Bomb
{
// 画像
[Embed(source = 'bomb.png')]
private var Image_01:Class;

public var bitmap:Bitmap; // 爆弾のビットマップ

public var count:int = 0; // 爆弾カウンター
//public var bombFlag:Boolean = false; // 爆弾点火フラグ

public function Bomb()
{
// 画像初期設定
bitmap = new Image_01;
}

// 爆弾カウンター
public function counter():void
{
count++;
}

}

}


Map.as
package  
{
/**
* マップクラス
*/
public class Map
{
public var mapArr:Array = [
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
];

public function Map()
{

}

}

}