艦艇沈没の犯人が不明になるバグ のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 艦艇沈没の犯人が不明になるバグ へ行く。
- 1 (2008-05-15 (木) 17:36:04)
- 2 (2008-05-15 (木) 17:37:20)
詳細
艦艇が撃沈されたとログには出るのに誰が攻撃したのかログに出ないことがあります。
これは攻撃した時に誤差で自沈してしまった時に「その艦艇が攻撃した」というログが出力されないバグのせいです。
これには対処法が(自沈しないようにする以外に)存在しないので申し訳ありませんがご自分で推理をお願いします。
原因の解説
事故そのものはバグでhなく、ログ表示のバグです。
自分が発射した弾で自分が沈んだ場合、こういう感じのログになります。
以下が症例と解説です。
--- (13, 10)の金剛級戦艦(紺碧島)に命中。金剛級戦艦(紺碧島)は沈没しました。 --- (13, 10)の金剛級戦艦(紺碧島)に命中。金剛級戦艦(紺碧島)は黒煙を噴き出しました。 金剛級戦艦が沈没した理由がさっぱり分かりません。 バグでしょうか?
この場合、金剛級は、自分の隣のマスを撃った結果、自分の弾が2発当たって沈んだ事になります。~ 以下が詳細の説明です。 まず、ログに、処理順で順番をつけると、下の様になります。 (①が最初で⑩が最後)(箱庭のログを時系列でご覧になりたい時は下から順に読んで下さい。) ⑩紺碧島の大工場から、総量21000トンの収穫が上がりました。 ⑨紺碧島の大農場から、総額212億円の収益が上がりました。 ⑦--- (13, 10)の金剛級戦艦(紺碧島)に命中。金剛級戦艦(紺碧島)は沈没しました。 ⑥--- (13, 10)の金剛級戦艦(紺碧島)に命中。金剛級戦艦(紺碧島)は黒煙を噴き出しました。 ⑤紺碧島(1, 12)で軍港建設が行われました。 ④紺碧島(13, 6)のシュミット戦闘機(紺碧島)が(13, 9)地点のシュミット戦闘機(所属不明)に向けて制空ミサイル発射を行いました。(命中:2 無効:1) ③--- 無効 ⇒ (13, 9) ②--- (13, 9)のシュミット戦闘機の残骸に命中。シュミット戦闘機の残骸は海の藻屑となりました。 ①--- (13, 9)のシュミット戦闘機(所属不明)に命中。シュミット戦闘機(所属不明)は沈没しました。 シュミットの件を例にとれば、普通、人は④を見出しと考え、④③②①と読むのが自然なんですが、 プログラム処理としては、①②③の順に起こった結果を④でまとめる事によって、こういう記事をつくります。 同様に、金剛に関しても、⑥⑦と処理した後、⑨の前に ⑧紺碧島(13,10)の金剛級戦艦(紺碧島)が(13, 9)地点の海に向けて艦砲射撃を行いました。(命中:2 無効:3) みたいなのが来ないといけないんですが、これが出力される直前の⑦で、 次のログの主格となるべき金剛級が沈んでしまった為、見出しログの出力ができなくなる訳です。