Frameクラスの追加

4つのエリアを配置するために、game.screenの大きさを拡大した。
4つのエリアを取りまとめるクラスとして、Frameクラスを追加した。
Frameは、各エリアの位置や大きさを保持している。
Frameは、各エリアを描画することに対して責任を持つ。
game.screenへの描画は、Frameを介して行う。
各エリア名をラベル表示する

フォントを追加
ブロック単位でテキスト表示するdraw_textを追加
Frameクラスでラベルを描画する
SCOREとLINESを表示する

数値を右下寄せで表示するdraw_numberメソッドを追加
Fieldクラスclear_lineメソッドで削除した行数を返すように修正
FrameクラスでSCOREとLINESを描画する
Game.runループで、@score_counterと@lines_counterを計測する
次のブロックを表示する

Frameクラスで、次のブロックを描画する
game.runループで、@nextminoを追加する
ブロックが積み上がる度に、@tetriminoと@nextminoの入れ替えを行う
Game.runループ内の処理をDealerクラスに移管

pause, gameoverなどゲームの状態を管理するため
Dealerクラスは状態を保持して、ゲーム全体の流れをコントロールする
スペースキーで状態を遷移

4つの状態を遷移する（:play, :pause, :gameover, :reset）
instance_variable_getをやめ、attr_readerを活用
オーバーレイを追加
状態分岐をcaseからsendに変更
toggle_stateでの状態遷移でifからcaseに変更
テトリミノが1行目から落下するように修正
消去したLINESに応じて落下を速める
正方形のテトリミノが中央から出現するように修正
消去するラインをフラッシュする
フォントを定数に変更
名称変更

Fieldの状態と重複するため、Tetriminoの状態をfallingとlandedに変更
toggleはオン・オフの切替をイメージするため、switch_stateに変更
パラメータ変更

落下速度がより早いタイミングで加速するようにするため
ブロックの回転方法を変更

オブジェクトの生成を抑えてより高速に処理するため
カラーの取り扱いを定数に変更
!row.include?(nil)をrow.all?に変更