多人数デュエル用電卓の配布

はじめに

お久しぶりです。そちです。
私は友人と遊戯王をする際に、三人以上でバトルロワイアル形式のような対戦形式で遊ぶことが多いです。
最初は二人でやっているのですが、三人目が観戦してると我慢できずに参戦してしまうんですよね。
しかし、ある問題があります。


そう、ライフ計算です。
リアルでやるならスマホを複数台使えばいいのですが、リモートではそうはいきません。
遊戯王向けの二人用の電卓はアプリやブラウザのサービスでそこそこあります。しかし、三人以上はありません。
二人用のサービスを複数使うのはモニターが複数なければ難しいです。
そんな私も、デフォルトで入っている電卓を「800080008000」のような使い方をして何とかこなしていたのですが、「0」の打ち間違えが多すぎます。間違えては戻り、再度入力しては間違える・・・。とてもやっていられません。


そんなある日、私は思いました。
無いなら作ればいいのでは?
そして
作りました。


学生時代に使っていたPythonの知識がここで役に立つとは。社会は何があるかわかりませんね(入社一年目)。

ソフト配布と諸注意

事前に保険を言っておきますと、私は情報を専攻していたわけではないので効率的な記述ができるというわけではありません。そのため、情報系の方にはもどかしいソースコードになっている可能性が高いです。暖かい目で見てください。

今回は「とりあえず動けばいいや」というノリで作ったものです。ですので、何らかのバグがある可能性が高いです。一応、身内を実験台にして最低限のデバッグはやりましたが、二桁人以上では試していません。バグがあった場合は私に報告してくれると嬉しいです。修正し次第、逐一更新していきます。バグ報告は下のツイッターアカウントにDMを送ってください。バグ以外にも、「この機能が欲しい!」みたいな要望があったら送ってください。実現するかは怪しいですが、可能な限り善処します。
twitter.com
動作を確認したOSはWindows10のみです。多分スマホでは使えません。

また、このソフトを動かしたことでパソコン等が壊れた場合の補償はしかねますので、あらかじめご了承ください。要するに責任を私は負えません。
諸々を了承した方は以下のDropboxのへのリンクからダウンロードしてください。
www.dropbox.com
今回は.exeと.pyを配布します。
.exeはとりあえず今すぐ使いたい人向けです。ダウンロードしてダブルクリックすればすぐ使えるはずです。
.pyはPythonの環境がある人向けです。このファイルをPythonで実行した方が動作が軽いですし、各々の画面に合わせてボタン等のサイズや配置を変えられます。カスタマイズしたい方はこっちをダウンロードしてください。一応コメントを残してありますが、わからなければ私に聞いてください。

ちなみに、このソフトは自由に書き換えて配布して大丈夫です。
ですが、私がオリジナルである旨を記述してくれると嬉しいです。
起源を主張したり、転載したりしないでください。
また、このソフトを書き換えたもので不具合が発生した場合も、私は責任を負いかねます。

使用方法

それではソフトの使い方を説明していきます。

ソフトを起動すると、以下の画面が表示されます。
f:id:truthquare:20210126150256p:plain
それぞれのボタン等の役割を説明します。

「追加」ボタン
このボタンを押すと、プレイヤーを追加します。デフォルトが0人なので、必ずこのボタンでプレイヤーを追加してください。上限は10人になっています。

「戻る」ボタン
このボタンを押すと、全員のライフがひとつ前の状態に戻ります。一般的なライフ計算ソフトの戻るボタンと同じ仕様です。戻るボタンを押してプレイヤー追加前まで戻っても、プレイヤーが削除されることはありません。その場合は初期ライフになります。

「ログ」ボタン
このボタンを押すと、各プレイヤーのライフ変動の記録(以下ライフログウィンドウ)を確認できます。この時のライフ変動の記録は別のウィンドウで表示されるので注意してください。Discordなどでライフログウィンドウを共有する場合は、逐一画面共有設定をする必要があります。また、ライフログウィンドウが表示されている状態では計算等ができないので、見た後はライフログウィンドウを閉じてください。

「初期化」ボタン
このボタンを押すと、全てのプレイヤーのライフが初期値に戻ります。このライフの初期値は.pyファイルで指定されていますので、初期ライフを4000にしたい!という方は.pyファイルの定数をいじってください。

「順番」ボタン
このボタンを押すと、プレイヤーのターンの順番を自動で生成し、プレイヤー名の後に順番を追記します。この機能があれば、沢山のダイスを振ったり、ダイスの目が同じで振り直したりする必要が無くなります。ですが、このボタンによるターンの順番の生成はプレイヤー名が設定されているプレイヤーにのみ適用されますので、使う前にプレイヤー名を記述してください。また、乱数の性質上、各々がこのボタンを押すと別の順番が各々に入力されてしまいます。ですので、一人が代表してこのボタンを押し、生成された順番を他の人に周知するようお願いします。また、「順番」ボタンでプレイヤー名の後に追加された順番は、再度「順番」ボタンを押すと消され、新しい順番に書き換わりますので消す必要はありません。

数値入力エリア
「順番」ボタンの下には、数値を入力できる欄があります。ここに数値を入力し、各プレイヤーと対応した計算ボタンを押すことで計算ができます。例えば500ダメージを受けた場合は、数値入力エリアに「500」と入力し、ダメージを受けたプレイヤーに対応する「-」ボタンを押すと、そのプレイヤーのライフが500減ります。文字列や負の値は入力できません。

「数値を保持する」チェックボタン
このソフトでは、計算ボタンを押すと数値入力エリアの入力内容がリセットされますが、「数値を保持する」チェックボタンにチェックが入っているとリセットされません。人によっては効果ダメージの条件を満たすプレイヤーが複数人いる場合(具体的には、アルティメットファルコンのエンドフェイズのバーン)に複数人に同じダメージが入るルールで遊ぶ人がいると思います。その際に再度入力するのは手間がかかります。その時には、計算ボタンを押す前に「数値を保持する」チェックボタンにチェックを入れておくと楽だと思います。


次に、プレイヤーを二人追加すると以下のような画面になります。
f:id:truthquare:20210126154031p:plain
追加されたボタン等の役割を説明します。

名前入力エリア
「追加」ボタンが押された際に追加されるボタン等のうち、最も上にある白くて四角いものが名前入力エリアです。ここにプレイヤー名を記述できます。先程も述べましたが、「順番」ボタンを使う前にプレイヤー名を記入してください。

ライフ表示
名前入力エリアの下に「8000」と書かれているのが現在のライフです。計算ボタンによってライフが変化すると、ここの表示も変わります。現状だと、ライフが10万を超えるとライフ表示が見切れてしまうので注意してください。

計算ボタン
名前入力エリアの下に「+」「-」「×」「÷」と書かれたボタンがあります。これが計算ボタンです。数値入力エリアに数値を入力した後、計算ボタンを押すと計算が適用されます。「追加」ボタンが押された際に同時に追加されたプレイヤーのみのライフ変動させるものなので、押し間違いには注意してください。


長々と説明をしましたが、実際に触って慣れるのが一番だと思います。

改造案について

  1. このソフトはデフォルトだととても縦長になっています。これは、Discordで対戦する際に画面左側に配置すると見やすいと判断したからです。ですので、人によっては画面上側や下側に配置するために横長にしてボタン等の配置を変えたり、別モニターで画面いっぱいに表示するためにウィンドウを画面サイズに設定して字を大きくしたりした方が使いやすいかもしれません。また、人によってはPCの画面のサイズによって大きすぎたり小さすぎたりする可能性があるので、そこは各々で調整してください。
  2. また、このソフトは誤操作によってプレイヤーを削除するリスクや実装が面倒くさかったなどの理由で、プレイヤー削除機能がありません。一応、名前を空欄にしてライフを無視したり、ソフトを再起動すればいいのですが、どうしても気になるのであれば自身で実装してみてください。
  3. Discord等と同時に表示するために、ウィンドウが常に最前面に配置されるよう設定されています。それが邪魔だと感じたのであれば、常に最前面に来ないよう変更してみてください。
  4. プレイヤーの上限が10人ですので、それ以上の人数でやる際にはプレイヤーの上限を変更してください。