【Arduino自動化13】全自動ポケモン逃がし
ますたーです。こんにちは。
今回は、ボックスのポケモンを全自動で逃がし続ける自動化記事です。前回の全自動タマゴ受け取り&孵化とは対称的ですね。
※本記事ではポケモンを「逃がします」。利用に際してはくれぐれも自己責任でお願いします
Arduino自動化記事も本稿で第13回。これからもよろしくお願いします。
なお、Arduino Leonardo自動化の導入・機材構成については導入記事を参考にしてください。
導入記事:【Arduino自動化01】Arduino開発環境の導入
※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。
概要
本記事では、ボックスのポケモンを自動で逃がすプログラムを紹介します。孵化厳選などで溢れたボックスを整理できます。
目次です。プログラムまで読み飛ばす方は⇒コチラからどうぞ。
「いちらん」を使って歯抜け状態のポケモンボックスを左詰めに
効率的に逃がすためにも、まずは余談でボックス整理方法から。
タマゴ孵化で色厳選をすると、どうしてもボックスが孵化したポケモンで溢れてしまいます。そんなとき、1匹1匹を手動で逃がすのはとても大変です。
そんな時こそ自動化プログラムの出番…と言いたいところですが、前提として、自動化プログラムは「ボックスが歯抜け状態だと使えない」という欠点があります。
孵化したポケモンの中で「高個体値」「理想個体」「色違い」のポケモンを残そうと別ボックスに移動させてしまうと、どうしてもボックスの中が歯抜け状態になります。つまり、いわゆる「自動ポケモン逃がし」プログラムが使えなくなってしまいます。そこで、手動でポケモンを整列させる必要がありますが、1匹ずつずらすのも大変です。
実は、ボックスの機能「いちらん」を使うことで、効率的にポケモンたちを左詰めにできます。具体的には、他のボックスから「はんい」モード(緑のカーソル状態)で「いちらん」を経由して移動させると、空いている箇所に左詰めに自動で挿入してくれます。もし、今まで1匹ずつずらしていた人には、目からウロコのテクニックです。
逃がすポケモンの数をプログラムに書き込み
自動化プログラムの使い方に話を移します。
まずは、逃がすポケモンの数をプログラムに書き込みます。具体的には、「NUM_RELEASE_POKEMON」で指定しますので、ここに数字を入力してください。
例えば、8ボックス埋まっている場合は「30*8」または「240」と入力すればOKです。もちろん、30の倍数以外にも対応できます。
なお、前述の通り、ボックスのポケモンは「歯抜け」が無い状態でかつ、左詰めに整列させておいてください。
これが終わったら、B連打でボックスを閉じ、メニューを閉じ、フィールド画面に戻ってください(メニュー画面でカーソル位置が「ポケモン」なら準備完了です)。
ソースコード
ポケモンをボックスに左詰めで整列させておき、Xでポケモンにカーソルが合う状態で、Arduinoを挿すだけの簡単設計です。
あとがき
前回(第12回)全自動タマゴ受け取り&孵化の記事ではタマゴを受け取っては孵すを繰り返していましたが、今回の記事では打って変わって、ひたすらポケモンを逃がす記事でした。
私は孵化厳選した際に余ったポケモンたちを逃がすのが本当にめんどくさく、いつもポケモンバンクやポケモンHomeに預けるのを繰り返していました。ところが、これらにも容量が上限あることに最近気づいてしまい、止む無く「逃がす」ことの重要性に気づいたのです。また、前回実装したタマゴ自動孵化プログラムのおかげで、気分が乗らなくてもタマゴ孵化が捗ってしまい、気づいたらボックスが埋まってしまうということも多くなったため、現在は重宝しています。
こうやって自分の手で「作って」「使って」みると、「世の中にすでにある自動化」はニーズがあるんだなぁ、と真の意味で納得できるということに気づかされます。本ブログが、皆様の需要にも応えられるように、世の中のものもしっかりと調べて行こうかなと思った次第です。
個人的には、第9回のポケモンキャンプでカレー自動調理は非常に満足の行く出来だったのですが、本当にニーズがないのか本記事にはなかなかアクセスがありません(ちなみに、「ポケモン カレー 自動化」で調べると、まだまだ駆け出しの本ブログでは珍しく、検索上位にランクインします。よかったら見てね←)。
話が逸れましたが、本記事ならびに本ブログが皆様のポケモン自動化ライフの一助となれば幸いです。引き続き応援のほど、よろしくお願いいたします。
ではではc⌒っ.ω.)っ
導入記事:【Arduino自動化01】Arduino開発環境の導入
前回記事:【Arduino自動化12】全自動タマゴ受け取り&孵化
次の記事:【Arduino自動化14】ロトミIDくじ無限抽選
【Arduino自動化12】全自動タマゴ受け取り&孵化
ますたーです。こんにちは。
今回は、預かり屋からタマゴを自動で受け取り、孵化までを自動で行う記事です。ついに全自動記事も第12回。引き続きよろしくお願いします。
なお、Arduino Leonardo自動化の導入・機材構成については導入記事を参考にしてください。
導入記事:【Arduino自動化01】Arduino開発環境の導入
※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。
概要
本記事では、ワイルドエリアの「預かり屋」でタマゴの自動受け取り&自動孵化を紹介します。完全放置で孵化厳選や色厳選作業をできるようにしてみました。
では、目次です。
本ブログの紹介環境で自動孵化を作りたかった
始めに、本ブログで「自動孵化」を取り扱おうと思ったきっかけについてです。
今まで、本ブログもまだまだ駆け出しということもあり、世間で公開されているArduino自動化には「無いもの」「新しいもの」をとにかく作ってきました(個人的には、第9回の全自動カレーづくりは大変な力作でした)。そして、本ブログも公開してから3ヶ月が過ぎ、自動化に関わる記事数も10を超え、月間1000アクセスも超えるようになりました。
本ブログでポケモン剣盾のArduino自動化にチャレンジを始めた人もいらっしゃるようなので、せっかくなら「同じ導入環境」で「使えるもの」を増やしたほうが親切かと思い、本ブログでも比較的メジャーな「孵化作業の自動化」に踏み切った次第です。
すなわち、本ブログの「導入記事」での環境で動いていることが(少なくとも筆者は)確認済のプログラムになります。そういった意味では需要があるのかと思います。
「ほのおのからだ」を持つポケモンで孵化時間は半減
まず、孵化厳選で重要なことですが、必ず「ほのおのからだ」「じょうききかん」「マグマのよろい」のいずれかの特性を持つポケモンをパーティーに加えて孵化作業をしましょう。これらの特性をもつポケモンは、手持ちにいるだけで孵化に必要な歩数が半分になります。10匹以上孵化するなら、今から捕まえに行ってもお釣りが来るほど時間効率が変わります。持っていない人は今すぐ捕まえてください。
孵化の歩数を半減できる特性3つのうちいずれかを持っており、かつ、剣盾内(DLCなし)で捕まえやすいポケモンと言えば、タンドン系(タンドン・トロッゴン・セキタンザン)でしょうか。一応、他にもエンジンシティのジムミッションで出会える「ヒトモシ」もいますが、「もらいび」と確率半々なので、DLC無しで確実に捕まえるにはタンドン系が最安定と思います。なお、同特性を持つ剣盾内で出現するポケモンは、ポケモン徹底攻略で検索できますので合わせて参考にしてください。
ところで、剣盾にはDLC含めて「マグマのよろい」を持つポケモン(マグマッグおよびマグカルゴ)は登場しませんでしたね。悲しい…。マグカルゴは私の好きなポケモンの1匹でした。当時、対戦はもちろん、ウルガモスやファイアローが登場してからも孵化のお供に使っており、思い入れ深いポケモンでした。次作では帰ってきてほしいです。
受け取り作業と孵化作業の自動化
自動化に限らず、孵化作業において特筆して準備すべきものは、上記の通り「ほのおのからだ」持ちポケモンだけです。今回の自動化はタマゴを1匹ずつ「受け取り」「孵化」を繰り返すので、1回ごとの試行回数を増やすべく、手持ちポケモンは「ほのおのからだ」持ち1匹のみにしておいてください。
一応、効率的な孵化作業には「自転車」「連続した空きボックス」は必須かと思いますので、本ブログで紹介するプログラムもそれに準じます。なお、本ブログで扱う自動孵化は「ワイルドエリア」の預かり屋を活用します。理由は自転車でくるくると一周できるからです。
プログラムの使い方と修正箇所
本ブログのプログラムを使うにあたっては、下記冒頭箇所を必要に応じて修正してください。プログラム全文は後述します。
■1匹の孵化にかかる時間を入力する
計測は難しいですが、ポケモンの孵化歩数などを参考に入力しましょう。数字は「HATCH_TIME」に指定してください。現在デフォルトで入っている57はニャビー(孵化歩数:3840歩?に対して「ほのおのからだ」適用の数字)ですが、かなりざっくりアバウトな数字なので気にせず入力ください。その下の「ADV_OFFSET」は変更しなくて大丈夫です。
■空きボックスの数を指定
まず、前述の通り、空きボックス(30匹空白のボックス)を連続して配置してください。その個数を「MAX_HATCH_POKEMON」に適用します。具体的には、例えば、9ボックス連続で空っぽなら、30×9=「270」で指定すればOKです(あるいは計算式で「30*9」でもOK)。
■Xボタンメニュー画面の位置を入力
Xで開くメニュー画面の「タウンマップ」「ポケモン」のボタンの位置情報を必要に応じて修正(プログラム全文は後述)してください。行(英語でrow)は、上の段が0、下の行が1という決まりで入れています。列(英語でcolumn)は、左端から順番に0, 1, 2, 3, 4になります。
具体的には、タウンマップの行列はそれぞれ「TOWNMAP_ROW」「TOWNMAP_COL」、ポケモンの行列は「POKEMON_ROW」「POKEMON_COL」で指定しているので、これらを修正ください。
よくわからない人は、プログラムではなくゲームのメニュー画面を、下記画像の順番で並び替えればOKです(この順番は、剣盾のシナリオを進めた際のそのままです)。
書き換え作業が終わったら、「タウンマップ」にカーソルをあわせてください。
ソースコード
使う前に、前述の通りXボタンで開くメニュー画面はプログラム上で編集しておき、Xボタンで開いたメニューのカーソルは「タウンマップ」に合う状態にしておいてください。
ワイルドエリアの「預かり屋」にポケモンを預け、手持ちは1匹・自転車に乗った状態で、かつ、「タマゴができている状態」でArduinoを挿すだけで、ひたすら「タマゴを受け取っては孵す」作業を繰り返してくれます。
あとがき
今回は、タマゴの自動受取と自動孵化を実装しました。これでよりこのブログも、偉大なる先駆者たちに近づけたかなぁと思います。何よりも自分の手でちゃんと実装ができてよかったです。これからも皆様、応援のほどよろしくお願いいたします!
*
ところで、今回は、予想外のところでプログラミングにつまずきました。
あまり本ブログではプログラムの実装に関する話をする気は無いのですが、今後のプログラミングでも気をつけなきゃなと感じたのでここに「あとがき」として載せます。
Arduinoのint型は2バイトなので32767までしか扱えない
C言語で組み込みやマイコン以外しか触ってこなかった人にとってはかなり衝撃的というか、違和感があるのですが、なんと、int型なのに2バイト(16bit)しかありません。つまり、扱える整数は216=65536通りしかないため、unsigned(マイナスを考えないモード)でも65535までしか扱えないことになります。無論、プログラム中のリテラル(定数)も同様なので、演算の結果intの範囲を超えるとオーバーフローします。
具体的に何に困ったかというと、要するにそのままだと、Arduinoでは「32767ミリ秒以上」待機させることができない(⇒32秒までしか待機できない)ということでした。
…というか10本以上記事を書くだけプログラムしておきながら、今まで一切オーバーフローの可能性に気がつかなかった(=その桁数を扱わずに済んでいた)というのは、奇跡と言わざるを得ません。 一応、ケーススタディとして下記に具体例を載せて解説します。
うまく行かないプログラムソース例:「57秒待機させようとしたらオーバーフローする」
このソースでは、「WAITTIME*1000」の計算結果が「57000」になりますが、これが「int型」で演算され、最大値32768以上になることで意図した結果とは異なる動きをしてしまいます。
結論:long intにキャストすればArduinoでも4バイトになる
前述のオーバーフローについて、原因は「文字定数もint型で演算されていること」です。結論、「long型(4バイト)」にキャストしておけば期待した通りに動作します。すなわち、リテラルに接尾辞「L」を付け加えることで解決できます。
改善したプログラムソース例(うまく動く例):「57秒待機するにはlong型にキャストしておく」
上記例では、1000の後に「UL」をつけてunsigned long int型にキャストしています。
接尾辞「L」をつけることで「long型」として扱われます。ちなみに「U」は「unsigned」の意なので、負の数を扱わないことを示します。
*
以上、Arduinoのハードウェア仕様に関する内容にも触れたあとがきでした。この知見も、見る人が見るとためになる内容だと思います。
いずれにしても、皆様のポケモン自動化ライフがよりよいものになることを願っております。
追記:ニャビーの色違い無事に出せました! (1/17 11:27追記)
本ブログを執筆したのが本日1/17の午前4:09。ブログ投稿からわずか6時間、色違いに出会えました。また、このプログラムを動かし続けて7時間以上、ループの破綻なく、無事に動いておりました。これは個人的に安心できました。
なお、今回はわずか189試行で出会えました。これは強運。
改めて、皆様も良い自動化ライフを。
ではではc⌒っ.ω.)っ
導入記事: 【Arduino自動化01】Arduino開発環境の導入
前記事:【Arduino自動化11】5番道路で全自動羽集め【DLC不要】
【Arduino自動化11】5番道路で全自動羽集め【DLC不要】
ますたーです。こんにちは。
今回は、「5番道路」の橋の上でひたすら努力値振りに使える「ハネ」系アイテムの自動回収を行う記事です。
なお、Arduino Leonardo自動化の導入・機材構成については導入記事を参考にしてください。
導入記事:【Arduino自動化01】Arduino開発環境の導入
※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。
概要
本記事では、ランクマバグ状態※を利用した、羽系アイテムの自動回収を実装します。
※便宜上「ランクマバグ」と表記しますが、当ブログではランクマッチを使用しません。通信切断・初手降参の推奨もしません。
NintendoSwitch Ver.11.0アップデート対応済です。
★2021/9/20追記:NintendoSwitch Ver.13.0アップデート対応済です。
★2022/10/23追記:NintendoSwitch Ver.15.0アップデート対応済です。
では、目次です。
- 概要
- 羽集めで端数の努力値振りも簡単に
- 日付変更+マップ切り替えで無限に羽が集まる
- ランクマバグで効率的な日付変更が可能に
- 羽集めの自動化は「5番道路」が最適
- 自動化プログラムの使い方
- ソースコード
- あとがき
羽集めで端数の努力値振りも簡単に
今回の記事で集める「たいりょくのハネ」「ちりょくのハネ」などのいわゆる「ハネ系アイテム」は、 ポケモンの基礎ポイント(努力値)を1増やすことができます。
ポケモンの育成をする上で努力値振りという作業をしますが、極振り(252振り)以外の端数で努力値を扱う場合には、10単位でしか努力値が増やせない各種ドーピングアイテム(タウリン・ブロムヘキシンなど)では対応できないため、1単位で努力値を増やせる「○○のハネ」は大変重宝します。
日付変更+マップ切り替えで無限に羽が集まる
「○○のハネ」はドロップアイテムとしてガラル地方の様々な場所に隠しアイテムとして落ちています。
これらの場所で拾える羽系アイテムは、1日経過で「同じ場所」に復活するため、これらの拾えるポイントを事前に覚えておけば、毎日これらのポイントを周回することでコツコツと集めることができます(例えば「5ばんどうろ」の橋の上や「エンジンシティはずれ」の橋の上、ヨロイじまの海上など)。
条件についてより厳密には、日付の切り替え+マップ切り替え(そらとぶタクシー含む)の条件2つを満たすと復活するため、巣穴が近くにある場合には、いわゆる「日付バグ」との併用で無限に回収し続けることができます。
手動でやる場合は、ヨロイじまの「ワークアウトのうみ」の岩(一礼野原の駅を出て目の前に見える海上の岩)がおすすめです。岩場を1周するだけで羽が集められ、ポケモンの巣穴もあるため日付変更ペナルティの回避もできます。前述の通り羽の落ちている場所は常に一定なので、場所を覚えれば効率的に回収できます。
ランクマバグで効率的な日付変更が可能に
前回の記事でも紹介しましたが、ランクマッチ1戦の直後や、YY通信のカジュアルバトルで機内モードに変更した際に、日付変更ペナルティが解除されるバグ(通称:ランクマバグ)があります。これを活用することで、短い時間で場所を選ばず効率的に日付変更ができるようになります。
なお、ランクマッチを使用しない方法での「ランクマバグ状態」移行は下記手順でできます。画像は過去記事の使いまわしです。あしからず。
- YY通信で「通信対戦」を行う(ローカル通信)
- もう一台のSwitch・剣盾を使ってその通信対戦に応じる
- 戦闘が始まったらHomeボタン長押し→「機内モード」をONに変更する
- エラーが発生するのでそれを閉じて、「にげる」選択
- フィールド画面に戻ってくる(ランクマバグ状態に移行完了)
羽集めの自動化は「5番道路」が最適
前述の通り、羽を集めるには、大きく「日付変更+マップ切り替え」と「羽を拾う動作」の2つを繰り返す必要があります。自動化する上で、この「日付変更+マップ切り替え」が結構な曲者です。
上記でおすすめした「ワークアウトのうみ」では、近くに「そらとぶタクシー」で移動できるポイントがあるため都合が良いのですが、海上に位置するため、道中、ポケモンに遭遇する可能性が高いです。具体的には、サメハダーに襲われたりタマンタが跳ねてきたり、他にもキャモメが空を飛んでいたりなどで不意な戦闘が発生するため、一定の動きでプログラミングしてしまうと、ループが途切れてしまいます。
そこで、羽集めの自動化には、「そらとぶタクシー」で近くにアクセスできて、ポケモンとの遭遇がほぼ発生しない「5番道路」を活用します。
「そらとぶタクシー」でこれらが選択できるよう、あらかじめ「5番道路」のキャンプ場と「預り屋さん」に足を運んでおきましょう。
ちなみに、5番道路を活用することで「DLCが不要」 という副次的なメリットもあります。剣盾ビギナーの方にはそういう意味でもおすすめと言えます。
自動化プログラムの使い方
今回のプログラム(ソースコードは後述の通り)は、上記の通り5番道路で羽集めを自動で行うものです。できるだけ効率化を図るため、下記条件で動くようにしました。
この状態でArduinoを挿すと、「日付変更⇒そらとぶタクシーで預り屋に移動⇒10枚の羽を拾う」をひたすらループしてくれます。
- ランクマバグ状態であること
- そらとぶタクシーで「5ばんどうろ」「あずかりやさん」が選択可能なこと
- 「話の速さ」が「はやい」になっていること
- Xボタンでメニューを開いた時に「タウンマップ」にカーソルが合うこと
- 5番道路で自転車に乗っていること
ソースコード
ランクマバグ状態・5番道路で自転車に乗ってArduinoを挿すだけの簡単仕様です。
2021/9/20追記:NintendoSwitch Ver.13.0アップデート対応済(詳細はこちら)
2022/10/23追記:NintendoSwitch Ver.15.0アップデート対応済
※Switch Liteをご利用の方は「#define SWITCH_VER (15)」を「#define SWITCH_VER (12)」に書き換えてご利用ください。ただし、未検証です。
日付変更処理部分を関数にしたので、loop()の中が多少読みやすくなりました。
あとがき
今回の記事では、対応する努力値を「1」だけ増やすことができる、いわゆる「羽系アイテム」の自動回収について紹介しました。
前回の「【Arduino自動化10】きのみ・ぼんぐり自動回収」を使えば、対応する努力値を「10」下げられるので、これらを併用することで、努力値調整がかなり簡便に行えるようになりました。
さらに、技レコードやミント、各種カプセルなどは、それぞれ「ワット(【Arduino自動化03】ワット稼ぎ・自動回収)」、「バトルポイント(【Arduino自動化08】バトルタワー自動周回【BP稼ぎ】)」や「マックスこうせき(【Arduino自動化06】完全放置「マックスこうせき」集め)」で引き換えられるため、今までのものも含めて育成環境の整備がしっかりとできるようになってきたかな、と感じています。
アイテムなどの回収作業をArduinoで自動化でき、さらに副次的に、育成論の検討や対戦に時間を割けるようになるのは、まさに一石二鳥なのではないかと思います。皆様のプレイスタイルに応じてうまくご活用いただければ幸いです。
ではではc⌒っ.ω.)っ
前記事:【Arduino自動化10】きのみ・ぼんぐり自動回収
【Arduino自動化10】きのみ・ぼんぐり自動回収
ますたーです。こんにちは。
今回は、「きのみがとれる木」を自動で揺らし、完全放置で「努力値下げきのみ」や「ぼんぐり」などを集めるArduino Leonardo自動化の記事です。
記念すべき10個目の「Arduino自動化」に関する記事です。引き続きよろしくお願いします!
なお、Arduino Leonardo自動化の導入・機材構成については導入記事を参考にしてください。
導入記事:【Arduino自動化01】Arduino開発環境の導入
※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。
概要
本記事では、ランクマバグ状態※を利用した、きのみの自動回収を実装します。
※便宜上「ランクマバグ」と表記しますが、当ブログではランクマッチを使用しません。通信切断・初手降参の推奨もしません。
NintendoSwitch Ver.11.0アップデート対応済です。
★2021/9/20追記:NintendoSwitch Ver.13.0アップデート対応済です。
★2022/10/23追記:NintendoSwitch Ver.15.0アップデート対応済です。
では、目次です。
つくったきっかけ
きのみ・ぼんぐりの自動回収については、すでに沢山のブログで紹介・掲載されていると思います。一方で、当ブログへの検索流入を調べたところ「ぼんぐり 自動化」で検索してアクセスされる方が一定数いらっしゃるため、おそらくまだまだ需要があるかと思いましたので、更新するに至った次第です。
また、他のブログでは、先月のNintendo SwitchのVer.11のアップデート(Nintendo OnlineボタンがHome画面に実装された奴)に対応していないものも一定数見受けられるため、そういう意味でも需要があるかな、と思います。
一応、ベーシックな「きのみ高速回収のやりかた」に沿って執筆していますので、Arduinoをお持ちでない方にも楽しく読めるように心がけています。
なお、「きのみ回収の使い方も手順も知っとるわ!ソースコードだけくれ!」 という方は読み飛ばしてください⇒読み飛ばす
集めたいきのみ・ぼんぐりが出やすい木を揺らそう
きのみ・ぼんぐりを効率的に集めるにあたって、「どこの木を揺らせば良いのか?」が大変重要です。
例えば、「こうげき」の基礎ポイント(努力値)を「10」下げる効果を持つ「ネコブのみ」を集める場合、7番道路やナックル丘陵の木からランダムに入手できますが、ヨロイじまの「ワークアウトの海」の木(「並ぶ島の海」側)であれば「ネコブのみ」が確定で落ちてきます(それ以外のきのみは落ちてきません)。
すなわち、揺らして手に入るきのみの種類や量が場所によって違うため、狙ったきのみが出やすい木で揺らし続けることが重要です。
特に需要が大きいかと思いますので、各種努力値下げきのみについて、下表におすすめの木の場所を纏めました(結構頑張りました)。ご参考ください。
狙う「きのみ」が落ちてくる木の場所の一覧(アルファベット表記は「ポケモン徹底攻略」に準じる)
「きのみ」の名前 | きのみの効果 | おすすめの場所 | 備考 |
---|---|---|---|
ぼんぐり全種 | ガンテツボールの 材料になる |
集中の森 (ヨロイじま) |
当エリア内の どの木でもOK。 ※出やすさに偏りあり |
努力値下げきのみ全種 ※個別に集める場合は それぞれ下記推奨 |
対応する努力値を 10だけ下げる |
巨人の鏡池 (ワイルドエリア) |
DLC不要。 当エリアには1本しか 木が無いため迷わない |
ザロクのみ | 「HP」努力値を 10だけ下げる |
離れ島海域(ヨロイじま) |
|
ネコブのみ | 「こうげき」努力値を 10だけ下げる |
ボールレイクの湖畔(カンムリせつげん) |
|
タポルのみ | 「ぼうぎょ」努力値を 10だけ下げる |
ボールレイクの湖畔(カンムリせつげん) |
|
ロメのみ | 「とくこう」努力値を 10だけ下げる |
ボールレイクの湖畔(カンムリせつげん) |
|
ウブのみ | 「とくぼう」努力値を 10だけ下げる |
鍛錬平原(ヨロイじま) |
|
マトマのみ | 「すばやさ」努力値を 10だけ下げる |
ボールレイクの湖畔(カンムリせつげん) |
ランクマバグ状態で効率的にきのみを回収する
ランクマバグ状態ならきのみが即復活
きのみ・ぼんぐりの効率的な回収に関しては、ランクマッチ後やYY通信のカジュアルバトルで機内モードに変更した際に日付変更ペナルティが解除されるバグ(通称:ランクマバグ)を活用します。ランクマバグ状態であれば、きのみを回収してすぐにHome画面から日付を変更することで、再度きのみを復活させることができます。
Switch2台あればランクマッチ不要で「ランクマバグ」状態に
いわゆる「ランクマバグ状態」への移行は、ランクマッチ1戦の代わりに、下記手順でも可能です。Nintendo Online未加入など、ランクマッチができない場合に重宝します。
なお、Switchを2台用意できないなどでこの方法が使えない人は素直にランクマッチで1戦してください(その場合、Nintendo Onlineへの加入が必要です)。
- YY通信で「通信対戦」を行う(ローカル通信)
- もう一台のSwitch・剣盾を使ってその通信対戦に応じる
- 戦闘が始まったらHomeボタン長押し→「機内モード」をONに変更する
- エラーが発生するのでそれを閉じて、「にげる」選択
- フィールド画面に戻ってくる(ランクマバグ状態に移行完了)
ちなみに、しっかりとランクマバグ状態に移行できているかを確認するためには、一度Home画面に戻り、もう一度ゲーム画面に戻ると分かります。ゲーム画面に復帰した際に、一瞬だけ画面全体がチラッと暗転すればOKです。
なお、【Arduino自動化05】乱数調整レイドで色違いパッチルドン探し【冠の雪原】の記事で紹介した時とは違い、今回は一度に大量の日付変更を行わない前提なので、必ずしもポケモンセンターに移動する必要はありません(画像は使いまわしです)。
プログラムのソースコード
「ランクマバグ状態」で、揺らしたい木の目の前でArduinoを挿すだけの簡単仕様です。
2021/9/20追記:NintendoSwitch Ver.13.0アップデート対応済(詳細はこちら)
2022/10/23追記:NintendoSwitch Ver.15.0アップデート対応済
※Switch Liteをご利用の方は「#define SWITCH_VER (15)」を「#define SWITCH_VER (12)」に書き換えてご利用ください。
結構お手軽ですね。
あとがき
今回は、いわゆる「ランクマバグ」を利用した、全自動「きのみ」「ぼんぐり」高速回収のプログラムを紹介しました。
紹介していて言うのも変な話なのですが、個人的には「ランクマバグ」という表現があまり好きではありません。というのも、一昔前まで、ランクマッチでの初手降参や、見ず知らずの人とのYY通信から機内モード(=切断)を通して「ランクマバグ」に移行することを紹介するWebサイトや動画が散見され、各人のリテラシーが問われるようなバグの活用と周知が成されていたからです。
当時の煽りを目の当たりにしていた私からすると、ランクマバグ自体が敬遠されるべきものとしてイメージされていました(ゆえに、自動化記事2つ目「【Arduino自動化02】雪中渓谷のワットショップの目玉商品を全自動回収」についても、ランクマバグを利用しない方法で作成していました)。
今でこそ、マナーアップ啓蒙も含めた紹介動画やWeb攻略情報の掲載がされており、真摯にランクマッチ1戦で紹介されたり、各人でSwitchを2台用意した上での機内モード活用が紹介されたりしているため、一昔前ほどの心配は杞憂なのでしょうが、そういった背景心情があった上での記事執筆だとご理解いただければと思います。
つきましては、釈迦に説法かとは思いますが、読者の皆様においても、上述のような「他人に迷惑がかかる方法」でのバグ活用はお控えいただくよう、お願いします。
*
ところで、2020年11月7日 に本ブログを始めてから、明日で3ヶ月を迎えます。PV数・検索流入数も少しずつですが増えてきており、お陰様でモチベーションも保ちながら更新ができています。まだまだ駆け出しの当ブログですが、もし皆様のお役に立てるところがあれば幸いです。
もし、「いつも見てます!」とか「応援してます!」と言ったハートウォーミングな御仁がいらっしゃれば、「コメント」や「はてなスター」を残していただけますと幸いです。
どうぞ、引き続きよろしくお願いいたします。
ではではc⌒っ.ω.)っ
導入記事:【Arduino自動化01】Arduino開発環境の導入
【Arduino自動化09】ポケモンキャンプでカレー自動調理【カレーのあかし】
ますたーです。あけましておめでとうございます。2021年もよろしくお願いいたします。
今回は、ポケモンキャンプで「カレー」を自動で調理するArduino Leonardo自動化の記事です。
なお、Arduino Leonardo自動化の導入と、機材構成については導入記事をご覧ください。
導入記事:【Arduino自動化01】Arduino開発環境の導入
※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。
概要
本記事では、ポケモン剣盾の「ポケモンキャンプ」の「カレー」づくりを自動で行います。「クラボのみ」を6個ずつ消費(食材不要)して、マホミル級のカレーを完全放置で作ってくれます。カレーのあかしを持ったポケモンの厳選が効率的にできます。
2021/6/9追記:ポケモン捕獲までの完全自動化に成功しました。合わせてご参考ください⇒【Arduino自動化09ex】「カレーのあかし」持ちポケモンの完全自動厳選【キャンプでカレー】
それでは、今回の目次です。
- 概要
- つくったきっかけ
- 調理後、まれに「カレーのあかし」を持ったポケモンが見つかる
- 「マホミル級」のカレーづくり
- 手持ちときのみを揃える(事前準備)
- 欲しいポケモンが出てくる道路に行こう (準備)
- プログラムの使い方
- プログラムのソースコード
- あとがき
- おまけ(パッチルドンのはなみず)
つくったきっかけ
Twitterのタイムラインを眺めていたところ「カレーのあかし」を持ったポケモンが手に入る場所についてまとめた投稿を見かけて、何故か猛烈に「『カレーずきなモルペコ』が欲しい!」と思ってしまったので作りました。
カレーで来てくれる
— だま (@monst_dama) March 9, 2020
ポケモン一覧です
RTとファボで保存OKです!
ご活用ください!#カレー証持ち色違い厳選 pic.twitter.com/lx7IK5iKZJ
調理後、まれに「カレーのあかし」を持ったポケモンが見つかる
最初にカレー作りの目的について紹介します。「目的なんかわかりきっている!使い方とソースコードだけ寄越せ!」という方は読み飛ばしてください⇒読み飛ばす
まず、ワイルドエリア・ヨロイじま・カンムリせつげん以外の道路上(例えば9番道路など)で、「ポケモンキャンプ」でカレーを作ると、時々、その香りに釣られてポケモンがやってきます。話しかけると仲間になってくれます。
さらに、カレー調理後にやってきたポケモンは「カレーのあかし」リボンを必ず持っているという特徴があります。
いわゆる「証厳選」をしたことがある人はご存知かと思いますが、「○○のあかし」を持つポケモンは野生でのみ出現します。ところが、そのポケモンが証を持っているかどうかは捕まえないと分かりません。しかも、その所持率はおおよそ2%で、なんと証の種類もランダムです。狙った証をつけるのは至難の業と言えます。
一方で、カレーを作った後の野生のポケモンは必ず「カレーのあかし」を持っているため、狙った証を100%つけることができます。今回のお目当ては、「カレーのあかし」を持ったモルペコです(モルペコの特性は「はらぺこスイッチ」ですし、「カレーずき」の二つ名はまさにピッタリですよね)。
なお、野生ポケモンが来てくれる確率は、手持ちポケモンのなつき度と、作ったカレーのランクによって変わります。
有志による検証によれば、最もポケモンが出やすいカレーのランクは「マホミル級」で、その確率は1/7(約14%)だそうです。ちなみに、左記は手持ちがなつき度MAX6匹の状態でのお話です。なつき度はカレーを作ると上がるので、カレーずかん埋めも兼ねて、とりあえず無限にカレーを作り続けるのが良いでしょう(適当)。
「マホミル級」のカレーづくり
完全に余談です。直接は関係無いので、事前準備まで読み飛ばしもOKです⇒読み飛ばす。
前述の通り、カレー調理後に最もポケモンが出やすいのは「マホミル級」なのですが、作中で無限に買うことができる「きのみ(クラボのみ・モモンのみ・オレンのみ・カゴのみ)」で「マホミル級」を出すのは結構シビアです。
具体的には、6個以上のきのみを入れて、一切のミスなく上手に調理できれば「マホミル級」になります。火起こしと真心はともかく、かき混ぜがかなり難しいです。
一応、食材屋でごくまれに購入できる2200円食材「しっぽのくんせい」「ゆでタマゴ」「フサパック」「モーモーチーズ」や、マックスレイドバトルでまれに手に入る「キョダイパウダー」、ワイルドエリアで拾える「ながねぎ」を使うと、完全放置(無操作)でも「マホミル級」が確定しますが、入手が困難だったり、試行回数を考えるとコスパが悪かったりします。
また、150円食材や400円食材、950円食材では「マホミル級」を幾分作りやすくなりますが、こちらは完全放置というわけには行きません。
なので、私にて色々試したり考えたりした結果、食材は入れず、調理は超一流のシェフ(Arduino Leonardo)におまかせすることにしました。
手持ちときのみを揃える(事前準備)
「カレーのあかし」を持ったポケモンを効率的に呼ぶためには、事前の準備として、「最高になついたポケモン6匹」と「大量のきのみ」が必要です。
なつき度(なかよし度)を最大ランクまで上げるには、キャンプでの触れ合いが不可欠です。カレーを沢山作って一緒に過ごしてください。なお、性格に合ったカレーの味だとなかよし度が上がりやすいそうです。それぞれのポケモンの好みに合わせてカレーを作ってあげてください。
続いて、きのみの調達です。
前述の通り平均して7調理ごとに1回しかポケモンには会えない上に、1回毎に少なくとも6個単位できのみを消費するため、大量のきのみが必要になります。地道に木を揺らしていくのは手間暇かかるため、余りがちなお金で無制限にきのみを購入できるブラッシータウンの「きのみショップ」を利用します。DLCを購入している人はヨロイじまのきのみショップでもOKです(ヨロイじまだと4種類から買えます)。
1個80円で買えるので、「クラボのみ」を999個買ってください。8万円を切ります。
※買ったきのみは「リュックの一番上」においてください。クラボのみはきのみの種類順で1番になるのでリュックの一番上に来ているはずですが、もし一番上じゃなかったら適宜並び替えてください。
※「クラボのみ」でなくても大丈夫です。本プログラムは「モモンのみ」「オレンのみ」「カゴのみ」のいずれも動作確認できています。無論、「リュックの一番上」においてください。
欲しいポケモンが出てくる道路に行こう (準備)
カレー作り後に現れるポケモンは、シンボルエンカウントではなく、草むら・水上で「!」と共に出現するポケモンから選ばれます。また、前述の通りワイルドエリアやDLCの島々では出現しません。これらを勘案して、自分の欲しいポケモンを図鑑の分布などを見ながら探してください。
なお、本記事ではモルペコが欲しいのでルートナイントンネルの右側の9番道路(=スパイクタウンはずれ)に行きます。
プログラムの使い方
下記が必要な条件です。特に重要な準備については前述の通りです。その他は、普通にプレイしていれば満たしているはずですが、念の為合わせて確認してください。
- なかよし度MAX のポケモン6匹が手持ちにいる
- 充分な量の「きのみ(クラボのみ999個など)」がリュックの一番上にある
- 食材を1つ以上持っている(一切消費しませんが、食材欄が空っぽだとうまく動きません)
- 充分な量の「モンスターボール」「スーパーボール」「ハイパーボール」いずれかを持っている(これらのいずれかにしか入りません。原則としてモンスターボールが優先されます)
- ボックスが空いている
これらを満たしたら、メニューから「ポケモンキャンプ」を開いてください。
そして、ポケモンキャンプが開いたら、手動で一度Xボタンを押し、カーソルを「料理」に合わせてからBボタンでメニューを閉じてください(重要)。
この状態でArduino Leonardoを挿したら、あとは勝手に調理をしてくれます。調理後、10秒ほどかけて自動でキョロキョロしてくれるので、目当てのポケモンがいたらArduino Leonardoを抜いてください。
プログラムのソースコード
ポケモンキャンプでカーソルが「料理」に合う状態でメニューを閉じてからArduinoを挿すだけの簡単設計です。全自動で「調理⇒調理後キョロキョロ」をひたすら繰り返してくれます。目当てのポケモンが見つかったら引っこ抜いてください。
2021/6/9追記:ポケモン捕獲までの完全自動化に成功しました。合わせてご参考ください⇒【Arduino自動化09ex】「カレーのあかし」持ちポケモンの完全自動厳選【キャンプでカレー】
所有する「クラボのみ」の数(1~999)と、1回の調理で消費するきのみの量(1~10)をプログラム中でそれぞれ「CHERI_BERRY」「USING_BERRY」で指定することができます。
残りの量が消費予定量を上回った場合にプログラムは自動で止まるように設計していますので、手持ちのきのみの個数を勘案の上、必要に応じて書き換えて使ってください。
なお、「USING_BERRY」の数ですが、5個以下だと確定で「ソーナンス級」になります。「マホミル級」のカレーを作るには、最低でも6個は必要です。また、6個にしていても、20回くらいに1回くらいの割合で何故かソーナンス級になることがあります。理由は分かりませんが、なんとなく心配な人や、試行回数よりも精度を求めるという人は「10個」にしてください。一応、筆者としては「6」または「10」のいずれかを推奨します。
それではソースコードです。
あとがき
改めまして、新年あけましておめでとうございます(執筆:2021年1月2日)。昨年の11月にこのブログを始めて、なんとか更新を続けることができています。
アクセス数も順調に伸びてきていて、時には「はてなスター」をいただいたり、読者が増えたり、コメントで「マイコン導入のきっかけになった」と報告をいただいたり、 など、まだまだ駆け出しの当ブログですが、皆様にモチベーションを支えられて更新が続けられているなぁ、と感じます。これからもどうぞ応援のほどよろしくお願いいたします。
さて、今回はポケモンキャンプの「カレーづくり自動化」にフォーカスを当てた記事でしたが、やはり自分の思ったとおりにプログラムが動くのは気持ちが良いものですね。今回のプログラムは試行錯誤しながら作ったので、達成感もひとしおでした。
特に、自分がスティック入力をしていないのにカレーが自動でかき混ぜられている様子を見るのが楽しかったです。
前々回の記事では、スティック入力に対応した雛形をつくりましたが、1方向に倒し続ける動作はもちろん、回転させるなどの一連の動きをコントロールできるのは、より人間の作業に近いものを扱えるようで嬉しく思いますね。
もちろん、マクロ対応コントローラーでは絶対真似できない芸当ですし、人間でもこんなに正確に操作はできないので、今回の例はまさにArduino Leonardoならではの自動化とも言えると思います(言い過ぎかな)。
話が逸れましたが、以降も精進して参りますので今後ともどうぞよろしくお願いいたします。
ではではc⌒っ.ω.)っ
2021/6/9追記:ポケモン捕獲までの完全自動化に成功しました。合わせてご参考ください⇒【Arduino自動化09ex】「カレーのあかし」持ちポケモンの完全自動厳選【キャンプでカレー】
前回記事:【Arduino自動化08】バトルタワー自動周回【BP稼ぎ】
次回記事:【Arduino自動化10】きのみ・ぼんぐり自動回収
導入記事:【Arduino自動化01】Arduino開発環境の導入
おまけ(パッチルドンのはなみず)
この記事の中のどこにも入れられなかったのですが、どうしても紹介したかったことが1つあったので追伸として。
パッチルドンといえばいつも凍えていて鼻水を垂らしていますよね。
でも、カレーを食べている時だけ、パッチルドンの震えも鼻水も止まっているのです。
上でさんざんGIF動画の中に映っていましたが、気づきましたか?
以上です。今年もよろしくお願いいたします。c⌒っ.ω.)っ
【Arduino自動化08】バトルタワー自動周回【BP稼ぎ】
ますたーです。こんにちは。
今回は、「バトルタワー」自動周回で、BPを稼ぐArduino Leonardo自動化の記事です。
なお、Arduino Leonardo自動化の導入・機材構成については導入記事を参考にしてください。
導入記事:【Arduino自動化01】Arduino開発環境の導入
※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。
概要
本記事では、シュートシティの「バトルタワー」自動周回を実装します。
目次です。
経緯
バトルタワー周回という「いまさら」感が強いタイミングでの記事化となりますが、実は、当ブログのアクセス状況を確認すると、ダイマックスアドベンチャーの自動周回記事が(アクセス数も検索流入も)大変盛況なのです。
どうやら、従来のマクロ対応コントローラーでできることをマイコン(本ブログだとArduino Leonardo)に対応させたいという需要は一定数あるらしく、それならこのブログでも取り上げる価値があるかな?と思ったので記事化しました。
BP(バトルポイント)は、お金やワットとは引き換えられないもの(いじっぱりミントなど)も多いため、そういう意味でも需要はあると思います。
この記事のスタンス
本記事では、下記の前々回・前回(第6回・第7回)の記事に引き続き、マクロ対応コントローラーの代替用の雛形をベースにArduino Leonardo用にプログラムを書いていきます。例のごとく、入力するコマンド列が予め分かっているものを活用します。
なお、本ブログで扱うコマンド列は、私が考案したものではありません。ダイマックスアドベンチャーの記事でも紹介した、あずき氏によるものです。当該ブログ記事を下記にて引用します。合わせてご参考ください。
バトルタワー自動周回のやりかた
バトルタワーの自動周回には、以下の条件を満たしている必要があります。
1のマスターランク到達は前提ですが、今作では禁止伝説級のポケモンが使用できるのでゴリ押しで攻略可能です。1時間ほどでマスターランクに到達できると思います。
2の自動周回用パーティーですが、
の3匹を準備してください。なお、それぞれのPPは最大値まで増やしておきましょう。
自前で準備が難しければレンタルチーム(要Nintendo Online加入)でも可能です(参考チームID:0000 0000 5MJ4 0K)。
コマンド列ですが、原則としてAボタン連打で攻略していき、ポケモン入れ替えなどのために「↑」や「B」を押す、というイメージです。下記を御覧ください。
自動周回のコマンド入力列(あずき氏のブログ記事より引用・一部改変)
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
A | A | A | A | ↑ | A | A | ↑ |
9 | 10 | 11 | 12 | 13 | 14 | 15,16 | |
A | A | A | A | B | ↑ | R,R(連打) |
※指定が無い部分のキー入力間隔は約1.5秒
要するに、この16コマンドをひたすら繰り返すことで、バトルタワーを延々と攻略してBPを稼いでくれるということです。すごいですね。
自動化コマンドの実装
前回の記事で紹介した雛形・関数の要領で、前述の16コマンドを入力していきます。雛形は下記テキストボックスからコピペも可能です。今回はスティック入力が無いので、「PushKey("入力キー", 長押しミリ秒, 待機ミリ秒 ); 」を16行並べるだけです。
Arduino Leonardo自動化用 プログラム雛形
前述のコマンド列を関数に当てはめると下記の様になります。この雛形の中に下記「loop(){」と「}」の間16行を埋め込むだけでプログラムになります。
こちらは説明用に抜粋したプログラムの一部です。プログラム全文は⇒コチラをクリックして読み飛ばす
なお、今回は15個目のRと16個目のRの間を連打するので、それぞれの待機時間を150ミリ秒(充分短い時間)にしています。なお、この間が極端に短すぎる(例えば10ミリ秒などに設定する)と、Switch側がボタンの押下状態を認識できずコマンドミスすることがあるようです。注意しましょう。
プログラムの使い方
前述の通り、攻略用3匹のみのパーティーを準備の上、シュートシティの上側にあるバトルタワーへ行き、受付の前でArduino Leonardoを差し込むだけです。
なお、初回は「手持ち」にカーソルが合っていると思いますので、上記のレンタルチームを活用している人は、手動でそちらにカーソルをあわせておいてください。
プログラムのソースコード
雛形は前回の記事と同一です。
あとがき
本記事では、Arduino Leonardoを使ったバトルタワー自動周回(BP稼ぎ)について紹介をしました。
パーティーをいくつも作っていると「こだわりメガネ」「こだわりスカーフ」が足りなくなったり、不意の事故で「きあいのタスキ」「ふうせん」などを野生戦で消費してしまったりしますよね。ほかにも、育成用に欠かせない「ようきミント」「いじっぱりミント」なども不足しがちです。このあたりの道具が引き換えられるのはありがたいですね。
今回のバトルタワー然り、前回のトーナメント然り、前々回のダイマックスアドベンチャー然り、ポケモンには対人戦の準備に関わる「周回」が切っても切り離せないですね。無論、こういったエンドレスに遊べるコンテンツを通してやりこみや対人戦前の調整をするのが目的になるのでしょうが、アイテム回収を目的にすると少しツライものがあります。この観点において、マクロ対応コントローラーやマイコンは、各人のゲームとの関わり方の選択肢を増やしてくれるので、うまく活用していきたいものですね。
本記事が皆様のポケモン自動化ライフの一助となることを願っています。
ではではc⌒っ.ω.)っ
前回記事:
【Arduino自動化07】トーナメント自動周回【マクロコン代替】
前々回記事:
【Arduino自動化06】完全放置「マックスこうせき」集め【ダイマックスアドベンチャー】
次の記事:
【Arduino自動化09】ポケモンキャンプでカレー自動調理【カレーのあかし】
導入記事:
【Arduino自動化07】トーナメント自動周回【マクロコン代替】
ますたーです。こんにちは。
今回は、「トーナメント」を自動周回するArduino Leonardo自動化の記事です。前回の記事に引き続き、マクロ対応コントローラーで自動化していたコマンドをArduino Leonardoで実装します。今回はJoy-Conのスティック入力操作にもチャレンジします。ゆえに、これを読むとArduino Leonardoでマクロ対応コントローラーの「完全代替」ができるかもしれません。
なお、Arduino Leonardo自動化の導入・機材構成については導入記事を参考にしてください。
導入記事:【Arduino自動化01】Arduino開発環境の導入
※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。
概要
本記事では、シュートシティの「トーナメント」自動周回を実装します。
今回の目次です。
作ったきっかけ
実は、私もマクロ対応コントローラーは持っています。剣盾発売当初から今年の2月まではずっと愛用していたのですが、ずっと下記4点をネックに感じていました。
- 方向キーを輪ゴムなどでアナログに固定しなければならない(安定しない)
- 無線コントローラーだと充電しないと使えない(使い続けられない)
- やることを変えるたびにマクロ登録をし直さないといけない(面倒くさい)
- Homeボタンがマクロに登録できない(設定画面に入れない)
Arduino Leonardoは、これらを全てを解決できるからという判断で購入し、今に至るわけです。結果、良かったと思っています(2台買いました)。
この記事のスタンス
前回の記事では、「決められたコマンド入力」が分かっているものをArduino Leonardoで動く自動化プログラムを作りましたが、今回はその改良版で、Joy-Conのスティック入力にも対応させます。
したがって、もし読者の皆様にて「入力したいキーの順番があらかじめ決まっている」ものがあれば、スティック入力を含めてプログラムを自分で書ける雛形としてご利用いただけると思います(他のサイトで紹介されているマクロコントローラーの自動化コマンドなど)。ソースコードだけ欲しいという方はどうぞ⇒ 読み飛ばす
トーナメント自動周回のやり方
様々なブログでも紹介されている、かなり有名でオールドスタイルなやり方ですが、努力値AS振りザシアンLv.100@くちたけん(わざ:アイアンヘッドのみ;PP最大値まで増やしておく)1匹のみを手持ちに準備し、コマンドを入力し続けるだけです。ザシアンがいない人は、Lv.100サザンドラ@こだわりメガネ(わざ:あくのはどうのみ)でも多少効率が落ちますがOKです。
肝心の入力コマンドですが、基本的に「A連打、ちょっとだけB」というすごくシンプルな入力です。ただし、スティック上方向を起点(0度)として、時計回りにおおよそ15度~22度の向きに傾ける必要があり、この角度が手動だとかなりシビアです。ズレるとキチンと再戦ができず、ループが途切れてしまいます。
輪ゴムやテープなどでアナログに固定しなければならないマクロ対応コントローラーでは多少ツライですが、この点、Arduino Leonardoであればスティック入力のズレが起こることなく確実に再戦できます。
Arduinoでの自動化の実装
上述の通り、今回のコマンドはかなりシンプルで、スティックを倒しながらA連打+Bを1回というものです。プログラムに起こすと、下記の様になります。
こちらは説明用に抜粋したプログラムの一部です。⇒ 完成版プログラムまで読み飛ばす
今回は「スティックを右上に傾ける」「Aボタンを9回押す」「Bボタンを1回押す」コマンドなので、書き換えはわずか11行で完成します。簡単ですね。
構成としては、前回の記事と同様、「loop(){」とそれに対応する「}」の間に自動化するコマンドを1行ずつ書き込むだけの簡単設計です。新たに「TiltLeftStick()」という関数を実装したので、スティック入力の自動化にも対応しています。
関数の仕様の話をしてもしょうがないですが、要するにJoy-Conの左スティック入力は「どの向き」に「どのくらい倒すか」を指定することで実現できると理解いただければOKです。また、「倒し続ける時間」「スティックを戻した後の待機時間」はそれぞれ「ミリ秒」で指定できます。
なお、倒し続ける時間・待機時間(3つ目・4つ目)をそれぞれ「0」「0」と指定すると倒し続ける(スティック位置を戻さない)こともできます。
上記例だと17°の方向に傾きMAXでスティックを倒し続けるようになっています。
プログラムの使い方(準備)
前述の通り、手持ちをLv100ザシアン@くちたけん 1匹のみにして、シュートシティの右上の方にあるポケモンリーグ本部へ行き、受付の前でArduino Leonardoを差し込むだけです。
プログラムのソースコード
今回のプログラムは前回の記事に機能を追加したものです。読者の皆様が流用して1から使いやすいように、さらにキレイに作っています。
今回はJoy-Con左スティック入力にも対応したので、このソースコードを全文コピペして、loop()の中身だけ好みのものに変更すれば、オリジナルのマクロコントローラーとしても使うことができると思います。興味があればチャレンジしてみてください。
あとがき
今回もマクロ対応コントローラーの代替としてプログラムを実装・紹介しました。新たにスティック入力に対応できるようになったことで、Arduino Leonardoがまさにマクロ対応コントローラーの「完全代替」に一歩近づいたかな、と感じています。
思えば、私が今年2020年の2月にArduinoを買ったきっかけになったのが、まさにトーナメントの自動周回でコントローラーのスティック入力がうまく固定できなかったから、だったのですよね。せっかくデジタルに入力制御ができるマクロ対応コントローラーなのに、肝心の入力がアナログだという矛盾をはらんでいて、個人的に矛盾だらけだなぁと思ったものです。
ゲーム中でも、スティック入力操作を使う動作は沢山ありますし、剣盾なら「カレーづくり」や「マホミルの進化(リザードンポーズ)」、なによりも「町中の移動」や「タマゴ孵化」などでしょうか。今回の雛形を使えば、これらの自動化もおいおい実装できるようになるかもしれませんね。
なにはともあれ、皆様のポケモン自動化ライフが豊かになることを願っています。
ではではc⌒っ.ω.)っ
前回記事:
【Arduino自動化06】完全放置「マックスこうせき」集め【ダイマックスアドベンチャー】
次の記事:
【Arduino自動化08】バトルタワー自動周回【BP稼ぎ】
導入記事:
【Arduino自動化06】完全放置「マックスこうせき」集め【ダイマックスアドベンチャー】
ますたーです。こんにちは。
今回は、「ダイマックスアドベンチャー」を自動周回し、完全放置で「マックスこうせき」を集めるArduino Leonardo自動化の記事です。
さらに、ソースコードの簡単な解説も紹介しますので、これを読むとArduino Leonardoを使った自動化ツール(ちょっとしたマクロ対応コントローラーの代わり)を自力で作れるようになるかもしれません。Arduinoを使った剣盾自動化プログラミングに興味のある方の一助になればと思います。
なお、Arduino Leonardo自動化の導入・機材構成については導入記事を参考にしてください。
導入記事:【Arduino自動化01】Arduino開発環境の導入
※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。
2021年5月4日追記:Switch・剣盾を2台お持ちの方であれば、デリバードのレイドバトルを周回することで「マックスこうせき」をより効率的に回収できます。もしよければ、そちらもご参考ください。
⇒【Arduino自動化18】ローカルレイド自動配布
2021年9月20日追記:通常のレイドバトル「ひとりで挑戦」を完全放置で自動周回するプログラムも作りました。ぜひとも、合わせてご参考ください。
⇒【Arduino自動化19】ねがいのかたまりで自動レイドバトル周回【完全放置で「けいけんアメ」「ヨロイこうせき」】
2021年10月10日追記:Switch・剣盾を2台お持ちの方に向けて、「完全自動」でデリバードのレイドバトルを周回できるプログラムを開発しました!Arduinoも2台必要ですが、その分パワフルな自動化です。
⇒【Arduino自動化20】Switch2台で「完全」自動!レイドバトル自動周回【デリバード・色違いレイドなど】
概要
本記事では、「ダイマックスアドベンチャー(エンドレスモード)」の自動周回を実装します。
今回の目次です。今回はプログラムの書き方も交えますが、説明はいい、早く寄越せという方はどうぞ。 ⇒ 読み飛ばす
作ったきっかけ
実は、今回の記事で紹介するプログラムの流れ自体は、私が考案したものではありません。Twitterのタイムラインを眺めていたところ、あずき(@Azukiss_poke)氏によるマクロ対応コントローラーを使った自動周回方法のツイート(下記)が流れてきて、これをArduinoで実装するか、と思い至った次第です。要するに「Arduino Leonardoがあればマクロコンの代わりになる」というわけですね(暴論)。
ダイマックスアドベンチャーを自動周回してマックス鉱石を手に入れる方法まとめです
— あずき (@Azukiss_poke) 2020年11月2日
多少ムラはありますが、1時間あたり19個の鉱石を集められます#ポケモン剣盾#ダイマックスアドベンチャー https://t.co/BHuPyBKodE
この記事のスタンス
本記事で扱う内容は、「決められたコマンド入力」が分かっているものをArduino Leonardoで動く自動化プログラムを作った、というものです。今までのものと異なり、決められたコマンドがあったので、それをプログラムに書き起こしやすいようにソースコード化しました。
ゆえに、もし本記事を読んでいる皆様のほうで「入力したいキーの順番があらかじめ決まっている」のであれば、それを基にプログラムを自分で書ける雛形としてご利用いただけるかもしれません(他のサイトで紹介されているマクロコントローラーの自動化コマンドなど)。
Arduinoでの自動化にチャレンジ
今回は、あずき氏が下記ブログで紹介している「ダイマックスアドベンチャーエンドレスモードの自動周回方法」をArduino Leonardoで使えるプログラムに書き起こしていきます。出来上がったプログラムは後述します。 ⇒ソースコード
自動周回のコマンド入力列(引用)
1 | 2 | 3 | 4 | 5 | 6 | 間 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
↓ | A | A | A | A | A | 4s | ↓ | A |
9 | 10 | 11 | 12 | 13 | 14 | 15 | 間 | 16 |
↓ | A | A | ↓ | A | A | B | 3s | B(1.5s) |
※指定が無い部分のキー入力間隔は約2秒
上表はこのブログから引用したコマンド入力列ですが、要するに、この16コマンドをひたすら繰り返すことで、ダイマックスアドベンチャー(エンドレスモード)を延々と攻略してくれるということです。
なので、早速、これらのコマンド入力部分のみをプログラムにしてみます。
こちらは説明用に抜粋したプログラムの一部です。完成版プログラムは こちら からどうぞ。
このように、「void loop(){」と、これに対応する閉じカッコ「}」の間に、延々と繰り返す入力内容を挟むだけでArduinoのソースコードは完成します。
なお、今回のプログラムではキー入力を「PushKey();」という関数で実装します。細かいプログラムの仕様の話などをしてもしょうがないので割愛しますが、よくわからない人は「どのキーが何秒間押されて、その後何秒間やすむのか」をひたすら並べるとプログラムになる、とだけご理解いただければOKです。
今回は、ひたすら「押す」⇒「待つ」を16コマンド分繰り返すだけなので、プログラムの書き換える部分も16行で済みます。簡単ですね。
なお、書き換える部分ですが、1コマンドごとに「PushKey」を並べるだけです。
上記「PushKey("A", HOLDTIME, 2000);」の中で、「"A"」と書いている部分=どのキーを押すか、その次=何秒間押し続けるか、最後=キーを離した後に何秒間待つかをそれぞれ表しています。なお、「HOLDTIME」は95に設定しているので「95ミリ秒(=0.095秒)長押し」、すなわち普通にAボタンをポチッと押した後に2秒間待つ、というコマンドになっています。
この要領でプログラムを完成させていきます。全文は後述します。⇒ソースコード
プログラムの使い方(準備)
基本的にあずき氏のブログ記事に載っている通りですが、軽くこちらでも掲載します。
まず、Switchの本体を「機内モード」にします。そして、どうぐの「ボール」欄の一番上には「いらないボールを大量に準備」してください。あとは、ダイマックスアドベンチャー(エンドレスモード)を取り仕切るおっさんの目の前に立ったらArduinoを差し込むだけです。
なお、挑戦の前後には強制的にレポートが書かれてしまうので、貴重なボールが消費されてしまうなどのリスクがあることを理解した上で、使用しましょう。
ソースコード
今回のプログラムはかなりシンプルです。また、読者の皆様が流用して1から使いやすいように、今までの記事よりもきれいめに作っています。
今回のソースコードを全文コピペして、loop()の中身のコマンドを好みのものに変更することで、皆様好みのマクロコントローラーとしても使うことができると思います。興味があればチャレンジしてみてください。
2020/12/13追記:スティック入力にも対応したプログラムを作りました。合わせてご参考いただけます⇒【Arduino自動化07】トーナメント自動周回【マクロコン代替】
あとがき
今回は、マクロコントローラーで自動化されていたものをArduino Leonardoで置き換えたらどのように実装されるかにフォーカスして紹介しました。
自明かとは思いますが、Arduinoによるポケモン剣盾自動化プログラムはとどのつまりマクロ対応コントローラーによるコマンド入力自動化と実質なんら変わりありません。むしろ、キー入力配列の上限にかなり余裕があり、柔軟な入力制御にも対応できる分だけArduinoはマクロ対応コントローラーよりも高機能とも言えるかもしれませんね。
要するに、マクロ対応コントローラーにせよArduinoにせよ、人が入力しているコマンドをプログラムに置き換える手段ですので、自分の工夫次第でいかようにでも動かすことができるのがプログラミングの醍醐味だと思います。
今までプログラミングをしてこなかった方も、もしこの記事を読んで「自動化にチャレンジしてみたい」と少しでも思えたのであれば幸いです。また、今までマクロ対応コントローラーを利用してきた方のうち、「マクロの中にHomeボタンが割り当てられない」という経験をされた方には、ぜひともArduinoでの自動化にもチャレンジしてみて欲しいと思います。
皆様のポケモン自動化ライフがより豊かになることを祈っています。
ではではc⌒っ.ω.)っ
2020/12/13追記:スティック入力にも対応したプログラムを作りました。
是非合わせて御覧ください⇒ 【Arduino自動化07】トーナメント自動周回【マクロコン代替】
前記事:
【Arduino自動化05】乱数調整レイドで色違いパッチルドン探し【冠の雪原】
導入記事: