breakとかはまだ使うんですが、continueはよく忘れる。
まず、使いどころがわからなくて使用頻度が低い。
そんな感じでしたが、最近ブロック崩し系のゲームを作っていてこれは便利かもと思った。
それは、ブロックの並びを管理したArray内のゼロだけ除外して圧縮するコード。
たとえばこんな配列の内容で、
0,0,0,1,2,0,0,3,4,0,5
0の部分がブロック間の「空き」として管理しているので、詰まってほしい。
1,2,3,4,5
というふうにしたい。
最初はこう書いていました。
// 配列内のゼロだけ除外する
var arr:Array = [ "0" , "0" , "0" , "1" , "2" , "0" , "0" , "3" , "4" , "0" , "5" ];
trace( arr );
var i = 0;
while( i < arr.length ){
var value:Number = arr[ i ];
if( value == "0" ){
arr.splice( i , 1 );
} else {
i++;
}
}
trace( arr );
0,0,0,1,2,0,0,3,4,0,5
1,2,3,4,5
と表示されます。
実際のブロック崩しではもっと色々な処理をしているんですが、概念としてこんな感じです。
これを continue で置き換えてみます。
// 配列内のゼロだけ除外する
var arr:Array = [ "0" , "0" , "0" , "1" , "2" , "0" , "0" , "3" , "4" , "0" , "5" ];
trace( arr );
var i = 0;
while( i < arr.length ){
var value:Number = arr[ i ];
if( value == "0" ){
arr.splice( i , 1 );
continue;
}
i++;
}
trace( arr );
stop();
はい、こんなかんじです。
そういえばこのコードに限ってはこういう風にも出来ます。
var arr:Array = [ "0" , "0" , "0" , "1" , "2" , "0" , "0" , "3" , "4" , "0" , "5" ];
trace( arr );
trace( arr.join("").split("0").join("").split("") );
ブロック崩しのときはもっと多次元配列になっていているのでこんな風には扱えませんけど。
- Newer: 北京オリンピック特需と言ってみる
- Older: 今日はPC環境が厄日だったらしい