シューティング・ゲームの場合、
ボタンを押しっぱなしだと連射だが弾の間隔が長く、連打すると、連射よりも早い間隔で弾が出るように作られているものが多い。これをプログラムで実現するにはどうすればよいだろうか?答えは単純で、
スペースキーを離したときに、ショット発射後経過時間を0にしてやればよい。Game.cppのCharMove関数を次のように修正する。
//----------------------------------------------------------------------------- // 関数名 : CharMove() // 機能概要: キャラクタ移動処理 //----------------------------------------------------------------------------- static void CharMove(void) { ・ ・ ・ /* 自ショットの発射 */if (!(KeyTbl[VK_SPACE] & 0x80))MyChar.ShotTime = 0;elseif ( nowTickCount - MyChar.ShotTime >= SHOT_TIME ) { MyChar.ShotTime = nowTickCount; ・ ・ ・※スペースキーを離していたら、以下の処理をする必要がないのでelseをつけていることに注意!!
確認
上記の修正を行い、スペースキーを連打すると、一定間隔よりも早くショットが撃てることを確認する。分かりやすくするため、0.2秒ではなく0.5秒間隔で連射するように調整すること。
[ 実行結果サンプル ]