複数の敵がいるとき敵を倒すと1体目を倒すとで普通に出るのですがコインを取らずに
もう一体の敵を倒すと一体目のときに出たコインが消えて二体目の
// ************************************************************
//
// コイン
//
// ************************************************************
//コイン処理
#include"gs.h"
#include"Coin.h"
#include"def.h"//ゲーム全体での共通定義
#include<stdio.h>
extern OBJ kikori;//王
OBJ gCoin[COIN_MAX];//コインの数
gsTexture sCoin[4];//コイン
//----------------------------------------------------------
//コイン読み込み
//----------------------------------------------------------
void CoinLoad(void)
{
int i;
//コインの数
for(i=0; i<COIN_MAX; i++)
{
gsLoadTexture(&sCoin[0], "BMP\\Coin01.png", 0xffffffff);//コイン1
gsLoadTexture(&sCoin[1], "BMP\\Coin02.png", 0xffffffff);//コイン2
gsLoadTexture(&sCoin[2], "BMP\\Coin03.png", 0xffffffff);//コイン3
gsLoadTexture(&sCoin[3], "BMP\\Coin04.png", 0xffffffff);//コイン4
}
}
//-----------------------------------------------------------
//コイン初期化
//-----------------------------------------------------------
void CoinInit(void)
{
int i;
//コインの数
for(i=0; i<COIN_MAX; i++)
{
gCoin[i].flg =OFF; //コイン存在フラグ
gCoin[i].y = 500; //コインY座標
gCoin[i].hp=10; //コイン獲得ポイント
gCoin[i].dir = Stop; //コイン初期方向
}
}
//-----------------------------------------------------------
//コイン解放
//-----------------------------------------------------------
void CoinTerm(void)
{
gsReleaseTexture(sCoin[0]);//コイン1
gsReleaseTexture(sCoin[1]);//コイン2
gsReleaseTexture(sCoin[2]);//コイン3
gsReleaseTexture(sCoin[3]);//コイン4
}
//----------------------------------------------------------------------
//コイン処理
//----------------------------------------------------------------------
void CoinMain()
{
int i;
//コインの数
for(i=0; i<COIN_MAX; i++)
{
if(gCoin[i].flg == ON)//コインが存在したら
{
CoinAnimation();//コインアニメーション
CoinMove(i);//コイン移動
KikoriCoinHit(i);//王とコインの当たり判定
}
}
}
//----------------------------------------------------------------------
//コイン表示
//----------------------------------------------------------------------
void CoinDraw()
{
//char str[100];
int i;
//sprintf(str,"kikoro.x=%d",kikori.x);
//gsDrawText(10,100,str);
//コインの数
for(i=0; i<COIN_MAX; i++)
{
if(gCoin[i].flg == ON)//コインが存在すれば
{
CoinAnimation();//コインアニメーション
//sprintf(str,"coin.x=%d",gCoin[i].x);
//gsDrawText(10,140+i*20,str);
}
}
}
//------------------------------------------------------------
// コイン発生
//------------------------------------------------------------
void CoinSet(int x, int y)
{
int i;
//コインの数
for(i=0; i<COIN_MAX; i++)
{
gCoin[i].flg = ON;//コインが存在する
gCoin[i].x = x+20;//コインX座標を決定
gCoin[i].y = y; //コインY座標を決定
}
}
//-----------------------------------------------------------
//コイン移動
//-----------------------------------------------------------
void CoinMove(int i)
{
//コインの数
for(i=0; i<COIN_MAX; i++)
{
if(gCoin[i].flg == ON)//コインが存在していれば
{
//gCoin[i].x++;//コインを右へ移動
}
}
}
//------------------------------------------------------------------
//王とコインの当たり判定
//------------------------------------------------------------------
void KikoriCoinHit(int i)
{
//コインの数
for(i=0; i<COIN_MAX; i++)
{
if( kikori.x + SHIPSIZE_X > gCoin[i].x && //王の右>コインの左
kikori.x < gCoin[i].x + COIN_XSIZE && //王の右<コインの右
kikori.y + SHIPSIZE_Y > gCoin[i].y && //王の左>コインの左
kikori.y < gCoin[i].y + COIN_YSIZE) //王の左<コインの左
{
gCoin[i].flg = OFF;//コインの存在をOFFにする
gCoin[i].hp += 10;//所持金を加算
}
}
}
//-------------------------------------------------------------------
//コインアニメーション
//-------------------------------------------------------------------
void CoinAnimation()
{
int i;
//コインの数
for(i=0; i<COIN_MAX; i++)
{
gCoin[i].ct++;//コインのカウントを加算
if(gCoin[i].ct>80) gCoin[i].ct=0;//コインのカウントが40になったら0にする
//消滅デバッグ
if(gCoin[i].x>800) gCoin[i].flg=OFF;
if ( gCoin[i].ct >= 1 && gCoin[i].ct <= 20 )//カウントが20まで
{
gsDraw2D(sCoin[0], gCoin[i].x, gCoin[i].y);//コイン1
}
if (gCoin[i].ct >= 21 && gCoin[i].ct <= 40 )//カウントが40まで
{
gsDraw2D(sCoin[1], gCoin[i].x, gCoin[i].y);//コイン2
}
if ( gCoin[i].ct >= 41 && gCoin[i].ct <= 60)//カウントが60まで
{
gsDraw2D(sCoin[2], gCoin[i].x, gCoin[i].y);//コイン3
}
if ( gCoin[i].ct >= 61 && gCoin[i].ct <= 80)//カウントが80まで
{
gsDraw2D(sCoin[3], gCoin[i].x, gCoin[i].y);//コイン4
}
}
}