<> #ifndef DEF_CBALLET_H((br)) #define DEF_CBALLET_H((br)) #include "../Game/common.h"((br)) #include "../enemy/enemy.h"((br)) #define PENETRATION 1((br)) struct Bullet{((br)) struct Bullet *next,*prev;((br)) double x,y;((br)) double speed;((br)) int type;((br)) double size;((br)) int color;((br)) int Rand;((br)) int attribute;((br)) int power;((br)) int range;((br)) int count;((br)) double angle;((br)) double angleRate;((br)) double speedRate;((br)) bool alive;((br)) };((br)) typedef struct Bullet Bullet_t;((br)) /////////////////////////////////////////////////////////////////////////((br)) //弾の基本操作((br)) /////////////////////////////////////////////////////////////////////////((br)) void((br)) Bullet_init();((br)) /*((br)) 引数 : なし((br)) 戻り値: なし((br)) 内容 : 弾リストのの初期化、メインループに入る前に呼び出す((br)) */((br)) void((br)) Bullet_end();((br)) /*((br)) 引数 : なし((br)) 戻り値: なし((br)) 内容 : 弾リストのメモリ開放、メインループが終わった後に呼び出す((br)) */((br)) void* BulletNew(double X,double Y,double Speed,double Angle,double SpeedRate,double AngleRate,int type); ((br)) /*((br)) 引数 : double X,Y 弾を撃つ座標(X,Y)((br)) double Speed 弾のスピード((br)) double Angle 弾の発射する角度((br)) double SpeedRate弾の加速度((br)) double AngleRate弾の角加速度((br)) int type 弾の種類   0~99 自機の弾((br)) 100~199 敵の弾((br)) 戻り値: 作ったBullet型のポインタ((br)) 内容 : 引数から弾を生成しアクティブタスクに加える((br)) */((br)) void BulletDelete(Bullet_t*); ((br)) /*((br)) 引数 : Bullet_t* p 画面から消したい弾のポインタ((br)) 戻り値: なし((br)) 内容 : 引数に与えられた弾をフリーリストに移動させて消す((br)) */((br)) void GrenadeExplosion(Bullet_t *Bullet);((br)) void Move(Bullet_t*); ((br)) /*((br)) 引数 : Bullet_t* p 移動させたい弾((br)) 戻り値: なし((br)) 内容 : 引数で与えられた弾をp->speed,angleをもとに移送させる((br)) */((br)) void Draw(Bullet_t*); ((br))v /*((br)) 引数 : Bullet_t* p 描画させたい弾((br)) 戻り値: なし((br))v 内容 : 引数で与えられた弾を描画する((br)) */((br)) void Homing(Bullet_t*,Enemy_t*);((br)) //////////////////////////////////////////////////////////////////////((br)) //for文用((br)) //////////////////////////////////////////////////////////////////////((br)) Bullet_t* ((br))GetActive(); ((br)) Bullet_t* BArrow_init();((br)) /*((br)) 引数 : なし((br)) 戻り値: ArrowBullet この時はActiveBulletの次をさす((br)) 内容 : ArrowBulletの初期化((br)) この関数は以下のようにつかう((br)) for(Bullet_t* p = BArrow_init();p = GetBNext();NowBActive()){((br)) //弾の処理を各((br))v }((br)) こう書くことによってアクティブリストの中にある弾をループで回すことができる((br)) */((br)) Bullet_t* GetBNext();((br)) bool NowBActive();((br)) #endif((br))