ゲームとしてはまだ成り立たないが、テトリスのブロックが落ちて重なる部分までを作った。
緑のブロックにしたのは、昭和のイメージ。たしかわたしが最初に使ったパソコン(当時はマイコンと呼んでいた)のディスプレイは単色でなぜか緑の文字を表示するディスプレイが多かった。当時は目に優しい緑と言われていたが、背景が黒で文字が緑はかなり目に負担が掛かっていたように思う。
タイマー処理の部分で、hitcheck関数を呼び出してブロックの重なり判定をしている。
戻り値が1なら、y座標をもとに戻しブロックの位置を戻す。
// タイマー処理 var tick = function(){ sx = x; sy = y; clearblock(); y++; if(hitcheck()){ y--; putblock(); lockblock(); createblock(); } putblock(); if(gameover == true) return; drawfield(); setTimeout("tick()", speed); }
ブロックの重なり具合を判定するhitcheck関数は単純で、
ゲーム枠などが入っている配列stageにブロックが移動したときの範囲だけをチェックする。この場合は、4×4の範囲。
var hitcheck = function(){ var i, j; for(i=0; i<4; i++){ for(j=0; j<4; j++){ if(stage[i+y][j+x] != 0 && block[i][j] != 0) return 1; } } return 0; }
次は色々なブロックを登場させたい。
コメント