VisualBasic 2015 入門
28.突破3 初期化とクリックイベント
今回は [ 突破2 Timer とマウスカーソル座標 ] の続きです。
パソコンで動かすゲームを作るとき、操作方法に注意しましょう。
パソコンではおもにマウスとキーボードを使いますが、ゲーム内でマウスと
キーボードの両方を使ったりすると、私の場合、面倒に感じることがあるんです。
可能であればマウスだけ、または、キーボードだけにした方が遊びやすいと思います。
プレイヤーの初期化をしよう
プレイヤーの初期化は、ゲーム開始のときとプレイヤーを飛ばして画面外へ出たのを戻すときに使います。
ここではゲーム開始のときの初期化を作ってみましょう。
まず、デザイン画面で Form1 をダブルクリックして Form1_Load を作ります。
その下にサブルーチン Player_init を作ってください。
プログラムを次のように変更しましょう。
Player.Top はY座標の指定に使います。
Height は Form1 の高さです。
これにプレイヤーの高さ2個分( Player.Height * 2 )を引くことで、画面下部に
表示されます。
実行して動作を確認しましょう。
プレイヤーを上に移動させよう
次は、プレイヤーを上に移動させる仕組みを作ります。
上に移動させるのはY座標を使うので、Top プロパティを操作します。
まず、サブルーチン Player_move を作成し、これを Timer1_Tick で呼び出すようにします。
Player.Top -= 20
これで上に移動します。20 の値を小さくすればゆっくりと移動し
大きくすれば速く移動します。
次の If 文では、画面外へ出たかをチェックしています。
出たらプレイヤーの初期化をして、画面下部へ移動させます。
実行してみましょう。
四角が上に移動して画面から出ると、また下から出てくる動作をくり返します。
クリックで発射する仕組みを作ろう
クリックでプレイヤーを発射させます。
そのためにはマウスのクリックでイベントが発生するようにします。
Form1 のプロパティからイベントをクリックして切り替えます。
そして MouseDown をダブルクリックします。
プログラムの一番下に Form1_MouseDown が追加されます。
ここにマウスをクリックしたときの処理を書きます。
クリックで発射するようにプログラムを変更します。
思ったより簡単にできます。
発射しているかどうかのフラグ shotFlg を作成し
発射中ならプレイヤーの上移動 Player_move を有効にするだけです。
実行してみましょう。
マウスのクリックでプレイヤーが上に移動することを確認してください。
ここで注意です。
マウスカーソルが他のコントロールの上にあると、クリックしても反応しません。
( Form1 の MouseDown イベントしか用意していないからです )
何もないところでクリックしましょう。
発射処理のポイント
発射処理のポイントを説明します。
Timer1_Tick の中でプレイヤーの上移動を行っていますが、ここで Exit Sub を
使ってサブルーチンを抜けています
つまり、そこから下にあるプレイヤーを左右に動かす処理が行われなくなります。
もう1点。
プレイヤーの初期化で shotFlg = False をしているところに注目です。
プレイヤーが画面外へ出ると Player_init が呼ばれます。
つまり、ここで発射していない状態にセットすれば
上への移動処理は行われなくなります。
すき間を横に移動させよう
すき間を横に移動させます。
方法としてはプレイヤーと同じです。横の移動なので Left プロパティを使います。
実行してみましょう。
すき間が左から右へ移動するのが確認できます。