【VBA】約1年ぶりにゲーム作ってみた
gifで画像を準備
ブログ始めて1年経過。自分おめでとう!ってことで、久しぶりにゲーム作ったjimです✋
本当は、マンションのことやドラム式洗濯機のことを記事にしたいけど。。。まあ、また今度😆
あ、1~2人暮らしなら、絶対!ドラム式洗濯機を買ったほうがいいよ。ビックリするくらい楽ちんだだから。
ってことで、作ったゲームについて記事を書いていく!
最初に作ったゲームの動画⇒もぐらたたき(トゥイッターの動画)
はい、地味です。手間がかかった割に地味だった。。。
音声も入ってるけど小さすぎ😅
・・・画像の話へ軌道修正!
今回の画像も、パワポで作成しました。
パワポで画像組み合わせたり透過処理をして、以下の画像を用意しました。でも今回、、透過処理したかな?記憶にないや😊
何故gifにするのか?図形部分以外を透明で表示したいから。gifじゃないと、フォーム上で背景(白色)まで表示されちゃうの😥
あ、gifアニメーション用意したと思いました?
男は黙って座標!
座標使って、もぐら動かしてますよ。根性っす。
はい、続き!
ユーザーフォームのピクチャーを台1にして、その上にもぐら達のラベルを非表示で用意。
そして、台1の上にいるもぐら達の上に、台2っていうお布団を掛けてあげる。。。
あ、、、画像間違えた。
音声を準備
音声は以下の三つを用意。
動画を拾ってきて、ムービーメーカーでトリミング 。その後、音声だけ保存。っていう感じ。
これをメディアプレイヤーで再生してるだけなんだな。
コーディング
かなり面倒でした。
モグラのアクション。それと、大きく作ってしまった画像。
これらで、ユーザーフォームがチラつきやすいっていう。
そう、特にボムのとこな。。。
なるべくチラチラしないように、細かい画像を非表示にしてからボムを表示~みたいにしたんだけどなぁ。。失敗したなぁ。。。
ボムの画像を分割したらよかったのかな?
というか、あの、、えっと、、、実際のコードをぅpすると思いました?しません!
でも、自分の作るゲームは、大体以下のような感じ。
Sub a() Dim ゲーム用変数 As Integer ユーザーフォーム名.Show vbModeless ゲーム用変数 = 1 Do Select Case ゲーム用変数 Case 1 Call title(ゲーム用変数) Case 2 Call easyMode(ゲーム用変数) Case 3 Call hardMode(ゲーム用変数) Case 4 Call ending(ゲーム用変数) End Select DoEvents Loop End Sub
まず、ゲーム用の変数を用意。大元のループ用ね。この大きいループのなかに、細かいループが沢山あるっす。
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Sub playerAction() If GetAsyncKeyState(○○) Then 処理 End If End Sub
次に、その細かいループの何処かに、キー番号を取得するコードを用意しておく。
APIでキー番号を取得します。(ユーザーフォームのボタンイベントでも取得できます)
他にもコードを記述してやらないといけないが、、、
実行すると、ユーザーフォームを表示してタイトル画面で待機します。(キー入力待ち)
んで、ユーザーが入力したキーを受け取り、それを基に色々と計算してユーザーフォームに表示してやる。みたいな。。。
例えば以下のようなコードで、準備したラベル(画像)を表示/非表示・移動させたりね。
Userform1.Label1.Vsible = True Userform1.Label1.Vsible = False Userform1.Label1.Top = 数値 Userform1.Label1.Left = 数値
※実際はコーディングしやすいようにユーザーフォーム(ラベル等)は名前を変更します
仕様
以下は、もぐらたたきのザックリ仕様です。(ゲームの主となる部分ですね)
プレイヤーのアクション
プレイヤーは、キー入力によって特定の座標に移動。
例:1キーを押すと、もぐらさん1の場所へ移動。
もぐらさんのアクション
規定ループ数&乱数で、もぐらさんと難易度を決定し、コマ送り(座標で)でラベルを動かす。
↓例として、もぐらさん1が選択された場合。
①乱数で選択されたもぐらさん1は、定位置の座標に表示。
②表示後、1ループあたり定位置から-1⇒-2⇒-3という計算でy座標を移動させます。
もぐらさん1.Top=もぐらさん1の定位置.Top+もぐら1さん変数(ループ毎に減算)
③-30まで移動したもぐらさん1は、規定ループ回数まで待機します。
④待機が終わったもぐらさん1は、①と真逆の計算で座標を移動させます。
⑤定位置に戻ったもぐらさん1は非表示にします。
ハンマーのアクション
キーを入力すると、プレイヤーの現在地でハンマーの画像が切り替わり、ハンマーを振ったアクションとなります。
そして、規定ループ数に達したら、元の画像に戻ります。(表示/非表示で表現)
もし、もぐらさんのアクションと被ったら、もぐらさんの画像が叩かれた画像に切り替わります。
もぐらさんのy座標も加算が始まります。
はい、こういう複雑な計算をループさせました。
実際は⇒もっと複雑+ボム+得点+残り時間+音源
この結果、、シューティングゲームみたいになってしまった。っていう。。。
まとめ
今回のゲームは、かなり手間でした。
作成中に、もぐらのアクションをgifアニメーションにすれば簡単だったかなぁ?と思いました😅
こゆのって、経験とか失敗しないと分からなかったりするんですよね。
んで、そゆ経験ってのは、資産みたいなものだからさ。
一度経験していれば、次に同じような状況で『前回はアレで失敗したから、今回はコッチで!』みたいな選択もできたりするわけで。。。
ゲーム作ってみようかな~と思ってる人。みてるかな?
とりあえず、行動しよう。もし、壁にぶち当たったらラッキー(資産)だ。
You、やっちゃいなよ!
ってことで、一周年記念祝いで『銀のさら』頼も。またねぇ✋
ディスカッション
コメント一覧
まだ、コメントがありません