LoginSignup
2
0

崩壊スターレイルの計算アプリをつくった

Posted at

みなさんは崩壊スターレイルってゲーム知っていますか?

miHoYoという会社が作っています!
●ターン制のアクションゲーム
●キャラデザがきれい!
●前身となる原神なんかは爆発的ヒットしていて有名ですね^^

このターン制ゲームはバフやデバフなどの確率で起こる、状態異常の計算式が非常に面倒で
一緒にゲームしている仲間たちが、「YouTubeとか見なくても即座に手元で計算したい・・・」と吐露していたので、Windowsアプリを作ってみよう!と思い、
PythonのTkinterに出会いました!

①環境

今回Wslも入れず、本当にWindowsのみで完結させたかったのが前提にあります。
・下記でPythonをダウンロード(僕の時で3.11.3)
https://www.python.org/downloads/
・下記でVisual Studio Codeをダウンロード
https://code.visualstudio.com/

こんな感じ
image.png
まじで、powerShellしかない・・

計算式はこちらに出ている通りです。
これをソースに落とし込んでいこうと思います。
注意!!Python全然触ったことなくてくそコードです

②Tkinterの参考ソースを何か持ってくる

参考①:
https://python-work.com/gui-tkinter/#:~:text=%E7%94%BB%E5%83%8F%E8%A1%A8%E7%A4%BA%EF%BC%88Photoimage%EF%BC%89-,tkinter%E3%81%A8%E3%81%AF,%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A7%E3%81%99%E3%80%82

参考②:
https://qiita.com/nnahito/items/ad1428a30738b3d93762

真似して書き始める・・

import datetime
import pytz
from tkinter import *
from tkinter import ttk

# ウィンドウを作成
root = Tk()

# ウィンドウサイズを指定
root.geometry("400x500")

# ウィンドウタイトルを指定
root.title('入力フォーム')

frame1 = ttk.Frame(root, padding=(32))
frame1.grid()

# 基礎確率
kiso_kakuritsu_input = ttk.Label(frame1, text='基礎確率', padding=(5, 2))
kiso_kakuritsu_input.grid(row=0, column=0, sticky=E)

# 敵の効果抵抗
enemy_koka_teiko_input = ttk.Label(frame1, text='敵の効果抵抗', padding=(5, 2))
enemy_koka_teiko_input.grid(row=1, column=0, sticky=E)
# -----------------------------------------
# 結果表示用ラベル
result_label6 = ttk.Label(frame1, padding=(5, 2))
result_label6.grid(row=14, column=0, columnspan=2)

# ウィンドウ表示継続
root.mainloop()

③たぶん処理ができたから実行

まずは手始めにバージョン確認

PS C:\Users\st012\Documents\app_practice> python -v
python : 用語 'python' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:1
+ python -v
+ ~~~~~~
    + CategoryInfo          : ObjectNotFound: (python:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

あれ??
ぐぐってみたけどあまりいい情報に出会えずChatGPTに相談。
→お前が悪いんだからパス見直せ!!って言われたので、違う方法で考えよう。

調べてみると、pyコマンドなら使えるようだった。

PS C:\Users\st012\Documents\app_practice> py -V
Python 3.11.3

はい、出た。

次に、エクスプローラーから見えるフォルダ構成はこんな感じ。
このpyw拡張子のファイルをいじってCLIを流せば問題ない。(らしい)
image.png

★ということで、このままGUIアプリ作るためにCLIを用いてコマンド実行

いつもLinuxなら絶対パスを使って、カレントディレクトリから実行するんだけど、Windowsがわけわかめのためディレクトリに入って直にたたく

PS C:\Users\st012\Documents\app_practice\HonkaiStarRail_about_percent> py -m PyInstaller .\starRailHittingPercentList.pyw  --onefile
182 INFO: PyInstaller: 5.11.0
182 INFO: Python: 3.11.3
195 INFO: Platform: Windows-10-10.0.22621-SP0
195 INFO: wrote C:\Users\st012\Documents\app_practice\HonkaiStarRail_about_percent\starRailHittingPercentList.spec
196 INFO: UPX is not available.
197 INFO: Extending PYTHONPATH with paths
['C:\\Users\\st012\\Documents\\app_practice\\HonkaiStarRail_about_percent']
1997 INFO: checking Analysis
2123 INFO: checking PYZ
2144 INFO: checking PKG
2180 INFO: Bootloader C:\Users\st012\AppData\Local\Programs\Python\Python311\Lib\site-packages\PyInstaller\bootloader\Windows-64bit-intel\runw.exe
========================
========================
========================
9050 INFO: Copying 0 resources to EXE
9050 INFO: Embedding manifest in EXE
9051 INFO: Updating manifest in C:\Users\st012\Documents\app_practice\HonkaiStarRail_about_percent\dist\starRailHittingPercentList.exe.notanexecutable
9052 INFO: Updating resource type 24 name 1 language 0
9054 INFO: Appending PKG archive to EXE
9059 INFO: Fixing EXE headers
9130 INFO: Building EXE from EXE-00.toc completed successfully.
PS C:\Users\st012\Documents\app_practice\HonkaiStarRail_about_percent>

成功したら、こんな感じになる。

先ほどの画像の「dist」に入ると実行ファイルが出来上がっている

image.png

ダブルクリック。初回だけ青い画面が出て、
「ほんとにこのユーザ信用してもいい?」みたいなのが出るから、そのまま実行をクリック。

image.png

こんな感じにできあがった。
早速discordにてみんなにファイル共有、
反響もよく、みんな使ってくれてうれしい

さすがにここにexeファイルを置くことはできないですが(責任の所在的に)、もしほしいということであればTwitterでもなんなりとリプ、DMなどでお声がけください~

皆さんも良きゲームライフを!

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