第5次ノイマルクトの戦いのプレイ中に気がついた強化版支援ツールの問題点と
良い点を以下にメモしておく。
1.問題点
(1)ちょっとしたミスでエラーが発生し、その後始末が煩雑である。
下図のようにエラーが出ると、PythonからEXCELを動かした場合のエラーの対応で
記載したようにEXCELを終了させてもゾンビプロセスが残る。
これを見つけて終了させるのに手間がかかる。
(2)入力するEXCELシートと起動するPythonプログラムとの対応が分かりにくい。
慣れるまでは不整合によるエラーが出て上記の問題に巻き込まれる。
(3)Pythonプログラムのバグが残っている。
不具合再現と対策に時間がかかる。上記(1)の問題の影響で効率が悪い。
(4)ユニット数が多くなると色々な希望が増えてくる。
例1)キー情報から自動設定できるデータを増やしたい。
例2)未入力のデータはプログラムで0に変換・処理して欲しい。
例3)エラーから再開する場合に必要最小限の手順で済ましたい。
2.対策
(1)ゾンビプロセスが残る問題
下図の処理をpythonで行うと残らない。
(2)ゲームフェーズと使用するEXCELシート、pythonプログラムを明記する。
ゲームフェーズ | EXCELシート | pythonプログラム |
騎兵突撃 | 1)pre_art 対象は士気 2)mor 3)pre_art 対象は白兵戦 4)mel 5)pre_art 対象は騎兵呼戻 | 1)# シート準備 prefire() 2)# 標準士気チェック morale() 3)# シート準備 prefire() 4)# 白兵戦 melee() 5)# シート準備 prefire() |
敵軍の防御射撃 | 1)pre_art 対象は砲撃か歩兵射撃 2)artかinf | 1)# シート準備 prefire() 2)# 砲兵射撃 gun_fire()か# 歩兵射撃 fire_inf() |
自軍の攻勢射撃 | 1)pre_art 対象は砲撃 2)art 3)pre_art 対象は歩兵射撃 4)inf | 1)# シート準備 prefire() 2)# 砲兵射撃 gun_fire() 3)# シート準備 prefire() 4)# 歩兵射撃 fire_inf() |
白兵戦 | 1)asl 2)asl 3)mel 4)mel | 1)# 歩兵データコピー fire_copy() 2)# 白兵戦前の士気チェック premelee_check() 3)# 白兵戦データコピー check_copy() 4)# 白兵戦 melee() |
回復 | 1)pre_art 対象は士気 2)mor | 1)# シート準備 prefire() 2)# 標準士気チェック morale() |
(3)バグ対策は地道に潰すしかない。
(4)なるべく希望に応えるようにプログラムを改修していく。
例1)2)対策済。
例3)ではEXCEL再起動後に下図の処理をすれば再開できる(pythonプログラムは動かしたまま)。
3.良い点
下図のような5ケ所の射撃戦をデータ入力してから6秒で判定できる。
pre_art 対象は歩兵射撃とする。
infの内容。色塗り部分と目標数は自動的に設定する。
地形防御値、現在の戦力数、隊形を手動で入力すれば完了である。
歩兵射撃 fire_inf()の処理時間(秒)。
なお、目標に損失が出れば国籍・兵種に応じて士気チェックを自動的に行う。
4.参考資料
下記のWEBページにお世話になりました。ありがとうございます。
・PythonとxlwingsでExcelファイルをいじる
<個人的な感想>
かなり便利になったが、それでもデータ入力項目は残るので手間がかかる。
またpythonプログラムとEXCELを両方使うので操作が煩わしく感じる。
なかなか良いものを作るのは難しい。
完成版のプログラムを下記に示す。