すみません。返事くださったのに、すぐに書き込めませんでした!
これが中身なのですが、どうでしょうか...
#include "spgame.h"
int jikibmp[3];
int jitamabmp;
void JicharaLoad(){
LoadDivGraph("jiki2.bmp",3,3,1,48,58,jikibmp);
jitamabmp = LoadGraph("tama2.bmp");
}
void JicharaInit(){
jikidata.ghandle = jikibmp;
jikidata.animpat = 3;
jikidata.x=310;
jikidata.y=410;
jikidata.image_w = 52;
jikidata.image_h = 53;
jikidata.bounds_w = 20;
jikidata.bounds_h = 20;
jikidata.amode = A_NORMAL;
for(int i=0; i<3; i=i+1)
{
jitama[i].ghandle = & jitamabmp;
jitama[i].animpat = 1;
jitama[i].image_w = 26;
jitama[i].image_h = 59;
jitama[i].bounds_w = 23;
jitama[i].bounds_h = 56;
jitama[i].amode = A_NORMAL;
}
}
void JicharaMove(){
//自キャラ移動
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(key & PAD_INPUT_UP) jikidata.y = jikidata.y-idouryou[4];
if(key & PAD_INPUT_DOWN) jikidata.y = jikidata.y+idouryou[4];
if(key & PAD_INPUT_LEFT) jikidata.x = jikidata.x-idouryou[4];
if(key & PAD_INPUT_RIGHT) jikidata.x = jikidata.x+idouryou[4];
int a = animcounter /6 & jikidata.animpat;
DrawGraph(jikidata.x,jikidata.y,jikidata.ghandle[a], TRUE);
}
void JitamaMove(){
int key =GetJoypadInputState(DX_INPUT_KEY_PAD1);
if( (key & PAD_INPUT_A) && (trigger == 0) ){
for(int i=0; i<3; i=i+1){
if (jitama[i].life == 0){
jitama[i].life = 1;
jitama[i].x = jikidata.x+12;
jitama[i].y = jikidata.y-20;
break;
}
}
trigger = 20;
}
if(trigger>0) trigger = trigger - 1;
for(int i=0; i<3; i=i+1){
if(jitama[i].life > 0){
jitama[i].y = jitama[i].y - idouryou[10];
DrawGraph(jitama[i].x,jitama[i].y,*(jitama[i].ghandle),TRUE);
//画面外に出た時の処理
if(jitama[i].y<0) jitama[i].life = 0;
}
}
}
int IsAtari(CharaData *a, CharaData *b){
int retval = 0;
int ax1 = a->x + (a->image_w - a->bounds_w)/2;
int ay1 = a->y + (a->image_h - a->bounds_h)/2;
int ax2 = a->x + (a->image_w + a->bounds_w)/2;
int ay2 = a->y + (a->image_h + a->bounds_h)/2;
int bx1 = b->x + (b->image_w - b->bounds_w)/2;
int by1 = b->y + (b->image_h - b->bounds_h)/2;
int bx2 = b->x + (b->image_w + b->bounds_w)/2;
int by2 = b->y + (b->image_h + b->bounds_h)/2;
if( (ax1<bx2) && (bx1<ax2) && (ay1<by2) && (by1<ay2) ){
switch (a->amode){
case A_NORMAL:
a->life = 0;
break;
case A_HARD:
a->life = a->life -1;
break;
}
switch (b->amode){
case A_NORMAL:
b->life = 0;
break;
case A_HARD:
b->life = b->life -1;
break;
}
retval = 1;
}
return(retval);
}
int AtariHantei(){
for(int i=0; i<50; i=i+1){
if(tekidata[i].life>0 && tekidata[i].amode !=A_GHOST){
if(IsAtari(&jikidata,&tekidata[i])==1) return(1);
for(int j=0; j<3; j=j+1){
if(jitama[j].life > 0 && tekidata[i].amode !=A_GHOST){
IsAtari(&jitama[j],&tekidata[i]);
}
}
}
}
return(0);
}