ポインタエラーがでて困っています。どうすればいいでしょうか?
敵を描こうとするとポインタエラーになってしまいます。
enemyクラス
struct enemy_t{
struct enemy_t *next; /* 次の構造体変数のアドレス */
bullet_data bullet;//クラスにアクセス用
double x,y; //座標
double spd;//スピード
double angle;//角度
int flag;//フラグ
int cnt;//カウンタ
int pattern;
int knd;
int muki;
double vx,vy;
int wait;
int state;
int img;
};
class enemy_data{
private:
enemy_t enemy;
public:
void enemy_enter(int flag,double x,double y ,double spd,double angle,int pattern,int knd,int muki,int wait);
void enter_enemy(enemy_t *p,double x,double y ,double spd,double angle,int pattern,int knd,int muki,int wait);
void calc_enemy();
void graph_enemy();
void enemy_graph(enemy_t *head);
void Init();
};
クラス内容
void enemy_data::Init(){
memset(&enemy,0,sizeof(enemy_t));
//弾を初期化
enemy.bullet.Init();
//敵をセット
enemy_enter(0,50,30,0,PI/2,0,0,0,0);
enemy_enter(1,50,30,3,PI/2,0,0,0,0);
enemy_enter(1,50,30,3,PI/2,0,0,0,0);
//弾をセット
enemy.bullet.enter(0,-10,50,PI/2,0,8,0);
enemy.bullet.enter(1,100,60,PI/2,3,1,0);
}
void enemy_data::graph_enemy(){
enemy_graph(&enemy);
enemy.bullet.graph_bullet();
}
void enemy_data::enemy_graph(enemy_t *head){
enemy_t *p;
int countu=0;
if(head->next!=NULL){
for(p=head->next;p!=head;p=p->next){
if(p->flag==1){//アクセス違反が発生
p->x+=cos(p->angle)*(p->spd);
p->y+=sin(p->angle)*(p->spd);
DrawRotaGraphFdF(p->x,p->y,1.0,p->angle+PI/2,img_enemy[0][0],TRUE);
p->cnt++;
countu++;
}
}
}
}
void enemy_data::calc_enemy(){
if(CheckStatePad(configpad.shot)>=1){
enemy_enter(1,50,30,3,PI/2,0,0,0,0);
}
enemy.bullet.delete_bullet();
enemy.bullet.calc_bullet(1);
}
void enemy_data::enemy_enter(int flag,double x,double y ,double spd,double angle,int pattern,int knd,int muki,int wait){
if(flag==0)
enter_enemy(&enemy,x,y,spd,angle,pattern,knd,muki,wait);
if(flag==1)
enter_enemy(enemy.next,x,y,spd,angle,pattern,knd,muki,wait);
}
void enemy_data::enter_enemy(enemy_t *p, double x, double y, double spd, double angle, int pattern, int knd,int muki,int wait){
enemy_t *tmp;
tmp = (enemy_t*)malloc(sizeof(enemy_t));
//要素が存在した場合
if(p->next!=NULL)
{
tmp->next=p->next;
p->next=tmp;
tmp->flag=1;
tmp->x=x;
tmp->y=y;
tmp->spd=spd;
tmp->angle=angle;
tmp->cnt=0;
tmp->pattern=pattern;
tmp->knd=knd;
tmp->muki=muki;
tmp->vx=0;
tmp->vy=0;
tmp->wait=wait;
tmp->state=0;
tmp->img=0;
}
else//要素がない場合
{
tmp->next=p->next;
p->next=tmp;
tmp->flag=1;
tmp->x=x;
tmp->y=y;
tmp->spd=spd;
tmp->angle=angle;
tmp->cnt=0;
tmp->pattern=pattern;
tmp->knd=knd;
tmp->muki=muki;
tmp->vx=0;
tmp->vy=0;
tmp->wait=wait;
tmp->state=0;
tmp->img=0;
}
}