swingでタイピングゲーム

★開発環境

OS → Windows10
javaのversion → 1.8.0_161
開発環境 → pleiades(e4.5_StdEdi)
 
 
今回はswingで、タイピングを行ってコンポーネントのラベル文字を変えるという、ゲームを作ります。「first」という単語と7つの単語があり、「first」以外の7つの単語が1つづつランダムにラベルに表示され、表示された文字を正しくタイピングしていくというゲームです。正しくタイピングされなかったときはラベルの文字が赤になります。
 
swingでキーボード入力を受け取るためには、addKeyListener(this)があります。
 
プログラムで使用するには、java.awt.event.KeyListenerクラスをimportし、
KeyListenerインターフェースを実装(implements)します。必要な抽象化メソッドの設定後、以下のメソッドが自動で設定されます。イベント発生時に実施されるメソッドです。
 
public void keyTyped(KeyEvent e){ //キーをタイプしたイベント(文字キーの検出)
}
 
public void keyPressed(KeyEvent e){// キーを押したときイベント
}
 
public void keyReleased(KeyEvent e){// キーを離したイベント
}
 
KeyEvent型のeはアクションイベントのオブジェクトです。
e.getKeyChar() で入力した文字を、e.getWhen()でタイピング時の時間を取得できます。
 
それでは、ソースコードを見ていきましょう。
 
イベントを受け取るaddKeyListener(this)ですが、今回はキーボード入力を受け取ってラベルの文字を書き換えるという処理ですので、this.getContentPane().add(BorderLayout.CENTER, jl);
よりも前に書いておきます。
最後にthis.setVisible(true);でフレームを表示します。
 
実行すると以下のようになります。

f:id:astrophysik928:20181031225302p:plain


f:id:astrophysik928:20181031225326p:plain

f:id:astrophysik928:20181031225418p:plain

 
タイピングを間違えると赤くなります。

f:id:astrophysik928:20181031225514p:plain

first以降は配列内の単語がランダムに出現します。
 

f:id:astrophysik928:20181031225608p:plain

 
 

f:id:astrophysik928:20181031225641p:plain