DXライブラリでハエ叩きゲームのようなものを作っています。今はそのなかで、現在敵キャラクターが画面の左右からランダムなタイミングでy軸のランダムな場所から出現し反対側へ抜けていくというプログラムを書いています。しかし、下記のコードを実行したところ敵キャラが一体だけ画面端に現れ動かないという現象が起きました。自分ではsyusyu_searcher()関数で空いている敵キャラクターがないときの処理が不十分なためだと思いますが、解決方法がわかりません。
2、問題のプログラム
#include "GV.h"
//行動パターン0
void syusyu_pattern(int i)
{
if(syusyu[i].muki==1)
{
syusyu[i].x+=2.0;
}else
{
syusyu[i].x-=2.0;
}
}
//flag==0のしゅしゅを探す関数
int syusyu_searcher()
{
int i;
for(i=0;i<SYUSYU_MAX;i++)
{
if(syusyu[i].flag == 0)
{
return i;
break;
}else
{
return -1;
}
}
}
void syusyu_enter()
{
if(syusyu_searcher() != -1)
{
int i;
i = syusyu_searcher();
syusyu[i].muki =GetRand(1);
syusyu[i].flag = 1;
syusyu[i].in_cnt =GetRand(100);
if(syusyu[i].muki==1)
{
syusyu[i].x =0;
}else
{
syusyu[i].x = FIELD_MAX_X;
}
syusyu[i].y =GetRand(FIELD_MAX_Y-96);
}
}
void syusyu_act(){
int i;
for(i=0;i<SYUSYU_MAX;i++){
if(syusyu[i].flag ==1 && syusyu[i].in_cnt == stage_count)//そのしゅしゅミクのフラグがオンになっていたら
{
syusyu_pattern(i);
syusyu[i].cnt++;
syusyu[i].img=(syusyu[i].cnt%12)/6;
//しゅしゅが画面外にでたら消す
if(syusyu[i].x<-50 || FIELD_MAX_X+50<syusyu[i].x || syusyu[i].y<-50 || FIELD_MAX_Y+50<syusyu[i].y)
{
syusyu[i].flag = 0;
}
}
}
}
//しゅしゅミク処理メイン
void syusyu_main()
{
syusyu_searcher();
syusyu_enter();
syusyu_act();
}
Cの基本的な文法は理解しています。またDXライブラリの知識は同サイトの【龍神録プログラミング】で一通り学習しています。
4、実行環境
PC: windows7 32bit版
コンパイラ: Visual C++ 2010 Express
使用ライブラリ: DXライブラリ
5、追記
問題と思う箇所があるのは上記した箇所だと思いますが、ほかのファイルが必要な場合は教えてください。