ゲームでは数値計算がいろいろ行われるが、小数を画面表示した場合に、まずい場合があります。そこで整数に変換する方法を紹介します
シミュレーションゲーム作成工房 より強力な思考ルーチンを求めて
ゲーム作成講座 | 地政学 | 無料ダウンロード | 当サイトについて | 更新履歴 | サイトマップ | リンク |

小数値の出現を防ぐには  ゲーム上で表示される値に小数が含まれるのは避けたほうがいい

どんなゲームでも数値を扱うことは避けられない。
シミュレーションゲームでは、パラメーターの値を表示するゲームが散見される。
少し、下図を見てほしい。
 
 
資金、食料、経済、農地……パラメーターの値はすべて整数になっている。
もし小数になっていたら、どうだろうか?
兵力が45.6 なんだ、この小数部分は? となるはずだ。
 
ところがプログラムでいろいろ値をいじっていると、往々にして小数がでてくる。
たとえば、食料を売却する処理を考えてみよう。
食料1が資金1.2に換金できるとした場合、食料を86売ると103.2の資金になる。小数値だ。
 
もうひとつ。隣接国と交戦状態になり、自陣営の兵力30と相手国の兵力19がぶつかり合うケースを考える。
戦略画面上での戦争処理は、ランチェスターの第二法則を便宜的に用いているので、計算式は、
 
残存兵力={兵力(大)の2乗−兵力(小)の2乗}の平方根
 
となる。どちらかが全滅するまで戦ったときに、生き残った側はどれくらいなのかを計算しているわけだ。
すると、(30の2乗−19の2乗)の平方根だから、23.216……となる。
小数部分は何だ? 負傷兵か? などとなるわけだ。
 
どう考えても小数表示はまずいので、整数に直さないといけない。
厳しい考え方をするなら、小数部分は切り捨てたほうが良い。
四捨五入すると、0.5あれば1になってしまうからだ。ところが、なんの処置もしないまま、小数を変数へ
入れようとすると、勝手に四捨五入されるので始末が悪い。
今回の23.216……なら、たまたま23になって、小数部分を切り捨てた結果と同じになるが、そうはいかない
場合がでてくる。そこでどんな処置をすればよいか?
 
1で割った商を求めるのはどうだろう? つまり、演算子¥を利用するわけだ。
 
23.216 ¥ 1 
 
この回答は、23となって返ってくる。整数に変換できた。
CIntを使って型変換を行うのも試してみたが、四捨五入されてしまう。
というわけで、整数への変換は、演算子¥を使って1で割ることだ。
 
 
※実際にゲーム業界では、こんなことをしないかもしれない。別の方法があるかもしれないし、四捨五入した
 ところで、1しか違ってこないから微々たる誤差として、何の処置も施さないまま流すかもしれない。
 
    
Google
 
 
 
 
 
 
ゲーム作成講座 | 地政学 | 無料ダウンロード | 当サイトについて | 更新履歴 | サイトマップ | リンク |
Copyright (C) シミュレーションゲーム作成工房, All Rights Reserved.