ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

Another coding story

Another coding story
ときどきの雑記帖
ゲーム開発でこういうコーディングをする人がいたという話。詳しい内容は元記事を参照のこと。


ゲーム内である温度を表示するのに次のようなコードが書かれた。

temp_to_str(int temp) 
{ 
     char str[4]; 
     sprintf(str, "%d", temp); 

このようなコードの場合、温度が1000℃を超えたり−100℃より低くなったら、最悪クラッシュしてしまう。では自分の場合、どのように対処したコードを書くか考えてみた。
まず、ゲームの仕様では温度が必ず3桁で表示できる範囲になっている場合。例えば-99℃から+99℃の範囲だとする。その範囲外の値が指定されたときは、温度を計算するロジックのどこかにバグがあるわけで、それを知らせるためにアサートで止まるようにする。

temp_to_str(int temp)
{
    assert( -99 <= temp && temp <= 99 );
    char str[4];
    sprintf(str, "%d", temp);

次に温度の範囲は指定されておらず、1000℃を超えたり-100℃より低くなることもある場合。この場合は上限や下限を設定して表示する。例えば1000℃以上は999℃と表示し、-100℃以下は-99℃と表示する。つまり上限や下限を設定する。

temp_to_str(int temp)
{
    if(temp > 999) temp = 999;
    if(temp < -99) temp = -99;
    char str[4];
    sprintf(str, "%d", temp); 

あるいは範囲外の値の場合は”測定不能”のような表示にしても良いかも知れない。ここはゲームの仕様しだいかな。
多分、自分ではこういう感じでコーディングすると思う。