blockGenerate関数
グローバル変数playerBlockオブジェクトに対し、ランダムにブロックをセットします。
function blockGenerate () {
var i = Math.floor ((Math.random() *10 )% SHAPES.length );
var CopyOfROTATE_CHANGE = deepCopy ( ROTATE_CHANGE) ;
playerBlock.rotatePattern = CopyOfROTATE_CHANGE [ COLOR [ i ] ];
var CopyOfTETRIS_BLOCK = deepCopy ( TETRIS_BLOCK [i ] );
//tweak: make one time rotation
var itsShapes = playerBlock.rotatePattern.shift();
playerBlock.rotatePattern.push (itsShapes );
return CopyOfTETRIS_BLOCK; // if it isn't copy but original, occurs bug.
//start block got wrong shape
}
var CopyOfROTATE_CHANGE = deepCopy ( ROTATE_CHANGE) ;
ROTATE_CHANGEオブジェクトをディープコピーしています。objCopy_lib.jsに書いてある関数です。
shallow(シャロウ:「浅い」の意味)コピーと、deepディープコピーがあります。
おそらく、
shallow:値の場合、値をコピー。
参照なら参照をコピー(参照をたどらない)
deepcopy:値の場合、値をコピー。
参照なら参照をたどる。ずっとたどり、値に行き着くまでたどり、最後値をコピー
これが定義と思います。
コピーには、objCopy_lib.js を使ってください。どこかでパクったものですけどね。(deepcopy関数のコードはよくわかってません。どなたか説明求む)