top of page
執筆者の写真Reo

ちょっとした書き方(条件?真:偽)

こんにちは.

ゲームの名前が一向に決まらずTGSへの申し込みまだできていません.

やばいですね・・・そろそろ腹くくらないと💦




本題!

今日は内容軽いです,でも知らなかったとしたらちょっとだけ嬉しいかもしれない内容です.

私が最近よく書くコードによく三項演算子というものが登場するようになりました.

三項演算子といわれてもぱっと思いつかなくても以下のような?を見たことはありませんか?


int型のxという変数があったとして

x = (x < 0) ? 0 : x;

と書かれている.

なんとなーく,わかりそうな・・・

if(x < 0)
{
    x = 0;
}
else
{
    //xの値は変更しない
}

そうです,if文と同じ効果があります.

ここではxが0より小さい,つまりマイナスの値なら0にします

という処理が行われています.

私は特に{}を改行する癖があるので,if文で書くよりはるかに書くのが楽で,

あと見やすいのでよく使うようになりました.

まぁ入れ子になればなるほど,どうしてもわかりにくくはなっていくのですが・・・


現在制作中の戦略ゲームについても,コマンド番号のループや選択タイル番号のループなどに使っています.上限を超えたら・・・下限を超えたら・・・

上記のコードと違って改行して(個人的には)わかりやすくしてますが使い勝手は最高です.

ぜひ知らなかったという方がおられれば試してみてください!

※わかりやすく書けるとき使うという使い方が良いと思います.無理矢理書いても後で見てぱっと読めなきゃむしろマイナスなので(><)

//参考に番号ループコード
int y;
int min = 0;
int max = 4;
void Calc(int value)
{
    y += value;
    y = (y < max)         //(A)yがmaxより小さいか
        ? (y >= min)      //(Aがtrue)のとき.(B)yがminより大きいか
            ? y                              //(Bがtrue)  
            : y + max                        //(Bがfalse)
        : y + max + 1;    //(Aがfalse)
     
     //できるだけ改行しない場合.
     // y = (y + value < max) 
        ? y+value : (y + value >= min) 
                  ? y + value : y + value + max : y + value + max + 1;
}
//改行は好みに合わせて.
//たとえばyが0で,-2したらy=-2ではなくy=3にしたい
//(上限4のとき上から2つ目の数字は3)
//y += value; つまり 0に-2をたす.
//y = -2;
//となるので
//y = y - max + 1
//  = -2 + 4 + 1
// = 3;
// とy=3にできる.
//ただし,max - minより大きい数字を引数に入れるとおかしくなるので注意!
//その時はさらに処理が必要です!


 

ちなみについでですが

もし基本的には+1したいなぁというように思ったりしたらこうしておくとハッピーです.


void Calc(int value = 1)
{
    //省略
}

引数のところを(int value = 1)と初期値を設定しておけば

もし呼び出すときCalc();としたとしても勝手にvalueに1を入れてくれます.


注意点としては,適当に書いて引数入れ忘れたときとかにも勝手に1を入れてくれちゃって

あれってなるときがあることですかねー.気を付けないと.




 

あと呼び出すときですが


Calc(value : 2);

のように,引数名を書けることを知っていると

後でコードを見返した時にもわかりやすかったりします(基本的には面倒くさいだけ?).


後で困りそうなくらい引数が多かったりするとき(なんかにまとめて引数で渡せばいい気は...)は書いておくのも一つの知識としては悪くないかなぁと思います.

私もたまに書きます.




 


今日はこんなところで終わります!


さぁそろそろ星海の眼の開発にも手を付けないと・・・もう8月じゃん!


余裕もって行動とはいかに・・・()

それでは!



閲覧数:8回0件のコメント

最新記事

すべて表示

Comments


bottom of page