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