前述のプログラムでは、キーを押した瞬間しか図形が動きません。これをキーを押したら動きつづけるように変更します。
キーが押したら動きつづけるようにするためには、移動する向きや速さを管理する変数を用意して、キーが押されたときには、この変数を変更するようにします。そしてタイマー処理でその変数の値によって図形の描画位置を変更させるようにします。
それでは、まず、座標の増分を記憶する変数dxを用意します。
35: /** 描画横座標 */ 36: int x = 50; 37: /** 横移動速度 */ 38: int dx = 0; 39: |
左右のキーが押されたときに、位置の増分をだけを設定します。位置自体は設定しないようにします。
58: case Display.KEY_LEFT: 59: dx = -2; 60: arc = 180; 61: break; 62: case Display.KEY_RIGHT: 63: dx = 2; 64: arc = 0; 65: break; |
タイマー処理の部分で、その増分にしたがって座標を変更するようにします。
68: case Display.TIMER_EXPIRED_EVENT: 69: x += dx; 70: if(x < 0){ 71: dx = 0; 72: x = 0; 73: } else if(x > getWidth() - 30){ 74: dx = 0; 75: x = getWidth() - 30; 76: } 77: mouth += dm; 78: if(mouth < 0){ 79: dm = 5; 80: mouth = 0; 81: } else if (mouth > 45){ 82: dm = -8; 83: mouth = 45; 84: } 85: repaint(); 86: break; 87: } |
すると、キーが押されたらその方向に動き続けるようになります(画面4)。
この状態では、キーを離してもそのまま動きつづけます。キーが押されている間だけ動くようにする方法は後述します。
処理が複雑になり規模が大きなプログラムになれば、いちどにすべてが意図した通りに動くことはまずあり得ません。また、複雑な処理がうまく動かない場合には、ソースコードを眺めるだけでは原因がつかめないこともあります。そして、そういう複雑な処理こそ、うまく動かない確率は高いです。こういった場合に威力を発揮するのがデバッガです。
デバッガは、プログラムが意図したように動かなかった場合に、その原因を探す用途に用います。
プログラムが意図したように動かない原因としては、プログラムの流れが意図した通りになっていない場合と、処理中の変数値が意図したものになっていない場合があります。
そこでデバッガでは、プログラムの流れを追う機能と変数を監視設定する機能を持っています。それらの機能を利用して、プログラムが意図したように動いていない場所を特定するのです。
Copyright © ITmedia, Inc. All Rights Reserved.