関数呼び出しを簡略化したい
Posted: 2010年7月18日(日) 17:06
STGの敵の射撃パターンを作っています。
射撃パターン番号で分岐させる処理を作っているのですが、
switch文で分岐するとソースが長くなる気がして嫌だなぁ、と思いました。
そこで、射撃パターンの関数の名前を
Enemy_ShotPattern_1(en_data *enemy)
Enemy_ShotPattern_2(en_data *enemy)
Enemy_ShotPattern_3(en_data *enemy)
という様に似たような名前にして、(en_dataは敵のデータの構造体です)
#define EN_SH_PT(x, y) Enemy_ShotPattern_x(y)
とマクロを宣言し、
EN_SH_PT(敵の射撃パターン番号, 敵のデータのアドレス);
と書くことで、分岐を簡略化できないかと思ったのですが、
Enemy_ShotPattern_xという関数は無い、とエラーが出てしまいました。
引数は同じにするつもりなので、関数ポインタの配列を使ってもいいかなとは考えました。
しかし結局それではソースが長くなるのではないかな、と考えました。
何かいい方法はないでしょうか?
そこまで凝った処理をする必要は無いとはわかっているのですが、どうにも気になったので。
わかりづらい質問かもしれませんが、よろしくお願いします。
射撃パターン番号で分岐させる処理を作っているのですが、
switch文で分岐するとソースが長くなる気がして嫌だなぁ、と思いました。
そこで、射撃パターンの関数の名前を
Enemy_ShotPattern_1(en_data *enemy)
Enemy_ShotPattern_2(en_data *enemy)
Enemy_ShotPattern_3(en_data *enemy)
という様に似たような名前にして、(en_dataは敵のデータの構造体です)
#define EN_SH_PT(x, y) Enemy_ShotPattern_x(y)
とマクロを宣言し、
EN_SH_PT(敵の射撃パターン番号, 敵のデータのアドレス);
と書くことで、分岐を簡略化できないかと思ったのですが、
Enemy_ShotPattern_xという関数は無い、とエラーが出てしまいました。
引数は同じにするつもりなので、関数ポインタの配列を使ってもいいかなとは考えました。
しかし結局それではソースが長くなるのではないかな、と考えました。
何かいい方法はないでしょうか?
そこまで凝った処理をする必要は無いとはわかっているのですが、どうにも気になったので。
わかりづらい質問かもしれませんが、よろしくお願いします。