【VBA】またまたまたゲーム作ってみた

目次

レトロゲーム

こんにちは。最近、足首痛めたJimです。

テレワーク続いてて運動不足なのに、急に結構な距離歩いたから足首痛めちゃったんだよね🤕

気をつけなはれや👓

はい、今回も?VBAでゲーム作ったって記事です。

ブログ始めてから5つ目のゲームかな。

80年代のアーケードゲーム『ジャンケンマンフィーバー』を再現してみました👏

もう30年以上前のゲームなのか。。。

ジャンケンマンフィーバー(ツイッターup動画)

んで、「作ったよ。」ってだけじゃ面白くないので、

今回は、作ったゲームのグラフィックとコーディングの紹介します。(ちょっとだけよ

 

グラフィック

画像さえ用意してしまえば、自分のテリトリーに持っていける!

なので、ここが自分にとって最大の難関でした😞

はい、凄く面倒でした、、、シュウォッチより面倒でしたよ😅

画像の準備

①まず、演出抜きのパネルを再現。

②次に、演出ありのパネルを表現します。

③そして、最後に演出部分をトリミング。。。

④ユーザーフォームに実装

といった感じで画像を用意しました😣

自分は画力がないので、全部パワポの図形を組み合わせて作成。

イラストが得意な人は、イラスト作成ソフトでやったほうが早いしクォリティも高いと思います😉

①演出抜きのパネル

まず、画像を組み合わせて、ランプが無点灯の台を再現しました。

んで、演出ありの画像と縮尺を合わせたいので、一旦ペイントに貼り付けてトリミングして保存しました。

これで、パネル全体の画像用意完了👍

②演出ありのパネル

次に、演出ありのパネルを用意します。

要するにランプが全点灯したパネルを用意します。

グーチョキパーとボタン、それから小さいランプは、パワポでグループ化してgif形式で保存。

③演出画像のトリミング

残りのランプ点灯パーツは、ペイントでトリミングして保存。

↓こんな感じ

ユーザーフォームにぶち込む

あとは、演出前のパネルをユーザーフォームのPictureに設定。

その上に、ラベルとかイメージとかお好きなもののPictureに残りのパーツを設定して、ユーザーフォーム上に配置する。

これらのパーツを表示したり非表示にすることで演出を作ったわけです。ハイ。

 

コーディング

グラフィックの用意さえできれば、こっちのものですね。

あとはコードを記述するだけ。

ユーザーフォームを表示させた後、無限ループを作ります。

無限ループの中に3つの分岐を用意。

Select

1、タイトル画面『ぐーちょきぱー』繰り返し演出の無限ループ

(特定のキー入力でループ抜ける)

2、じゃんけんで勝敗決まるまでの無限ループ

(ループ抜けたときメダル有で1無で3)

3、ゲームオーバー

(「課金しますか?」のメッセージ表示して課金で1しないとend)

要するに、大きなループの中に小さいループ(『1』と『2』)があるわけです。

『1』は単純にぐーちょきぱーを順番に表示させるだけの無限ループで、特定のキー入力があると『2』に移ります。

肝心の『2』の中はというと。。。

実は、普通のジャンケンゲームと違って、永遠に勝てなくすることもできるイカサマ仕様になってます🙈

メダルの払い出しも、動画だと『7枚』当たってるけど、まあまあ薄いところを引いたっていう。。。

↓からくり

このスプレッドシートを参照にして、勝敗や獲得枚数を決める仕様になってます。

まあ、ボタン押したときに、勝敗から決めていくっていう仕様ね。

見ての通り『負け』の割合が多めです👍

お主も悪よのぉ・・・

そこが普通のジャンケンゲームと違うところで、あとは表示・非表示の演出をつけてるだけです😆

というか、ジャンケンゲームは色んな人が紹介してるので、ユーザーフォームの演出について少し紹介します。

ユーザーフォームのオブジェクト名を工夫すればコードが短く済みます。

以下は、ルーレットに関するランプを全非表示にする関数です。

Private Sub BBreset()
Dim i As Integer
    For i = 1 To 12
        UserForm1.Controls("B" & i).Visible = False'Bは配当ランプのオブジェクト名
    Next
    UserForm1.K1.Visible = False'右の勝ちランプ
    UserForm1.K2.Visible = False'左の勝ちランプ
End Sub

注目するのは配当ランプの非表示(Controls)。

そうです。ユーザーフォームの操作にも変数が使えるんです。

ラベルのオブジェクト名を『B1』~『B12』で作成してあるので、1回のループで全てのラベル操作完了というわけ😄

仕事でも、ループでユーザーフォームを操作してます。。。

って、これくらいしかコードのネタなかったー。本当に少しだったー😅

ちなみに、全部で300行くらいしか書いてないです。

半分以上は演出関係(画像の表示・非表示とループ)なので、演出抜きにしたらスッカスカ。

割とガチで、ジャンケンゲームに少し演出加えただけの簡単なものです👍

だから、作ってる時に『こんな単純なもので、子どものお小遣い巻き上げよって。』と思ってしまった😥

 

最後に

とにかくとにかく!グラフィックと音源の準備に時間が掛かりました😖

ゲームを作ろうか迷ってる人います?まずはグラフィック用意しましょう♪

あとは、どうにでもなります!というか、グラフィックをどうにかするのがゲームプログラミングか😅

少しずつ修正しながら作っていけばいいんです!

あなたも明日から、いや!今日から、いや!今からゲーム作り始めましょう!

ちなみ、VBAのユーザーフォームで大きい画像をアニメーションさせようとするとチラつきます。気を付けましょう😊

んなわけで、グラフィックに苦労したって記事でした。。。

またねぇ✋