int r = rand();
これで、rには、0〜32767のどれかが入りました。int r = ( rand() % 5);
0〜32767までの数字を5で割った余り。余りですから、結果は、0,1,2,3,4のどれかしかありません。srand()
引数に整数を入れれば、新しい乱数ができます。しかし、これでも、その整数で決まった乱数ができてしまうので、さらに、time()
を引数に使います。そうすれば、timeは常に違う数字なので、乱数は、本当にランダムな数字になります。
srand( (unsigmed)time(NULL) );
int r = ( rand() % 5 );
MissileEnemy.cppのソースMoveEnemyの描画後に GoMissileEnemy(Enemy[i].ex,Enemy[i].ey); を追加
#include "Def.h" struct MISSILEENEMY { int meX; int meY; int meGo; }; static MISSILEENEMY MissileEnemy[MEMAX]; void InitMissileEnemy() { for(int i;i < MEMAX;i++) { MissileEnemy[i].meX = 0; MissileEnemy[i].meY = 0; MissileEnemy[i].meGo = 0; } } void MoveMissileEnemy() { for(int i=0;i < MEMAX;i++) { if(MissileEnemy[i].meGo == 1) { MissileEnemy[i].meY += 4; if(MissileEnemy[i].meY > 440) {MissileEnemy[i].meGo = 0;} DrawImg(32,0,32,32,MissileEnemy[i].meX,MissileEnemy[i].meY); } } } void GoMissileEnemy(int x,int y) { for(int i=0;i < MEMAX;i++) { if(MissileEnemy[i].meGo ==0) { int r = rand() % 180; if(r == 1) { MissileEnemy[i].meGo =1; MissileEnemy[i].meX =x; MissileEnemy[i].meY =y+16; break; } } } }