正直日記



2005/10/02

_ 敵スクリプトとか
最近は「敵もスクリプトで記述できたほうがいいかなあ」と思って、それに
ついて考えてるんだけど、どこまでスクリプトで記述できるようにするかで
悩んだりする。

例えば、ドリームな感じの砲台を作るときは、コードベタ打ちだと
// 自機の方向に向かって回転する
void 
DreamCannon_SearchShipAct(TWORK *this)
{
  ENEMY *en = (ENEMY *)&this->work[0];
  CHR_STAT *chr = en->chr;
  int angle;

  CheckDead(this);

  en->px += H_SCROLL_SPEED;
  angle = ATAN2(en->cx - MyShip->cx, en->cy - MyShip->cy);
  en->angle = RotateTo(en->angle, angle, TICK_SHOT_ANGLE);
  PutSprite(chr->pattern + en->angle/16, en->px, en->py, PRI_EN_CANNON);

  if (ABS(en->angle - angle) <= TICK_SHOT_ANGLE) {
    this->func = DreamCannon_ShotAct;
    this->shotangle = en->angle;
  }
  return;
}

// 方角が定まったので撃ち始める
void 
DreamCannon_ShotAct(TWORK *this)
{
  ENEMY *en = (ENEMY *)&this->work[0];
  CHR_STAT *chr = en->chr;
  short mes;

  CheckDead(this);

  en->px += H_SCROLL_SPEED;
  PutSprite(chr->pattern + en->angle/16, en->px, en->py, PRI_EN_CANNON);
  mes = ShotScripter(en->pshotscr);
  if (mes == SHOT_SCR_END) {
    this->func = DreamCannon_SearchShipAct;
  }
}
こんな感じになって(コピペじゃなくてフォームに直打ちしてるので適当)、 状態遷移の数だけ関数があるのは見通しが悪い気がするし、共通する部分も 多いしでダサいので、じゃあスクリプト化すればこういう風に書けるんじゃ ないかと。
(寝て起きたら、ここにスクリプトの内容が書かれているはず)
↑何の解決にもなってないが(^_^;) 書いてる最中に猛烈な眠気が襲ってきたので、続く。
_ SDLでよくね?
レベルエディタはMapEdを使う方向で考えるとして、自作せずに済んで良かっ
たねー、とハッピーエンディングを迎えたものの、唐突にキャラクターエディ
タも欲しくなったので結局何かしらGUIアプリを自作することにした。

で、GUI関数覚えるの面倒だからさー、いっそのことSDLでフレームバッファ
とマウスポインタだけなんとかして、GUIはテキトーにどうにかするってのは
どうよ?と思ったわけよ。

じゃあゲームもさ
もうSDLでよくね?
いちいち実機に焼くのめんどいし
ゲームボーイとかマジあり得なくね?
何が楽しくて今時スプライトとか騒いでるわけ?
別にWindowsで全部出来るしなーとか思い始めたわけよ。

最新
2010 | 01 04
2009 | 01 02 03 04 05 06 07 09 10 11 12
2008 | 01 02 03 04 05 06 07 08 09 10 11 12
2007 | 02 03 04 05 06 07 08 10 11 12
2006 | 01 02 03 04 05 06 07 08 09 10 11 12
2005 | 01 02 03 04 05 06 07 08 09 10 11 12