問題点:ゲーム作成時によくある問題(0での除算・オーバーフロー)
| 計算機を使って、0で除算してみると「E」という文字が表示される。 |
| 「E」とはエラーの意で、ゼロでの除算はやってはいけないことになっている。 |
| プログラム上で、0で除算する処理が行われると、エラーが発生して処理が停止する。 |
| |
 |
| |
| たくさんの数値を扱うので、知らないあいだにゼロでの除算が行われているかもしれない。 |
| 処理を停止させないために、除算を行っているプログラムでは、エラーの発生する余地がないか確認しないと |
| いけない。 |
| |
| 例えば、自国と隣国の兵力差を求める場合、割り算を使用する。 |
| このとき割る数がゼロだと、エラー発生となる。何度か作り直してみて、値を比較するときによく出くわすエラー |
| だと分かった。 |
| |
| ※除算……割り算のこと |
| |
| |
| もうひとつ出くわしそうなエラーに、オーバーフローが挙げられる。 |
| 変数の型に数値が入りきらずにエラーとなってしまう現象だ。 |
| 例えば整数型(integer型)なら範囲は、−32768〜32767であり、許容範囲外の値を入れようとすると、 |
| エラーが発生して処理は停止する。 |
| |
 |
| |
| 処理を開始させると領国のパラメーターは次第に増加してゆくから、整数型でパラメーターを指定していると、 |
| 大抵、オーバーフローになってしまう。そこで長整数型(long型)を使って、このエラーになりにくいようにする。 |
| 長整数型の範囲は、−2147483648〜2147483647なので、よほどのことがない限り、オーバーフロー |
| にならない。と思っていたのだが、あっさりなってしまった。 |
| |
 |
| |
| 実際、上図のような大きな値になるので、プログラムを修正してゲームバランスを調整しなければならない。 |
| (これだけ大きな値が発生してしまうことは、思考ルーチンはもちろん、プログラムに問題がある) |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
| |
|
|
Copyright (C) シミュレーションゲーム作成工房, All Rights Reserved.