テトリスを作っています。
テトリス カテゴリーの記事一覧 - スマレジエンジニアyushiのブログ
技術スタックは下記の通りです。
- TypeScript
- React
- SCSS
- Create React App
今回は、ブロックを最下層まで落とす機能などを作ります。
ブロックを落とすロジック
この機能では、落下中のブロックを最下層(積まれたタイルがある場合は、それに接する)まで落とします。
/** * 最下層までブロックを落とす. */ const fall = () => { if (fallingBlock === null) { return; } /** * 最下層に到達するまで繰り返し更新する. */ let currentBlock = { ...fallingBlock }; // whileループと等価だが、不具合による無限ループを防ぐためにforループで記述する. for (let i = 0; i < boardHeight; i++) { const movedBlock = getNextBlock( currentBlock, boardWidth, boardHeight, tiles ); if (!movedBlock) { break; } currentBlock = movedBlock; } setFallingBlock(currentBlock); };
fallingBlock
は、事前に取得した落下中のブロックです。
これが存在しない(null)場合は、何もせずにreturnします。
forrループ内で読んでいるgetNextBlock
は、タイマーでブロックが一マス落ちる時と同じロジックです。
getNextBlock
の返り値がnullになる = ブロックが最下層に落ちる、もしくは積まれているタイルに接するまでループします。
Pull Request
https://github.com/nek0meshi/tetris/pull/21
あとがき
もう年末ですね。
今年は登山をしたり、海や川で泳いだり、スノボなど、アウトドアを楽しむ一年でした。
来年はフロントエンドの開発力を高めたいなと思っています。