4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WioTerminalの激ムズゲームを改造する

4
Posted at

どんな内容か?

WioTerminalの購入時に遊べるレトロゲーム(Jumper)が激ムズですぐにゲームオーバーで進めないので簡単にするための改造方法です。

多分、購入すると5分間くらいはこのゲームで時間を消費することになります。昔懐かしいゲームウオッチを思い出します。

image.png

やり方

このゲームのソースコードが公開されているので、そのソースコードの一部を修正することで、あんなことやこんなことができるようになります。ですので、まずはそのソースコードを入手してビルドできるようにする必要があります。

環境の準備

  1. ArduinoIDEの環境を準備します。(詳細は省きます)
  2. ソースコードSeeed_Arduino_Sketchbookをダウンロードします。この中にJumperのソースが含まれます。
  3. ビルドするのにライブラリが必要なので、Adafruit_ZeroTimerもダウンロードします。
  4. ライブラリをインストールするためにArduinoIDEを起動し、スケッチ→ライブラリのインクルード→.Zip形式のライブラリのインクルードで、ダウンロードしたZipファイル(Adafruit_ZeroTimer-master.zip)を選択します。(※下部写真)
  5. jumper.inoをダブルクリックしJumperのコードを開きます。
  6. ビルドしてWioTerminalに書き込んで動けば環境はOKです。

image.png

改造方法その1:鳥を消す

ゲームをやっていると厄介なのが空を飛ぶ鳥です。この鳥がなかなか衝突判定も厳しくて邪魔キャラなので消し去ります。
コメントで//generate a birdとある下記の部分全てをコメントアウトすることで、鳥出なくなります。
つまり、抵抗の障害物をジャンプするだけのゲームにすることができます。(面白いかは別ですよ。)

//generate a bird
static bool once = true;
if (once)
{
    once = false;
    int i = 0;
    while (current_bird_count < max_bird_count)
    {
        bird[current_bird_count++] = object(
            pix_type_bird,
            point(screen_width - raw_bird[0]->width, jump_path[i].y - 16),
            raw_bird,
            x_bird_speed);
        i++;
    }
}
else if (
    current_bird_count < max_bird_count &&
    random(0, rate) == 0 &&
    can_generate(bird, current_bird_count))
{
    debug("generate a bird");
    auto i = random(0, max_jump_path);
    bird[current_bird_count++] = object(
        pix_type_bird,
        point(screen_width - 1, jump_path[i].y - 16),
        raw_bird,
        x_bird_speed);
}

上記を全部コメントアウト(削除)しちゃえば、鳥は出てきません。

改造方法その2:無敵化

最終手段ですね。こちらは、1行コメントアウトするだけで無敵化することができます。単にゲームオーバーしなくするだけなんですけど。

ソースコードの中央部にこのゲームオーバーフラグを立てる場所があるので、ここをコメントアウトします。

        if (collide_mask & pix_type_actor)
        {
            flag = game::over;
        }
        if (collide_mask & pix_type_actor)
        {
            // こんな感じです。
            // flag = game::over;
        }

無敵はこんな感じになります。(動画でご覧いただけます。)

動画がみつかりません

その他

ベースとなるソースコードが公開されていますので、これをベースにアレンジしたゲームを作りこむのも楽しそうですね。(自分が作るとは言ってない。)

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?