レジェンズアルセウス自動化 ギンガ団 [かちぬき道1周14分15秒]

0.はじめに
ポケモンレジェンズアルセウスのエンドコンテンツ「かちぬき道」。
ボタンを押すだけでクリアできる単純な作業を、自動化してみました。
コンゴウ団、シンジュ団に続き、ギンガ団も完成したので共有いたします。
他の団に比べて、ギンガ団の自動化は難易度が高すぎて私のような素人にはかなり難しい作業でした(;´・ω・)
故に、プログラムが無茶苦茶ですがご了承ください。

<実際のプレイ動画>

<コンゴウ団 自動周回>

<シンジュ団 自動周回>



1.マイコン導入
導入までは私自身が完璧に理解していないので、他の著者が紹介している導入方法を調べて実施してください。


・開発ボード 
著者使用: 他の著者がオススメされていたものを購入して使っています。

・Arduino IDEインストール

・参考にさせていただいた文献

・使わせていただいたライブラリ
NintendoSwitchControlLibrary

ライブラリが初心者でも扱えるように作ってありオススメです。
一般的によく使われる入力パターンが用意されていることもあって、私のような知識がない者でも簡単に作成することができました。


2.できること
・「かちぬき道」ギンガ団14分15秒で自動周回。

報酬:(ギンガ団)
・「けいけんアメXL」や「ポケモン進化アイテム」

あやしいパッチ
つながりのヒモ
ひかりのいし
まんまるいし
やみのいし
れいかいのぬの
アップグレード
メタルコート

※ギンガ団での周回には時間がかかりますので、けいけんアメXL目的であれば、コンゴウ団かシンジュ団での周回をオススメします。

<コンゴウ団>https://note.com/tender_tulip728/n/nc4638977e9a6
<シンジュ団>https://note.com/tender_tulip728/n/nc6ddcf143e78


使い道:

・友達がいなくても通信進化ポケモンが進化できる( ;∀;)!
・ポリゴン2かわいい(*^^)!


3.事前準備
・アルセウスをゲットする。(任務27「神と呼ばれるポケモン」をクリア)
・かちぬき道を解放する(サブ任務「ヒスイの夜明け」をクリア)
・アルセウスをレベル100にしておく。
・アルセウスの性格を「むじゃき」にしておく。
・アルセウスのがんばレベルを全て10にしておく。
・アルセウスにレジェンドプレートを使用しておく。

・覚えている技を下記のようにセットする。
①でんこうせっか(皆伝必須)
②じならし(皆伝必須)
③めいそう(皆伝必須)
④さばきのつぶて(皆伝必須)

・手持ちをアルセウス1匹にしておく。
・ノボリの前で待機。

以上です。


4.ソースコード

/**
* かちぬき道(ギンガ団)周回
*
* <事前準備>
* 1.アルセウスをゲットする。(任務27:神と呼ばれるポケモン)
* 2.かちぬき道を解放する(サブ任務「ヒスイの夜明け」をクリア)
* 3.アルセウスをレベル100にしておく。
* 4.アルセウスの性格を「むじゃき」にしておく。
* 5.アルセウスのがんばレベルを全て10にしておく。
* 6.アルセウスにレジェンドプレートを使用しておく。
* 7.覚えている技を下記のようにセットする。
* でんこうせっか(皆伝必須)
* じならし(皆伝必須)
* めいそう(皆伝必須)
* さばきのつぶて(皆伝必須)
* 8.手持ちをアルセウス1匹にしておく。
* 9.ノボリの前で待機。
*/

// ライブラリ読み込みコード
 #include  <NintendoSwitchControlLibrary.h>

// セットアップ
void setup() {
// 待機時間
   pushButton(Button::B, 500, 5);
}

// 下記ループ
void loop() {
   pushButton(Button::A, 1500);
   pushButton(Button::A, 1500);
   
// かちぬき道を選択
   pushHat(Hat::DOWN, 1000);
   pushButton(Button::A, 1500);
   pushButton(Button::A, 1500);
   
// ギンガ団を選択
   pushButton(Button::A, 1500); 
   pushButton(Button::A, 1500);
   pushButton(Button::A, 4500);
// ペリーラ(1戦目)
   pushButton(Button::A, 1500);
   pushButton(Button::A, 5000);
   pushButton(Button::A, 8500);
   pushButton(Button::A, 13500);
// (ギャロップ)
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN); 
   pushButton(Button::L, 500);  
   pushButton(Button::A, 9000);
   pushButton(Button::A, 700);
   pushHat(Hat::UP); 
   pushButton(Button::A, 5500); 
   pushButton(Button::A, 700);
   pushButton(Button::A, 13000); 
// (ミミロップ)
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::L, 500); 
   pushButton(Button::A, 15000);
   pushButton(Button::A, 700);
   pushHat(Hat::UP); 
   pushButton(Button::A, 10000);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 16000);
   pushButton(Button::A, 700);
   pushHat(Hat::UP);
   pushHat(Hat::UP);
   pushButton(Button::A, 11000);
   pushButton(Button::A, 700);
   pushButton(Button::A, 12000);
   pushButton(Button::B, 8000);  
// (ゴウカザル)
   pushButton(Button::A, 700);
    holdHat(Hat::UP, 2000);   
   pushButton(Button::A, 8500);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN); 
   pushButton(Button::A, 6000);
   pushButton(Button::A, 700);
   pushHat(Hat::UP);
   pushButton(Button::A, 13000);
// (ハガネール)
   pushButton(Button::A, 700);
   holdHat(Hat::UP, 2000);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 700);
   pushButton(Button::A, 7000);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 16500);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN); 
   pushButton(Button::A, 23000);
// (フワライド)   
   pushButton(Button::A, 700);
   pushButton(Button::A, 22500);

// ムベ(2戦目)
   pushButton(Button::A, 500, 20);
   pushButton(Button::A, 1000);
   pushButton(Button::A, 1000);
   pushButton(Button::A, 6000);
   pushButton(Button::A, 13000);   
// (ロズレイド)
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::L, 500);
   pushButton(Button::A, 9000);
   pushButton(Button::A, 700);
   pushHat(Hat::UP); 
   pushButton(Button::A, 5500);
   pushButton(Button::A, 500);
   pushButton(Button::A, 5500);
   pushButton(Button::A, 500);
   pushButton(Button::A, 13000);
// (エルレイド)
   pushButton(Button::A, 1000);
   holdHat(Hat::DOWN, 2000);
   pushHat(Hat::UP); 
   pushButton(Button::A, 10000);
   pushButton(Button::A, 700);
   pushHat(Hat::UP); 
   pushHat(Hat::UP); 
   pushButton(Button::A, 6000);
   pushButton(Button::A, 700);
   pushButton(Button::A, 6000);
   pushButton(Button::A, 700);
   pushButton(Button::A, 16000);
// (ジバコイル)
   pushButton(Button::A, 1000);
   holdHat(Hat::DOWN, 2000);
   pushHat(Hat::UP);
   pushButton(Button::L, 500);
   pushButton(Button::A, 12500);
   pushButton(Button::A, 700);
   pushHat(Hat::UP);
   pushHat(Hat::UP);
   pushButton(Button::L, 500);
   pushButton(Button::A, 9000);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 17000);
// (サーナイト)
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 18000);
   pushButton(Button::A, 700);
   pushHat(Hat::UP);
   pushButton(Button::A, 8000);
   pushButton(Button::A, 700);
   pushButton(Button::A, 8000);
   pushButton(Button::A, 500);
   pushButton(Button::A, 8000);
   pushButton(Button::A, 500);
   pushButton(Button::A, 15000);
// (オオニューラ)
   pushButton(Button::A, 500);
   pushButton(Button::A, 9000);
   pushButton(Button::A, 500);
   pushButton(Button::A, 9000);
   pushButton(Button::A, 500);
   pushButton(Button::A, 9000);
   pushButton(Button::A, 500);
   pushButton(Button::A, 19000);

// デンボク(3戦目)
   pushButton(Button::B, 500, 20);
   pushButton(Button::B, 1000);
   pushButton(Button::B, 1000);
   pushButton(Button::B, 6000);
   pushButton(Button::B, 12000);    
// (ゴローニャ)
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 6000);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 14000);
   pushButton(Button::A, 700);
   pushHat(Hat::UP);
   pushHat(Hat::UP);
   pushButton(Button::A, 6000);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 7000);
   pushButton(Button::A, 700);
   pushButton(Button::A, 25000);
// (ヘラクロス)
   pushButton(Button::A, 700);
   pushHat(Hat::UP);
   pushButton(Button::A, 9000);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 15000);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 6000);
   pushButton(Button::A, 700);
   pushButton(Button::A, 14000);
// (カビゴン)
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::L, 500);
   pushButton(Button::A, 12000);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 9000);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 6000);
   pushButton(Button::A, 700); 
   pushHat(Hat::UP);
   pushButton(Button::A, 22000);
// (ガチグマ)
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN); 
   pushHat(Hat::DOWN, 500);
   pushButton(Button::L, 500);
   pushButton(Button::A, 12500);
   pushButton(Button::A, 700);
   pushHat(Hat::UP); 
   pushButton(Button::L, 500);
   pushButton(Button::A, 2000);
   pushButton(Button::B, 11000);
   pushButton(Button::A, 700);
   holdHat(Hat::DOWN, 2000);
   pushButton(Button::A, 27500);
// (ダイノーズ)
   pushButton(Button::A, 1000);
   pushButton(Button::R, 500);
   pushButton(Button::A, 28500); 
// (会話)
   pushButton(Button::A, 11000);
   pushButton(Button::B, 500, 15);
    
 
} 

5.マイコンをswitchに差し込む
マイコンを接続すると自動でスタートします。
あとはループするので放置で大丈夫です。


6.最後に
本自動化はアルセウスの単騎突破を目標として作成しております。
他の方法ならばもう少し楽に作成できると思うので、それはまた次回に。

他の団と違い、1on1のバトルが基本となり、ほぼ全てのポケモンに対して急所に当てることを考えないと、正しく動作しません・・。
そのためデュレイをかなり多めに設定しております。

24時間稼働させてみましたが、問題なく動作しておりました。
しかし1周での被弾は多く、これら全てで急所を受けると、もしかしたら動作がズレる可能性もあります。

途中で正しく動作しなくなった場合は、コメントで教えていただけると助かります。


ここまでお読みいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?