ブログ

ぷよぷよを作りたい
memo

セガのサイトからソースをダウンロードして作ってみた。 ぷよぷよ動作検証

ビューポート
name属性を「viewport」と指定すると、モバイルデバイスのビューポートに関する設定を行うことができます。
<meta name="viewport" content="width = device-width">

デバイスの画面サイズにあわせてページを表示するために最低限設定する必要がある。

http-equiv 属性で示すことができるメタデータ
  • Content-Security-Policy : コンテンツセキュリティポリシー
  • Content=”default-src”
//ビューポート
<meta name="viewport" content="width=device-width, initial-scale=1,
maximum-scale=1, user-scalable=no">

//
<meta http-equiv="Content-Security-Policy" content="default-src * data: gap:
content: https://ssl.gstatic.com; style-src * 
'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
『劇場版「オーバーロード」聖王国編』本予告|9月20日(金)全国ロードショー
memo

TVアニメシリーズも4期まで放送されたオーバーロード。今週末に近所の映画館で見てこようと思います。楽しみ。

数値計算について
ActionScript

数値計算の方法をまとめてみた。

var a:Number = -2.3;
var b:Number = 2.6;
var c:Number = 5.4;
var d:Number = 5.7;
//切り捨て
trace(Math.floor(a)); //出力:-3
trace(Math.floor(b)); //出力:2
trace(Math.floor(c)); //出力:5
trace(Math.floor(d)); //出力 : 5
//切り上げ
trace(Math.ceil(a)); //出力:-2
trace(Math.ceil(b)); //出力:3
trace(Math.ceil(c)); //出力:6
trace(Math.ceil(d)); //出力 : 6
//四捨五入
trace(Math.round(a)); //出力:-2
trace(Math.round(b)); //出力:3
trace(Math.round(c)); //出力:5
trace(Math.round(d)); //出力 : 6
切り捨て
floor()

整数部分をそのまま残し、小数点以下を0とする丸めを「切り捨て」という。

切り上げ
ceil()

小数点以下が0でなかった場合整数部分を1増やし、小数点以下を0とする丸めを「切り上げ」という。

四捨五入
round()

端数が0.5未満なら切り捨て、0.5以上なら切り上げる「半数切り上げ」の丸めを「四捨五入」という。

演算子?:を使った条件分岐
条件式がTRUEならば値が1、条件式がFALSEならば値2を返します。

書式
条件式 ? 値1 : 値2;

//大きい方の値をCに代入する
var a:int = 60;
var b:int = 90;
var c:int = (a > b) ? a : b;
trace(c); //出力 90
画面がカクツクので描画はステージに貼り付けることにした。
ActionScript

当初シンボルを背景に表示する方法を採用したのだが、なぜかプレイヤーの操作がカクツク事象が発生することがわかったので、残念ながら背景ブロックの表示はステージにムービークリップを貼り付けることにした。
画面サイズ: 650px × 350px
プレイヤー画像サイズを修正 → 40px × 40px
プレイヤー移動範囲
横幅: 70px ~ 580px
縦幅: 20px ~ 280px

//変数宣言
//キャラクターサイズ
var vx: int = 0;
var vy: int = 0;
var pixel: int = 50;
var player_pixel = 40;
var playerHalfWidth: int = 20;
var playerHalfHeight: int = 20;
var speed: int = 10;
var panel_width: int = 13;
var panel_height: int = 7;
var newX: int, newY: int;
var mx1: int, my1: int;
var mx2: int, my2: int;
var mx3: int, my3: int;
var mx4: int, my4: int;
var d: uint = 5;
var gravity: int = 10;
var jump:int = 20;
var maze: Array = [
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
];

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);

function keyDownHandler(eventObj: KeyboardEvent): void {
	switch (eventObj.keyCode) {
		case Keyboard.RIGHT:
			vx = speed;
			break;
		case Keyboard.LEFT:
			vx = -speed;
			break;
		case Keyboard.UP:
			vy = -jump;
			break;
		/*case Keyboard.DOWN:
			vy = speed;
			break;*/
	} //switch (eventObj.keyCode) {
} //keyDownHandler
function keyUpHandler(eventObj: KeyboardEvent): void {
	if (eventObj.keyCode == Keyboard.RIGHT || eventObj.keyCode == Keyboard.LEFT) {
		vx = 0;
	}
	if (eventObj.keyCode == Keyboard.UP || eventObj.keyCode == Keyboard.DOWN) {
		vy = 0;
	}
}
function enterFrameHandler(event: Event): void {
	//移動範囲
	player.x += vx;
	player.y += gravity + vy;
	//xが70以上 580以下で移動
	if(player.x < 0 + playerHalfWidth + pixel){
		player.x = playerHalfWidth + pixel;
	}
	else if(player.x >  stage.stageWidth - playerHalfWidth - pixel){
		player.x = stage.stageWidth - playerHalfWidth - pixel;
	}
	//yが20以上 280以下で移動
	if(player.y < 0 + playerHalfHeight){
		player.y = playerHalfHeight;
	}
	else if(player.y >  stage.stageHeight - pixel - playerHalfHeight){
		player.y = stage.stageHeight - pixel - playerHalfHeight;
	}
}
maze[y][x]==0の範囲であればプレイヤーが移動できるようにする!
移動範囲
ActionScript

背景を表示できるようになったら、プレイヤーの移動範囲を制限する。
プレイヤー画像サイズは 50px:50px

ActionScript3.0でライブラリに登録したムービークリップを複数表示する
マップの表示
ActionScript

ライブラリに登録されているムービークリップでマップを描こう

//変数宣言
var speed: int = 25;
var vx: int = 0;
var vy: int = 0;
var pixel: int = 50;
var panel_width: int = 13;
var panel_height: int = 7;
var maze: Array = [
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
	[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
];
for (var i = 0; i < panel_height; i++) {
	for (var j = 0; j < panel_width; j++) {
		var block_mc: MovieClip = new block();
		block_mc.x = j * pixel;
		block_mc.y = i * pixel;
		if(maze[i][j] == 1){
			addChild(block_mc);
    }
}   
C言語をActionScript3.0を変換してゲームをつくろう
AS3
ActionScript

ActionScriptを使ってアクションゲームを作ろう

var rows:uint = 8; //行
var lines:uint = 12; //列
var d:Number = 5; //スキマ
var w:Number = (stage.stageWidth - d)/rows-d; //(650-5)/8-5=72.625
var h:Number = (stage.stageHeight-d)/lines-d; //(350-5)/12-5=75.625
var maze:Array = [
	[1,0,0,0,0,0,0,1],
	[1,0,0,0,0,0,0,1],
	[1,0,0,0,0,0,0,1],
	[1,0,0,0,0,0,0,1],
	[1,0,0,0,0,0,0,1],
	[1,0,0,0,0,0,0,1],
	[1,0,0,0,0,0,0,1],
	[1,0,0,0,0,0,0,1],
	[1,0,0,0,0,0,0,1],
	[1,0,0,0,0,0,0,1],
	[1,0,0,0,0,0,0,1],
	[1,1,1,1,1,1,1,1]
];
//スプライトをタイル状に並べる
for(var i:int = 0; i<lines; i++){ //12行:縦:Y軸
	for(var j:int = 0;j<rows; j++){//8列:横:X軸
		if(maze[i][j] == 1){  //maze[y][x]
			var fillColor:uint = 0xFFFFFF*Math.random();
			var tile_sp:Sprite = new Sprite();
			tile_sp.graphics.beginFill(fillColor);
			tile_sp.graphics.drawRect(0,0,w,h);
			tile_sp.graphics.endFill();
			tile_sp.x=d+(w+d)*j; //5+(72.625+5) * j
			tile_sp.y=d+(h+d)*i;//5 +(75.625+5) * i
			addChild(tile_sp); //タイルを表示
		}
	}
}

プロフィール

プロフィール
名前 ぬえさぶろう
仕事 PCの修理受付・取扱説明書作成
好物 大豆食品
スキル
  • C言語
  • ActionScript3.0

目次

翔泳社

ベクターPCショップ

toTop