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さんに紹介いただきました。ありがとうございます。