見出し画像

【Arduino Leonardo】自動サイズ証確認【ポケモン】



はじめに

Arduino LeonardoでポケモンSVのサイズ証確認を自動化しました。
ライブラリはNintendoSwitchControll-masterを使用しています。導入方法等はこちらでは説明しませんのでリンク先や他サイトを参考にしてください。
ポケモンSVは処理落ちやエラー落ち等発生する場合があるため長時間放置するのは自己責任でお願いいたします。

プログラムについて

サイズ確認してくれる女性に話しかけて指定ボックス分サイズ確認を行います。プログラム実行後、最大・最小証が付いているかはステータス画面で手動確認してください。

事前準備

ゲーム内設定で「話のはやさ」を「はやい」にしてください。

ボックスを開いた際にサイズ確認したい1ボックス目になるようにしてください。空欄があっても動作に支障ありませんが無駄をなくすため30匹分全て埋めておくことをおすすめします。

テーブルシティにいるサイズ確認してくれる女性に話しかけられる位置でプログラムを実行してください。

この位置でプログラムを実行

プログラム(コード)

以下コピペしてください。サイズ確認するBOX数は1としています。実機で動作確認していますがうまく動かなかった場合は待機時間等の微調整をしてみてください。
※sleepGAME関数がごっそり抜けていたので修正しました。そんなバカなことある???(自分はスリープさせない派だから判定コード自体消してて気づかなかったっぽい)

#include <auto_command_util.h>

//サイズ証確認用プログラムです
//話のはやさは「はやい」
//サイズ確認するBOXは30匹全て埋めておくことを推奨
//BOXを開いた際にサイズ確認する1BOX目にしておく
//サイズ確認してくれる女性に話しかけられる位置で開始

int check_poke_num,i,j;
int box_set=1;//サイズ確認するBOX数を指定
int sleepGAMEset = 1;//プログラム終了後スリープする場合は1、しない場合は0

void setup() {
  pushButton(Button::ZL, 500, 5);//switchに認識させる為に無駄打ちをしておく
}

void loop() {
  for(i=0;i<box_set;i++){ //指定box分チェック
    for(check_poke_num=0;check_poke_num<30;check_poke_num++){
      pushButton(Button::A, 500, 6);//メッセージ送り
      delay(2000);
      if(i>0 && check_poke_num==0){
        pushButton(Button::R, 800);//2box以降の1匹目に右BOX移動
      }
      for(j=0;j<check_poke_num/6;j++){ //BOX内下移動
        pushHatButton(Hat::DOWN, 200);
      }
      for(j=0;j<check_poke_num%6;j++){ //BOX内右移動
        pushHatButton(Hat::RIGHT, 200);
      }
      pushButton(Button::A, 500, 4);//メッセージ送り
      pushButton(Button::B, 500, 12);//メッセージ送り+予備
    }
  }
      while(sleepGAMEset){ sleepGAME(); }//本体スリープ
      while(1){ delay(10000); }
}

//本体スリープ
void sleepGAME(){
  SwitchController().pressButton(Button::HOME);
  delay(1500);
  SwitchController().releaseButton(Button::HOME);
  delay(200);
  pushButton(Button::A, 500);
}

その他(解説等)

大量の孵化余りをただ逃がすのも勿体ないので作ってみました。1匹確認毎にB連打しているのでボタン抜けで詰むことはないと思います。Rボタン入力時にボタン抜けしたら時間無駄になりますが…。

いいなと思ったら応援しよう!