Step 04 of 12

左右キー操作

矢印キーでブロックを左右に動かせるようにします。 onKey(Key key)キーが押されるたびに呼ばれるメソッド。 「時間で起こること」と「キーで起こること」を分けて書くのがポイント。

MyTetris.java Read-only · editor is coming
Java runtime を初回読み込み中…
CheerpJ の JRE (数十 MB) をダウンロードしています。2回目以降はキャッシュから瞬時に立ち上がります。
preparing

About this step

何が新しくなった?

onKey(Key key) が登場。キーが押された瞬間に 1回だけ呼ばれます。 update(dt) が「毎フレーム呼ばれる」のに対して、 onKey は「イベント駆動」— 押された時だけ動くのが違い。

Key は enum(列挙型)。Key.LEFTKey.RIGHT のように、 取りうる値がはっきり決まっている型です。if (key == Key.LEFT)== 比較が enum では普通(String と違って .equals は要らない)。

操作方法

  • — 1マス左に移動
  • — 1マス右に移動
  • — 1マス下に移動(自動落下とは別)

Canvas にフォーカスが当たっていないとキーが拾われません。 Run Java を押せば自動で Canvas にフォーカスします。 効かない時はもう一度 Canvas をクリック。

バグ:画面外に出ていく

左右に動かし続けると、ブロックが盤面の外へ出ていって消えます。 これは故意の仕様で、「境界のチェックを入れないとこうなる」を体感するため。 Step 5 で壁判定を入れて、この挙動を直します。