AVGパートが出来た (あとC#の配列初期値について)


 冬コミに向けて、目玉P、ゆかりさんとでアクションゲーム作ってます(ブースは月西よ31)。
 僕はAVGパートのプログラムやってるのですが、やっと動くようになったよ〜


 スクリプトデータ作成は、ゆかりさんにまかせた・・・パタ


 さて、今回はスクリプトデータはプログラム埋め込みです。
 VisualStudioを駆使して書いてもらうことになります。がんばれ!(ぉ
 VisualStudio上で書くと、定数(enum)などがインテリセンスで選択式になるので、タイプミスが減るという利点があります。
(あと、XNAで外部のファイル読み込むの意外と面倒なんだよねー(ぉ)



 で、最初↓のようにC++スタイルで書けば、いいんじゃねと思っていたのですが・・・



● [C++] クラス定義部
class AVGScript
{
public:
  int pos; // 表示枠指定
  int face; // 表情
  char* msg; // せりふ

  enum { upper,under, warai,naki,okori }; // 定数
};


● [C++] スクリプト
AVGScript script = {
  AVGScript::upper , AVGScript::warai , "こんにちは",
  AVGScript::under , AVGScript::warai , "こんばんは",
  AVGScript::upper , AVGScript::okori , "さよなら",
  AVGScript::under , AVGScript::naki , "えんいー"
};



 C#だと、スクリプト部に初期値をだらだら書けばいいわけじゃなくて、要素ごとにインスタンスをnewして生成しないといけない。



● [C#] クラス定義部
class AVGScripT
{
  public int pos;   // 表示枠指定
  public int face; // 表情
  public String msg; // せりふ
  public AVGScripT(eAVGScript pos, eAVGScript face, String msg)
  {
    this.pos = pos; this.face = face; this.msg = msg;
  }
};
enum eAVGScript { upper,under, warai,naki,okori }; // 定数


● [C#] スクリプト部
AVGScripT script = new AVGScripT {
  new AVGScripT(eAVGScript.upper , eAVGScript.warai , "こんにちは"),
  new AVGScripT(eAVGScript.under , eAVGScript.warai , "こんばんは"),
  new AVGScripT(eAVGScript.upper , eAVGScript.okori , "さよなら"),
  new AVGScripT(eAVGScript.under , eAVGScript.naki , "えんいー")
};


 うはー。これは面倒!
 なんかいい方法ないものですかねぇ。


 実際のスクリプトは↓のような感じになります。


public static AVGScript Scenario01 = new AVGScript[] {
  new AVGScript(AVGCMD.枠選択 , (int)AVGPRM.上),
  new AVGScript(AVGCMD.表情 , (int)MF_FaceType.笑い),
  new AVGScript(AVGCMD.セリフ , "カレーがいいわよね"),
  new AVGScript(AVGCMD.枠選択 , (int)AVGPRM.下 , "上下"),
  new AVGScript(AVGCMD.表情 , (int)MF_FaceType.怒り),
  new AVGScript(AVGCMD.セリフ , "絶対焼肉!"),
  new AVGScript(AVGCMD.待ち ),
};



/
このゲームは、XNAと目玉ゲームライブラリを使っているのですが、目玉ゲームライブラリの解説XNA Todayさんに紹介いただきました。ありがとうございます。