C#への移植

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hoyomi

C#への移植

#1

投稿記事 by hoyomi » 14年前

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

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

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

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

Re: C#への移植

#2

投稿記事 by YuO » 14年前

delegateを使うのですが,実際問題としてdelegateを定義する必要はありません。
今回だと元がvoid (*)(int)型ですから,Action<int>型として定義することになります。

コード:

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

コード:

_enemyPattern[pattern](value);

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C#への移植

#3

投稿記事 by softya(ソフト屋) » 14年前

デリゲートで出来ると思います。
私が前に19章まで移植したときはswitchで分けちゃいました(^^;

「Win&360ゲームズ XNAを使ったゲームとプログラミング」
http://softyasu.net/game/gametop.html
参考まで。
大分忘れているので、細かくは答えられないかも(滝汗)
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

hoyomi

Re: C#への移植

#4

投稿記事 by hoyomi » 14年前

YuOさん、softyaさん返信ありがとうございます。

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る