パスワードを忘れた? アカウント作成
42083 journal

fslashtの日記: [XNA] AVGパートが出来た (あとC#の配列初期値について)

日記 by fslasht

 冬コミに向けて、目玉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さんに紹介いただきました。ありがとうございます。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...