Танчики в graphics.h
Код:
struct menu_scene
{
int bgcolor;
int width;
int height;
};
struct Tanks
{
int x;
int y;
int sx;
int sy;
int vT;
int vS;
};
void MoveTank(Tanks *t, menu_scene *msc)
{
int live=3,left=10,score;
LoadTanksPosition(t,"Tank.txt");
unsigned char key;
unsigned char way=1;
while(key!=27)
{
Stats(msc,live,left,score);
key=getch();
if(key==32)
{
t->sx=t->x;
t->sy=t->y;
if(way==1)
{
while(t->sy!=30)
{
readimagefile("picture/background.bmp", t->sx+10, t->sy-10, t->sx+20,t->sy);
t->sy-=t->vT;
readimagefile("C://programme/tanks/picture/shot.bmp", t->sx+10, t->sy-10, t->sx+20, t->sy);
delay(20);
}
readimagefile("picture/background.bmp", t->sx+10, t->sy-8, t->sx+20, t->sy+5);
}
if(way==2)
{
while(t->sx!=10)
{
readimagefile("picture/background.bmp", t->sx-10, t->sy+10, t->sx,t->sy+20);
t->sx-=t->vT;
readimagefile("C://programme/tanks/picture/shot.bmp", t->sx-10, t->sy+10, t->sx, t->sy+20);
delay(20);
}
readimagefile("picture/background.bmp", 0, t->sy+10, 10, t->sy+20);
}
if(way==3)
{
while(t->sx<=msc->width-10)
{
readimagefile("picture/background.bmp", t->sx+30, t->sy+10, t->sx+40,t->sy+20);
t->sx+=t->vT;
readimagefile("C://programme/tanks/picture/shot.bmp", t->sx+30, t->sy+10, t->sx+40, t->sy+20);
delay(20);
}
readimagefile("picture/background.bmp", msc->width-10, t->sy+10, msc->width, t->sy+20);
}
if(way==4)
{
while(t->sy<=msc->height-10)
{
readimagefile("picture/background.bmp", t->sx+10, t->sy+30, t->sx+20,t->sy+40);
t->sy+=t->vT;
readimagefile("C://programme/tanks/picture/shot.bmp", t->sx+10, t->sy+30, t->sx+20, t->sy+40);
delay(20);
}
readimagefile("picture/background.bmp", t->sx+10, msc->height-10, t->sx+20, msc->height);
}
}
if(key==72)
{
way=1;
if(t->y!=20)
{
cleardevice();
t->y-=t->vT;
readimagefile("C://programme/tanks/picture/tank1.bmp", t->x, t->y, t->x+30, t->y+30);
}
else readimagefile("C://programme/tanks/picture/tank1.bmp", t->x, 20, t->x+30, 50);
}
if(key==75)
{
if(t->x!=0)
{
way=2;
cleardevice();
t->x-=t->vT;
readimagefile("C://programme/tanks/picture/tank3.bmp", t->x, t->y, t->x+30, t->y+30);
}
else readimagefile("C://programme/tanks/picture/tank3.bmp", 0, t->y, 30, t->y+30);
}
if(key==77)
{
if(t->x<msc->width-30)
{
way=3;
cleardevice();
t->x+=t->vT;
readimagefile("C://programme/tanks/picture/tank4.bmp", t->x, t->y, t->x+30, t->y+30);
} else readimagefile("C://programme/tanks/picture/tank4.bmp", msc->width-30, t->y, msc->width, t->y+30);
}
if(key==80)
{
way=4;
if(t->y!=msc->height-30)
{
cleardevice();
t->y+=t->vT;
readimagefile("C://programme/tanks/picture/tank2.bmp", t->x, t->y, t->x+30, t->y+30);
}else readimagefile("C://programme/tanks/picture/tank2.bmp", t->x, msc->height-30, t->x+30, msc->height);
}
}
}
{
int bgcolor;
int width;
int height;
};
struct Tanks
{
int x;
int y;
int sx;
int sy;
int vT;
int vS;
};
void MoveTank(Tanks *t, menu_scene *msc)
{
int live=3,left=10,score;
LoadTanksPosition(t,"Tank.txt");
unsigned char key;
unsigned char way=1;
while(key!=27)
{
Stats(msc,live,left,score);
key=getch();
if(key==32)
{
t->sx=t->x;
t->sy=t->y;
if(way==1)
{
while(t->sy!=30)
{
readimagefile("picture/background.bmp", t->sx+10, t->sy-10, t->sx+20,t->sy);
t->sy-=t->vT;
readimagefile("C://programme/tanks/picture/shot.bmp", t->sx+10, t->sy-10, t->sx+20, t->sy);
delay(20);
}
readimagefile("picture/background.bmp", t->sx+10, t->sy-8, t->sx+20, t->sy+5);
}
if(way==2)
{
while(t->sx!=10)
{
readimagefile("picture/background.bmp", t->sx-10, t->sy+10, t->sx,t->sy+20);
t->sx-=t->vT;
readimagefile("C://programme/tanks/picture/shot.bmp", t->sx-10, t->sy+10, t->sx, t->sy+20);
delay(20);
}
readimagefile("picture/background.bmp", 0, t->sy+10, 10, t->sy+20);
}
if(way==3)
{
while(t->sx<=msc->width-10)
{
readimagefile("picture/background.bmp", t->sx+30, t->sy+10, t->sx+40,t->sy+20);
t->sx+=t->vT;
readimagefile("C://programme/tanks/picture/shot.bmp", t->sx+30, t->sy+10, t->sx+40, t->sy+20);
delay(20);
}
readimagefile("picture/background.bmp", msc->width-10, t->sy+10, msc->width, t->sy+20);
}
if(way==4)
{
while(t->sy<=msc->height-10)
{
readimagefile("picture/background.bmp", t->sx+10, t->sy+30, t->sx+20,t->sy+40);
t->sy+=t->vT;
readimagefile("C://programme/tanks/picture/shot.bmp", t->sx+10, t->sy+30, t->sx+20, t->sy+40);
delay(20);
}
readimagefile("picture/background.bmp", t->sx+10, msc->height-10, t->sx+20, msc->height);
}
}
if(key==72)
{
way=1;
if(t->y!=20)
{
cleardevice();
t->y-=t->vT;
readimagefile("C://programme/tanks/picture/tank1.bmp", t->x, t->y, t->x+30, t->y+30);
}
else readimagefile("C://programme/tanks/picture/tank1.bmp", t->x, 20, t->x+30, 50);
}
if(key==75)
{
if(t->x!=0)
{
way=2;
cleardevice();
t->x-=t->vT;
readimagefile("C://programme/tanks/picture/tank3.bmp", t->x, t->y, t->x+30, t->y+30);
}
else readimagefile("C://programme/tanks/picture/tank3.bmp", 0, t->y, 30, t->y+30);
}
if(key==77)
{
if(t->x<msc->width-30)
{
way=3;
cleardevice();
t->x+=t->vT;
readimagefile("C://programme/tanks/picture/tank4.bmp", t->x, t->y, t->x+30, t->y+30);
} else readimagefile("C://programme/tanks/picture/tank4.bmp", msc->width-30, t->y, msc->width, t->y+30);
}
if(key==80)
{
way=4;
if(t->y!=msc->height-30)
{
cleardevice();
t->y+=t->vT;
readimagefile("C://programme/tanks/picture/tank2.bmp", t->x, t->y, t->x+30, t->y+30);
}else readimagefile("C://programme/tanks/picture/tank2.bmp", t->x, msc->height-30, t->x+30, msc->height);
}
}
}
Цитата:
знаю, что программа написанная мною правильна
Ну а если правильная программа, то зачем исправлять? :)
Выходит все таки неправильная.
И устаревшая библиотека тут не причем. Глядя на код и вопрос, я вижу полное непонимание работы программы, и сомневаюсь что программа ваша.
По сути вопроса, оно и будет стоять пока снаряд не долетит, т.к. летит он в while цикле с delay-eм внутри обработки нажатий клавиш. Тут нужно заводить отдельный таймер, для обработки движения снаряда. Кроме того нужен массив данных о позиции снаряда, ибо пока снаряд летит игрок может еще раз выстрелить. А для того чтобы понять как это исправить - вам нужно сначала понять как оно сейчас работает. Пишите, а не списывайте чужой код.
Это полностью мною написанная программа, ни у кого ничего не копировал. И отлично понимаю как она работает, но просто не знаю как исправить эту недоработку, но спасибо на счет идеи с отдельным массивом