ページ 11

C#への移植

Posted: 2011年5月06日(金) 11:51
by hoyomi
C#とXNAの勉強ついでに龍神録をC#に移植しています。(といってもファイル分けしないスパゲッティですが・・・)
12章の行動パターンのところで関数ポインタを使っていますが、それをC#で行うにはどうすればよいでしょうか?
調べてみたところデリゲートを使うと関数ポインタに似たことができるらしいのですがよく分かりません。

感じとしては 0 を入力すると
static void aaa000{略};
1 を入力すると
static void aaa001{略};
を実行するといったプログラムです。

C#の質問もいいのか分かりませんがよかったらよろしくお願いします。

Re: C#への移植

Posted: 2011年5月06日(金) 12:33
by YuO
delegateを使うのですが,実際問題としてdelegateを定義する必要はありません。
今回だと元がvoid (*)(int)型ですから,Action<int>型として定義することになります。

コード:

var _enemyPattern = new Action<int>[]
{
    EnemyPattern1, EnemyPattern2, /* ... */ , EnemyPattern10
};
呼び出しはC#では単純に関数呼び出しと同様に括弧演算子で行います。

コード:

_enemyPattern[pattern](value);

Re: C#への移植

Posted: 2011年5月06日(金) 12:40
by softya(ソフト屋)
デリゲートで出来ると思います。
私が前に19章まで移植したときはswitchで分けちゃいました(^^;

「Win&360ゲームズ XNAを使ったゲームとプログラミング」
http://softyasu.net/game/gametop.html
参考まで。
大分忘れているので、細かくは答えられないかも(滝汗)

Re: C#への移植

Posted: 2011年5月06日(金) 13:47
by hoyomi
YuOさん、softyaさん返信ありがとうございます。

一応プログラムとしては動いて解決しましたが、デリゲートはまだまだ奥が深そうなのでもっと勉強したいと思います。

移植プログラムがあるとは思いませんでした。
参考にさせていただきます。