如下图所示,微信官方飞机大战中界面,我想在思考,一发炮弹是怎么击中目标的,请大家开放讨论
我想应该类似这个逻辑,简单的说,战机,炮弹,随机生成,碰撞检测,另外还有一个就是敌机和我方飞机相撞的检测
while(1)
{
system("cls");
time_t currenttime;
currenttime = time(NULL);
//每隔一秒生成一架敌机
if (currenttime - starttime - subtime > 0)
{
srand((unsigned)time(NULL));
unsigned int target_y = rand() % 14 + 3;
target = generate_target(target, target_y);
}
subtime = currenttime - starttime;
//开火则生成子弹
if (isfire)
{
bullet = generate_bullet(bullet, plane_x, plane_y - 1);
isfire = 0;
}
//打印敌机
print_target(target);
targetspeed++;
if(targetspeed % 2 == 0)
target = update_target(target);
//打印子弹
print_bullet(bullet);
bulletspeed++;
if (bulletspeed % 2 == 0)
bullet = update_bullet(bullet);
//碰撞检测
grade = grade + collision_detection(bullet, target);
gotoxy(0, 25);
printf("SCORE: %d", grade);
//打印飞机
print_plane(plane_x, plane_y);
//敌机本机是否相撞
bool isgameover = is_gameover(plane_x, plane_y, target);
//Sleep(100);
//非阻塞键盘输入
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
4 回答1.8k 阅读
1 回答835 阅读✓ 已解决
1 回答1.6k 阅读
703 阅读
碰撞检测,简单说就是两者是否有交叉区域