テトリスアプリのアウトプット⑥最後の仕上げ
931 回閲覧されました
みなさんこんにちは、WEB制作のエンジニアのjonioです。
今回はフィールドの一番下の行のテトロミノが揃った時の消える処理と一番上まで積み重なった時のゲームオーバーの処理です。
それではアウトプットの開始です。
フィールドの一番下の行のテトロミノが揃ったらその行が消える処理
コードを↓にします。
これで一番下の行のテトロミノが揃ったらその行は消えます。
こう考えます。
136行目でy方向の行を作ります。
そして137行目でフィールドの一番下の行が揃った時のフラグを立てます。
138行目〜143行目はフィールドの一番下の行が揃ってない場合です。
139行目の「!field[y][x]」ですが138行目より「field[y][x]」は「フィールドの一番下の行が揃った時」という意味なので「!field[y][x]」で「フィールドの一番下の行が揃ってない時」という意味になります。
そして140行目・141行目でフィールドの一番下の行が揃ってない時は何も起こらないということになります。
144行目〜150行目がフィールドの一番下の行が揃っている時です。
いきなりコードで説明するよりどうやって揃った行が消えているかを理解した方がコードの意味が理解しやすくなります。
フィールドですが枠の外はテトロミノが移動することができないし表示することができません。
消える時はフィールドの一番下の行の一つ下の行に揃った行を移動させることで消えたように見せています。
145行目・146行目でフィールドの一番下の行が揃った時の消える行を作っています。
145行目の「ny > 0」ですがy方向は下に向かって0・1・2・3・4・・・と増えていきますがy方向が負になることはないからです。
147行目で揃った行を下に移動させています。
そしてcheckLine関数をテトロミノがフィールドの一番下に落ちた時に使うので199行目で使っています。
これでフィールドの一番下の揃った行のテトロミノが消えるのは完成です。
次はテトロミノが一番上まで積もった時のゲームオーバーの処理です。
ゲームオーバーの処理
コードを↓にします。
これでテトロミノがフィールドの一番上まで積み上がった時にキーボードが反応しなくなります。
手順はこうです。
まず80行目でテトロミノがフィールドの一番上まで積み上がった時のフラグを立てfalseにします。
そしてフラグを204行目でtrueにしますが204行目の意味は「フィールドの一番上で動くことができなくなったらflagをtrueにするという意味」です。
そして212行目でキーボードがtrueになったら動かなくなるようにします。
次はテトロミノがフィールドの一番上まで積み上がったらテトロミノが落ちないようにするためにコードを↓にします。
193行目でテトロミノが落ちなくなる処理をしています。
最後はテトロミノが一番上まで積もってゲームオーバーになった時の表示とテトロミノが上に動かなくなる処理ですがコードを↓にします。
これで完成です。
最後にデモページを掲載します。
デモページ
ここから見ることができます。