2
0

More than 1 year has passed since last update.

スイッチを自動化してポケモンの乱数消費させたい

Last updated at Posted at 2021-12-19

これは鈴鹿高専Advent Calendar 2021 20日目の記事です
注意 まだちゃんと成功していないので他の人の記事を参考にしていただけると幸いです

概要

ArduinoでNintendo switchを動かすためライブラリが存在するので乱数調整で大量の日付を動かすのでやってみようと思った
使ったライブラリ

剣盾のレイド乱数

夜綱さんとぼんじりさんのツールを使って初期seedを割り出してそこから延々と日付を変更して欲しい個体の場所に持っていくというもの
ぼんじりさんのツール
夜綱さんのツール

注意点

このライブラリがなんかArduino Leonardoとその互換でしか動かないらしいので注意
よく分からんかったのでこれでも見て
参考資料

コード

Rand.ino
#include <NintendoSwitchControlLibrary.h>
#define after_day_count 6801  //何日ずらすか
const int DIN_PIN = 7;

void nday_after(int day);

void setup() {
  //  switchに認識させる
  pushButton(Button::B, 500, 10);
}

void loop() {
  int value = digitalRead(DIN_PIN);

  if (value == LOW) {
    nday_after(after_day_count);
  }
}

void nday_after(int day) {
  int month = 1;
  int count = 1;

  pushButton(Button::HOME, 500);
  pushHat(Hat::DOWN, 300);
  pushHat(Hat::RIGHT, 200, 5);
  pushButton(Button::A, 500);
  tiltLeftStick(Stick::NEUTRAL, Stick::MAX, 1500);
  pushButton(Button::A, 200);
  tiltLeftStick(Stick::NEUTRAL, Stick::MAX, 700);
  pushButton(Button::A, 300);
  pushHat(Hat::DOWN, 200, 2);

  for (int i = 0; i < day; i++) {
    if (i != 0) {
      pushButton(Button::A, 300);
      pushHat(Hat::LEFT, 200, 3);
      pushHat(Hat::UP, 200);
      if (count == 28 && month == 2) {
        pushHat(Hat::DOWN, 200);
        pushHat(Hat::LEFT, 200);
        pushHat(Hat::UP, 200);
        pushButton(Button::A, 200);
        pushHat(Hat::UP, 100, 4);
        month++; count = 1;
        pushButton(Button::A, 200, 4);
      }
      else if (count == 30 && (month == 2 || month == 4 || month == 6 || month == 9 || month == 11)) {
        pushHat(Hat::LEFT, 200);
        pushHat(Hat::UP, 200);
        month++; count = 1;
        pushButton(Button::A, 200, 5);
      }
      else if (count == 31 && month == 12) {
        pushHat(Hat::LEFT, 200);
        pushHat(Hat::UP, 200);
        pushHat(Hat::LEFT, 200);
        pushHat(Hat::UP, 200);
        month = 1; count = 1;
        pushButton(Button::A, 200, 6);
      }
      else if (count == 31) {
        pushHat(Hat::LEFT, 200);
        pushHat(Hat::UP, 200);
        month++; count = 1;
        pushButton(Button::A, 200, 5);
      }
      else {
        count++;
        pushButton(Button::A, 200, 4);
      }
    }
    else {
      pushButton(Button::A, 200);
      pushHat(Hat::RIGHT, 200, 2);
      pushHat(Hat::UP, 200);
      pushButton(Button::A, 200, 4);
      count++;
    }
  }
  pushButton(Button::HOME, 500, 2);
}

結果

ミスってたので帰ったら修正

感想

こんなクッソめんどくさいこと二度とやりたくない
5世代乱数(BW, BW2)の乱数がめっちゃ簡単だったことを思い知った。手動で色レジアイス捕まえるのもこれくらいきついんだろうなぁとよくわからない感情になった。
画像認識で年月動かすタイミング判定すればなかなかスッキリと書けそう。

おわりに

反省会記事にならなくて本当によかった
反省会案件
大体ORASのトリプルフリーに生息しているのでもしよかったら来てみて下さい

2
0
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
2
0