Rubyでテトリスを実装する その7 - @ledsun blog の続きです。
今回は
- 行を消すロジックの修正
- T字形テトリミノの追加
- デバッグ表示の追加
です。
行を消すロジックの修正
より宣言的にならないか工夫してみました。
https://github.com/ledsun/tetoris/blob/e5bb87a3c6a24049e8b3ea973a5965c25b5d643b/lib/field.rb#L34-L44
filled_rows = in_field_rows.select { |row| row.filled? } return if filled_rows.empty? # 埋まった行を消す filled_rows.each { |row| row.clear! } # 消した行より上の、インフィールド内のすべてのブロックを消した行分下にずらす # 下から順番にずらす # 上からずらすと、ずらしたブロックがずらす前のブロックと衝突してしまう y = filled_rows.last.y in_field_blocks_over(y).reverse.each { |block| block.down filled_rows.size, self }
T字型テトリミノの追加
他のテトリミノも実装予定です。
デバッグ表示の追加
やはりデバッグが難しいです。 例外時に盤面の情報を出せるようにしてみました。