我最近在开发C++Easyx飞机大战,为什么我的代码运行后只有当飞机移动才能移动子弹,飞机不动时子弹就不飞,帮帮忙!
代码:
#include<graphics.h>
#include<conio.h>
#include<windows.h>
#include<bits/stdc++.h>
using namespace std;
IMAGE img,img1,play1,play2,bullet1,bullet2,enemy1,enemy2;
struct Plane{
int x,y;
bool life;
int w,h;
}play;
struct Bullet{
int x,y;
}bullet[500];
int num_bullet=0;
MOUSEMSG m;
void setup(){
//玩家飞机初始化
play.x=200;play.y=400;
//加图片
//loading picture
loadimage(&img,"D:\\开发\\开发项目\\飞机大战(万圣节特辑)\\pic\\1.png",500,500);
loadimage(&img1,"D:\\开发\\开发项目\\飞机大战(万圣节特辑)\\pic\\2.png",500,500);
loadimage(&play1,"D:\\开发\\开发项目\\飞机大战(万圣节特辑)\\pic\\player1.png",100,100);
loadimage(&play2,"D:\\开发\\开发项目\\飞机大战(万圣节特辑)\\pic\\player2.png",100,100);
loadimage(&enemy1,"D:\\开发\\开发项目\\飞机大战(万圣节特辑)\\pic\\enemy.png",100,100);
loadimage(&enemy2,"D:\\开发\\开发项目\\飞机大战(万圣节特辑)\\pic\\enemy1.png",100,100);
}
void drawbullet(){
for(int i=1;i<=num_bullet;i++){
bullet[i].y-=20;
setlinestyle(BS_SOLID,3);
setlinecolor(RED);
line(bullet[i].x,bullet[i].y,bullet[i].x,bullet[i].y-20);
}
}
void show(){
putimage(0,0,&img1);
putimage(play.x,play.y,&play1,SRCPAINT);
putimage(play.x,play.y,&play2,SRCAND);
}
void player_move(){
m=GetMouseMsg();//获取鼠标消息
if(m.uMsg==WM_MOUSEMOVE){
//鼠标移动实现
play.x=m.x-50;
play.y=m.y-50;
}
if(m.uMsg==WM_LBUTTONDOWN){
num_bullet++;//子弹数量
bullet[num_bullet].x=play.x+50;//子弹x轴位置
bullet[num_bullet].y=play.y-20;//子弹y轴位置
}
}
int main()
{
initgraph(500,500);
setup();
BeginBatchDraw();
while(1){
cleardevice();
show();
player_move();
drawbullet();
FlushBatchDraw();
}
getch();
closegraph();
return 0;
}
代码视频演示地址:
https://live.csdn.net/v/254040