20240316 ラロワツールの整理（下準備）、自動COOP参加ツールの設計、WSAというもの

毎回1日遅れになるけど昨日の日記

### ラロワツールの整理

ファイルをあれこれ整理しようと思っている。とにかく動かすことしか考えてなかったのでかなり適当すぎる
けど方針をたてようにも現状がわからないのでまずまとめてみた

#### Pythonのファイルたち
* DeckStats.py　：　エントリーポイント、なんだけどいろいろやりすぎている
* modules/counter.py
  * class Counter :　デッキ集計用（なんだけどある程度ゲームUIの操作もやっている）
  * class Operator　： ゲームUIの操作用
* modules/gsheet.py
　* class Spreadsheet　：　グーグルシート操作用
  * class Worksheet　：　ワークシート内のデータ操作用
* modules/gui_operation.py － ゲームUI操作を考えていた
* modules/images.py ： 画像あれこれ、ただ、分ける必要ないかもしれない
  * class BtnImage
  * class LabelImage
  * class Converter
  * class HeroImage ： 要らない？　→　削除した
  * class UtilImage ： 要らない？　→　削除した
* modules/rushroyale_stats.py
  * class RushRoyaleStats : 全ヒーロー、ユニットのインスタンスを作成
  * class CardBase ： 名前、イメージ、レアリティ、
  * class Unit
  * class Hero
  * class MyUnit
  * class MyHero
  * class Deck
* store_data.py － MongoDBへのアクセスを考えていた
* modules/styles.py
  * class Style ： 
  * class TopTrophy
  * class PastSeasonLeader
  * class MaxCrit
  * class RhandumLeague
* modules/utils.py
  * class Utils : ちょっとした関数

#### ファイルとフォルダ構成

githubにあるまんまなんだけど整理のためいったん書き下した

```
.
├── images/　　　　　　　　　　　　　　-- 画像認識に使うpng
│   ├── hero/
│   │   ├── common/
│   │   ├── epic/
│   │   ├── legendary/
│   │   └── rare/
│   ├── unit/
│   │   ├── common/
│   │   ├── epic/
│   │   ├── legendary/
│   │   └── rare/
│   └── RR image files...
├── modules/
│   ├── counter.py
│   ├── gsheet.py
│   ├── gui_operation.py　　　　　-- 使ってない
│   ├── images.py
│   ├── rushtoyale_stats.py
│   ├── store_data.py　　　　　　　-- MongoDBに入れるようなんだけどまだ空っぽ
│   ├── styles.py
│   └── utils.py
├── resource/　　　　　　　　　　　-- ヒーロー、ユニット情報が入ってる
│   ├── heroes.yml/
│   └── units.yml
├── secrets/
│   └── (jsonファイル) 　　　　　　-- googleシート操作用のアカウント情報
├── tests/
│   ├── sounds/
│   ├── test_gsheet.py
│   ├── test_rushroyale_stats.py
│   └── test_utils.py
├── .env 　　　　　　　　　　　　　-- secrets/jsonのファイル名指定、notionのAPIキー
├── DeckStats.py
├── conftest.py 　　　　　　　　　-- エラーの時に音出して知らせてくれる
├── pyproject.toml 　　　　　　　 -- ??　使ってないっぽい?
├── pytest.ini 　　　　　　　　　 -- 無視するフォルダ指定
├── requirements.txt
└── setting.yml 　　　　　　　　　-- DeckStats.pyの動作設定、取得対象、件数など
```

#### 気づいたこと
* modules/images.pyっているかな？
つかっているのStyles.pyだけだから、そこで直に指定すればよくない？
まえはユニットやヒーローの画像をまとめていたので結構大事だったけど、今はrushroyale_stats.pyのUnit、Heroクラスに画像入れている
* rushroyale_stats.pyって名前変？ゲーム情報なのでinfoとかそういう方がよいのでは？

つかれたから今日はこんなところで

###　自動COOP参加ツール
画面をウォッチしていて、COOP参加リクエストがきたら自動的に参加するようなやつ
1. Battleのタブがあることを確認して準備モードになる
    1. 変な画面が開いていたら閉じる（だいたい赤い✖ボタンとか戻るボタンとかContinueボタンがある）
        * 運がわるいと違う画面開いていて、Battleタブをクリックしないとだけどレアなのでとりあえず考慮しない
    1. 広告ボタンがあったら見る
        * 広告の音は消す
1. 準備中にリクエストが来たら入る
1. （COOP中は召喚ボタンを押す、マージはしない）
1. 終わったらConitnueボタンや戻る矢印を押して元の画面に戻る
    1. 途中で広告のボタンがあったらそれを優先的に押す

条件文機多くて面倒だなあとおもっていろいろ調べたら状態遷移図で表せるらしい

こんな感じかな
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3740499/290adad1-5540-d9a1-4252-0e63862c18e1.png)

疑問が尽きない
* （～～～がある）というのを状態の四角の中に書いてるけどこれでいいのだろうか？
* ～～なら＝＝する、というのを矢印に書いてるけど、それもいいのだろうか？
* 広告視聴中に入る前の状態は、準備状態とCoop終了画面があるが、広告視聴中はどっちに戻ったらいいのかわかるのだろうか？
* デッキとマップ選択画面はめんどいので下に注釈でどんな動きするか書いてるけど、まあいいのかな？

よくわかりません
まあ、いいや仕事じゃないし、使っているうちにわかってくるでしょう

Pythonではtransitionsという状態遷移を表せるモジュールがあるのでそれを使う
参考：[Pythonの状態遷移パッケージ(transitions)を理解する【準備編】 #Python - Qiita](https://qiita.com/noca/items/53c01ac5afb687a98db8)

### WSAすごそう
AndroidをWindowsの上で動かせるらしい
[【2024最新】Windows11にGoogle Playストアをインストールしたい (WSABuilds)](https://zenn.dev/mimimiku778/articles/65aaa3800af3ec)

ダウンロード、設定のサイト
[Release Windows Subsystem For Android 2311.40000.4.0 for Windows 11 x64 · MustardChef/WSABuilds](https://github.com/MustardChef/WSABuilds/releases/tag/Windows_11_2311.40000.4.0)
これをとってきた：　WSA_2311.40000.4.0_x64_Release-Nightly-MindTheGapps-13.0-RemovedAmazon.7z

ラロワはBlueStacks使ってることがばれると垢banされるけど、これだとどうだろう？