【マイコン】スプラトゥーン3のナワバトラーのレベル上げを自動化するコード

マイコンを使ってスプラトゥーン3のナワバトラーのレベル上げを自動化をしてみたので、コードを公開いたします。

この記事をご覧になる前に

マイコンをまだ導入していない方は、以下の記事を参考に導入してみてください。このブログでは、Arduino Leonardoというマイコンを使っているため、異なる種類のものではうまく動かない可能性があります。

関連記事

マイコンと呼ばれるものをご存知でしょうか? Switchに接続するだけで様々な作業を "自動" で行ってくれるというものです。 導入すれば作業が楽になるだけでなく、寝てる間に色々稼ぐこともできちゃう便利なアイテムなわけですね! […]

マイコンを使って
ポケモン剣盾
自動化しよう!
【導入編】

今回のコードは「NintendoSwitchControlLibrary」を使用しています。まだダウンロードされていない方は、解凍したフォルダを『Arduino』フォルダの中にある『libraries』フォルダの中にコピーするか、ライブラリマネージャよりインストールしてください。

ソースコード

実際に書いたコードはこちらになります。

/**
 * スプラトゥーン3でナワバトラーのレベル上げを自動化するスケッチ
 *
 * ※ 当プログラムはスプラトゥーン3のVer2.1.0で動作確認を行っております。アップデートにより正常に動作しなくなる可能性がありますのでご了承ください。
 *
 * 初期条件は以下の通り
 * 1. ナワバトラーのチュートリアルを終えていること
 * 2. Aボタンでスタッフさんに話かけられる位置にいること(話す前の状態)
 * 3. 本体に装着された状態のジョイコン以外にコントローラーが接続されていないこと
 */

////////////////// libraries ////////////////////////////////

#include <NintendoSwitchControlLibrary.h>

////////////////// constant parameters ////////////////////////////////

// 1試合あたりのターン数
const int TURN_COUNT = 12;

////////////////// methods ////////////////////////////////

/**
 * 「使いたいコントローラーのL+Rを押してください」を閉じる
 *
 * @return void
 */
void selectController() {
    pushButton(Button::L, 100);
    pushButton(Button::R, 100);
    pushButton(Button::A, 3000);
}

/**
 * 対戦相手を選択する
 *
 * @return void
 */
void selectBattler() {
    pushButton(Button::A, 2000, 3);
    delay(1000);
    pushHat(Hat::DOWN, 500);
    pushButton(Button::A, 3000);
}

/**
 * 対戦を行う
 *
 * @return void
 */
void battle() {
    // デッキを選択
    pushButton(Button::A, 10000);
    // そのまま
    pushButton(Button::A, 4000);
    // 全てのターンでパスを選択
    for (int i = 0; i < TURN_COUNT; i++) {
        pushHat(Hat::UP, 500);
        pushButton(Button::A, 250, 2);
        delay(11000);
    }
    delay(3000);
    pushButton(Button::A, 4000);
    // レベルアップ時を考慮
    pushButton(Button::A, 4000);
    // 続ける
    pushButton(Button::A, 3000);
}

////////////////// execute ////////////////////////////////

void setup() {
    // Switchがマイコンを認識するまでは信号を受け付けないため、適当な処理をさせておく
    pushButton(Button::B, 500, 6);

    delay(5000);  // 「使いたいコントローラーのL+Rを押してください」の画面が出るまで待機する
    selectController();
    selectBattler();
}

void loop() {
    battle();
}

コードの使い方

コードを使うにあたって必要な設定があります。

設定の確認

マイコンを繋げる前に、以下の状態になっていることを確認してください。

  1. ナワバトラーのチュートリアルを終えていること
  2. Aボタンでスタッフさんに話かけられる位置にいること(話す前の状態)
  3. 本体に装着された状態のジョイコン以外にコントローラーが接続されていないこと

その他、厳密に言うと「ジャイロ操作がOFFであること」や「オンライン状態でないこと」も初期条件としては好ましいのですが、最初にバトルまでこぎつけられるとこまで動作していれば以後は問題ないため設定からは外しています。

オンライン状態でルールが切り替わるタイミング等で始めたりすると暗転してしまい自動化できなくなってしまいますので、その点には気をつけてもらえればと思います。

初期位置について

以下の画像の位置でスタートしてもらえればと思います。

ナワバトラーで遊ぶ

最後に

何かループから抜けてしまうような事象が見受けられましたら、@lefmarnaまで報告いただければと思います。

スポンサーリンク