2016 ソフトウェア設計及び演習用の班Wiki

gr06::キャラクターモジュール

各キャラクターの型、初期化関数等

role.h

#include <gtk.h>

struct _Role {
  int ty;                // キャラの種類
  int st;                // キャラのスタミナ等
  int di;                // キャラの方向
  char *pi_name;         // キャラの画像名(6/20 追加)
  GdkPixbuf *picture;    // キャラの画像(6/22 修正)
  int s_width;           // キャラの幅
  int s_height;          // キャラの高さ
  int co;                // 画像の表示制御用カウント (6/22 追加)
  int num;               // 同タイプのキャラが複数の時の判別用 (7/21 追加)
  int x;                 // x座標
  int y;                 // y座標
  int w1;                // 武器1
  int w2;                // 武器2
};
typedef struct _Role Role;

void pi_control(Role *, int);
void sheep(Role *);
void enemy_slow(Role *);
void enemy_fast(Role *);
void enemy_bicycle(Role *);
void enemy_boss2(Role *);   // chapter2のボス
void enemy_boss3(Role *);   // chapter3のボス

//ここから下はchapter2.c
void en_move(Role *,int);   (7/7 追加)
void en_contact(Role *,Role *,int);   (7/7 追加)
void talk(Role *,Role *,int); //main.hから移動し、インタフェース変更(7/28)
void locked_door(Role *);   //ドアをRoleとみなす(7/29 追加)

説明

  • 羊、敵は各関数でRole型の構造体で初期値を入力してその都度更新していく。
  • pi_control関数はキャラ移動時にこの関数を呼び出して、引数のRoleによってdi,pi_nameを変えて新しい画像を読み込む。第2引数には、Right,Up,Left,Downのいずれかの変えたい向きを入れる。
  • Role型内のcoはキャラの移動時に1ずつ加えている。
    pi_control関数内でこれを参照して2つの画像を交互に表示するためのもの。
  • en_move,en_contact関数は2章で敵が動くときに使う関数。en_move関数の第2引数には動く向きを入れる。en_contact関数は羊と敵の目があったかを判断し、バトルイベントへいくもの。
  • locked_door関数は1章でキーアイテムを取っていると2章で開けることができるドアを作成する。Role型とすることで敵と同じ当たり判定を利用できる。
  • talk関数は2章で話しかけるためのもの。(隣に来てSpaceを押すと良い)
    ドアや出口にも利用する。

追記

  • 当初はgif画像を表示する予定だったが、以下の理由で断念した。(余裕があれば修正)
    1. 先生のアニメーションのサンプルを見たがよくわからなかった。
    2. とりあえずpngなどでプログラムを書いていたはずだが、gifでやることをすっかり忘れていたので今からgif用に直すには大幅な書き換えが必要そうだった。
  • sheepからenemy_boss3までの関数のインタフェースを変更しました。
    (再度、初期化しても2章以降でスタミナを継続するため)
    これに伴い、色んな所を直さなくてはならなかったためもっと早く直しておくべきだったと後悔。(7/15)

前ページに戻る


最終更新日:2016/07/29 20:14:22