📄 game.c
字号:
if (gFly_Enemy[i].delay > 0)
gFly_Enemy[i].delay = Fly_GetRand(180);
// 1/2 概率改变飞行状态
if ((Fly_GetRand(2)) && (gFly_Enemy[i].lifeTime >= 0)) // 优化
{
ranVal = Fly_GetRand(4);
if (ranVal == 0) //在屏幕上不停留,无偏移
{
gFly_Enemy[i].lifeTime = 0;
gFly_Enemy[i].delay = 0;
gFly_Enemy[i].offset = 0;
}
else if (ranVal == 1) //在屏幕上不停留,有偏移
{
gFly_Enemy[i].lifeTime = 0;
gFly_Enemy[i].delay = 0;
gFly_Enemy[i].offset = Fly_GetRand(25) + 25;
if ((gFly_Enemy[i].x < FLY_WORKSPACE_X) || (gFly_Enemy[i].x > FLY_WORKSPACE_MAX_X - wide))
gFly_Enemy[i].offset = 0;
}
else if (ranVal == 2) //停留
{
if (gFly_Enemy[i].lifeTime > 0)
gFly_Enemy[i].lifeTime = Fly_GetRand(80) + 40; //约2~6秒
gFly_Enemy[i].delay = Fly_GetRand(180);
gFly_Enemy[i].offset = Fly_GetRand(25) + 25;
if ((gFly_Enemy[i].x < FLY_WORKSPACE_X) || (gFly_Enemy[i].x > FLY_WORKSPACE_MAX_X - wide))
gFly_Enemy[i].offset = 0;
}
else //无限停留
{
if (gFly_Enemy[i].lifeTime > 0)
gFly_Enemy[i].lifeTime = -1;
gFly_Enemy[i].delay = Fly_GetRand(150);
gFly_Enemy[i].offset = Fly_GetRand(25) + 25;
if ((gFly_Enemy[i].x < FLY_WORKSPACE_X) || (gFly_Enemy[i].x > FLY_WORKSPACE_MAX_X - wide))
gFly_Enemy[i].offset = 0;
}
}
}
}
else //横向飞行 (gFly_Enemy[i].x==0)
{
if (gFly_Enemy[i].xspd == 0)
{
if (Fly_GetRand(2))
gFly_Enemy[i].xspd = -2;
else
gFly_Enemy[i].xspd = 2;
}
if (gFly_Enemy[i].xspd > 0)
gFly_Enemy[i].x = FLY_WORKSPACE_X - wide;
else
gFly_Enemy[i].x = FLY_WORKSPACE_MAX_X;
gFly_Enemy[i].y = Fly_GetRand(140);
if (gFly_Enemy[i].yspd == 0)
{
ranVal = Fly_GetRand(3);
if (ranVal == 1) // 优化
gFly_Enemy[i].yspd = 1;
else if (ranVal == 2) // 优化
gFly_Enemy[i].yspd = -1;
}
ranVal = Fly_GetRand(2);
if (gFly_Enemy[i].offset > 100 && ranVal)
gFly_Enemy[i].offset = 100;
if (gFly_Enemy[i].offset > 100)
{
ranValTemp = (gFly_Enemy[i].offset - 100) * ((int)abs(gFly_Enemy[i].yspd));
if (gFly_Enemy[i].y < ranValTemp)
gFly_Enemy[i].y = ranValTemp + Fly_GetRand(50);
}
else if (gFly_Enemy[i].yspd < 0) // Y坐标小于一定值时不能向上飞行,需加上一定长度
{
ranValTemp = (120 / (abs(gFly_Enemy[i].xspd))) * (abs(gFly_Enemy[i].yspd));
if (gFly_Enemy[i].y < ranValTemp)
gFly_Enemy[i].y = ranValTemp + Fly_GetRand(50);
}
else if (gFly_Enemy[i].yspd > 0)
gFly_Enemy[i].y = Fly_GetRand(90);
}
MAKE_ENEMYGOODS:
gFly_Enemy[i].score += Fly_GetRand(gFly_Enemy[i].score);// 1~2倍
Fly_MakeGoods(i);//随机产生物品
}
/***********************************************************************
* 说明: 产生敌人的子弹
* 输入参数: i 敌人的序号
* 返回值 : 无
* 修改历史:
* 版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
//FLY_ATTR_TXT
void Fly_MakeEneBul(GT_S16 i)
{
GT_S16 bulletNum, wide;
FLY_SHOOTPOINT shootpoint;
GT_U16 ranVal;
bulletNum = gFly_Enemy[i].bulletMaxNum;
wide = Fly_EnemySize[(gFly_Enemy[i].type - 1) * 2];
if (gFly_Enemy[i].y <= FLY_WORKSPACE_Y || gFly_Enemy[i].y >= FLY_WORKSPACE_MAX_Y - 10 ||
gFly_Enemy[i].x <= 10 - wide || gFly_Enemy[i].x >= FLY_WORKSPACE_MAX_X - 10)
return;
SHOOT_SL:
if (gFly_Shoot_SL[i]) //一定概率连续发射
{
if (!(gFly_ScrCount % 5))
{
shootpoint.x = (Fly_EnemySize[(gFly_Enemy[i].type - 1) * 2] >> 1) - 4; //优化
shootpoint.y = Fly_EnemySize[(gFly_Enemy[i].type - 1) * 2 + 1] - 8;
Fly_MakeBossBul_SL(i, shootpoint, gFly_Enemy[i].bullettype);
gFly_ShootNum_SL[i] ++;
if (gFly_ShootNum_SL[i] >= bulletNum)
{
gFly_Shoot_SL[i] = false;
gFly_ShootNum_SL[i] = 0;
}
}
return;
}
if (!gFly_Enemy[i].fireDelay) return;//容错处理
if (gFly_ScrCount % gFly_Enemy[i].fireDelay) return;
ranVal = Fly_GetRand(3);
if (bulletNum >= 3 && (ranVal == 0))
{
gFly_Shoot_SL[i] = true;
goto SHOOT_SL;
}
else
{
if (Fly_GetRand(8 - gFly_Mission - gFly_GameCurLevel) > 0) // 发射部分子弹
bulletNum = 1 + Fly_GetRand(bulletNum);
ranVal = Fly_GetRand(4 - gFly_GameCurLevel);
if (0 == ranVal) //向玩家发射
Fly_MakeEneBul_To_Player(i, bulletNum, 0, 0, 0);
else //向前方发射
Fly_MakeEneBul_To_Front(i, bulletNum, 0, 0, 0);
}
}
/***********************************************************************
* 说明: 产生BOSS子弹
* 输入参数: i 敌人的序号
* 返回值 : 无
* 修改历史:
* 版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
//FLY_ATTR_TXT
void Fly_MakeBossBul(GT_S16 i)
{
FLY_SHOOTPOINT shootpoint[3];
if (Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].type < 20) //普通子弹发射点
{
/* shootpoint[0].x = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][0].x;
shootpoint[0].y = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][0].y;
shootpoint[1].x = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][1].x;
shootpoint[1].y = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][1].y;
shootpoint[2].x = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][2].x;
shootpoint[2].y = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][2].y;*/
memcpy(shootpoint, gFly_allBossShootpoint[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1], sizeof(shootpoint));
}
else //激光发射点
{
/* shootpoint[0].x = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][3].x;
shootpoint[0].y = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][3].y;
shootpoint[1].x = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][4].x;
shootpoint[1].y = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][4].y;
shootpoint[2].x = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][5].x;
shootpoint[2].y = gFly_allBossShootpoint[gFly_Enemy[i].type-FLY_BOSS_TYPE-1][5].y;*/
memcpy(shootpoint, &gFly_allBossShootpoint[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][3], sizeof(shootpoint));
}
if (gFly_CurBossBulletNum >= FLY_BOSSBULLET_MAXNUM) //循环
gFly_CurBossBulletNum = 0;
switch (Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].type)
{
case 1: //单点发散齐发
case 2: //两点发散齐发
case 3: //三点发散齐发
gFly_BossShootDelay++;
if (gFly_BossShootDelay >= Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].nextDelay)
{
if (Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].type == 1)
Fly_MakeBossBul_S(i, shootpoint[2]);
else if (Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].type == 2)
{
Fly_MakeBossBul_S(i, shootpoint[0]);
Fly_MakeBossBul_S(i, shootpoint[1]);
}
else
{
Fly_MakeBossBul_S(i, shootpoint[0]);
Fly_MakeBossBul_S(i, shootpoint[1]);
Fly_MakeBossBul_S(i, shootpoint[2]);
}
gFly_BossShootDelay = 0;
gFly_CurBossShootNum = 0;
gFly_CurBossBulletNum++;
}
break;
case 11: //单点发散连续发射
case 12: //两点发散连续发射
case 13: //三点发散连续发射
gFly_BossShootDelay++;
if (gFly_BossShootDelay >= Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].nextDelay)
{
if (gFly_CurBossShootNum < Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].maxNum)
{
if (!(gFly_BossShootDelay % 5))
{
if (Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].type == 11)
Fly_MakeBossBul_SL(i, shootpoint[2], 0);
else if (Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].type == 12)
{
Fly_MakeBossBul_SL(i, shootpoint[0], 0);
Fly_MakeBossBul_SL(i, shootpoint[1], 0);
}
else
{
Fly_MakeBossBul_SL(i, shootpoint[0], 0);
Fly_MakeBossBul_SL(i, shootpoint[1], 0);
Fly_MakeBossBul_SL(i, shootpoint[2], 0);
}
gFly_CurBossShootNum++;
}
}
else
{
gFly_BossShootDelay = 0;
gFly_CurBossShootNum = 0;
gFly_CurBossBulletNum++;
}
}
break;
case 14: //单点固定方向连续发射
case 15: //两点固定方向连续发射
case 16: //三点固定方向连续发射
gFly_BossShootDelay++;
if (gFly_BossShootDelay >= Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].nextDelay)
{
if (gFly_CurBossShootNum < Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].maxNum)
{
if (!(gFly_BossShootDelay % 5))
{
if (Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].type == 14)
Fly_MakeBossBul_SG(i, gFly_BossBulletDirection1, shootpoint[2]);
else if (Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].type == 15)
{
Fly_MakeBossBul_SG(i, gFly_BossBulletDirection1, shootpoint[0]);
Fly_MakeBossBul_SG(i, gFly_BossBulletDirection2, shootpoint[1]);
}
else
{
Fly_MakeBossBul_SG(i, gFly_BossBulletDirection1, shootpoint[0]);
Fly_MakeBossBul_SG(i, gFly_BossBulletDirection2, shootpoint[1]);
Fly_MakeBossBul_SG(i, gFly_BossBulletDirection3, shootpoint[2]);
}
gFly_CurBossShootNum++;
}
}
else
{
gFly_BossBulletDirection1 = Fly_GetRand(3);
if (Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].type >= 15)
{
gFly_BossBulletDirection2 = Fly_GetRand(3);
}
if (Fly_BossBullet[gFly_Enemy[i].type - FLY_BOSS_TYPE - 1][gFly_CurBossBulletNum].type >= 16)
{
gFly_BossBulletDirection3 = Fly_GetRand(3);
}
gFly_BossShootDelay = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -