プログラムがうまく起動しません。
以下のようなプログラムを作ったのですが、人を動かそうとすると背景が消えたり、UFOが表示されなくなったりします。
ほんとは人を動かしながらも、背景はそのままで、UFOは操作せずにずっと動き続けるようなものを作ろうとしています。
なぜ消えたりするのか教えて欲しいです、後どうすればその様になるのか教えていただけると助かります。
#include <stdio.h>
#include <handy.h>
#include <time.h>
#include <math.h>
//人間を描く関数
void humanA1(int x1,int x2);
void humanA2(int x1,int x2);
void humanB1(int x1,int x2);
void humanB2(int x1,int x2);
void UFO(int a);
void view(void);
//void plane1(int a, int gid1);
//void plane2( int gid2);
//void Flag(int a, int gid1, int gid2);
int main(){
int x1=0;
int x2=0;
int a=0;
int v;
int key;
int count1=0;
int count2=0;
// int gid1=HgImageLoad("war_stealth_aircraft.png");
// int gid2=HgImageLoad("war_stealth_aircraft2.png");
HgOpen(600,600);
//背景
view();
for(;;){
key=HgGetChar();
HgClear();
//背景
view();
//UFO
UFO(a);
a=a-10;
HgClear();
if(a==-400){
a=a+10;
HgClear();
UFO(a);
HgSleep(0.05);
}else if(a==540){
a=a-10;
HgClear();
UFO(a);
HgSleep(0.05);
}
//左に動く
if(key=='a'){
printf("%d\n",(500+a));
count1++;
if(count1%2==0){
humanA2(x1,x2);
x1=x1-10;
}else{
humanB2(x1,x2);
x1=x1-10;
}
}
//右に動く
if(key=='d'){
printf("%d\n",(500+a));
count2++;
if(count2%2==0){
humanA1(x1,x2);
x1=x1+10;
}else{
humanB1(x1,x2);
x2=x2+10;
}
}
}
HgGetChar();
HgClose();
return 0;
}
void humanA1(int x1,int x2){//右向き
HgSetFillColor(HG_ORANGE);
HgCircleFill(300+x1+x2, 75, 25,0);//頭
HgLine(300+x1+x2, 50, 300+x1+x2, 25);//胴体
HgLine(275+x1+x2, 38, 325+x1+x2, 38);//肩から手首
HgLine(275+x1+x2, 38, 275+x1+x2, 25);//左手
HgLine(325+x1+x2, 38, 325+x1+x2, 50);//みぎ手
HgLine(300+x1+x2, 25, 275+x1+x2,0);//左足
HgLine(300+x1+x2, 25, 325+x1+x2, 25);//みぎ太もも
HgLine(325+x1+x2, 25, 325+x1+x2, 0);//右足
}
void humanA2(int x1,int x2){//左向き
HgSetFillColor(HG_ORANGE);
HgCircleFill(300+x1+x2, 75, 25,0);//頭
HgLine(300+x1+x2, 50, 300+x1+x2, 25);//胴体
HgLine(275+x1+x2, 38, 325+x1+x2, 38);//肩から手首
HgLine(275+x1+x2, 38, 275+x1+x2, 50);//左手
HgLine(325+x1+x2, 38, 325+x1+x2, 25);//みぎ手
HgLine(300+x1+x2, 25, 275+x1+x2, 25);//左足太もも
HgLine(275+x1+x2, 25, 275+x1+x2, 0);//左足
HgLine(300+x1+x2, 25, 325+x1+x2, 0);//右足
}
void humanB1(int x1,int x2){//右向き
HgSetFillColor(HG_ORANGE);
HgCircleFill(300+x1+x2, 75, 25,0);//頭
HgLine(300+x1+x2, 50, 300+x1+x2, 25);//胴体
HgLine(300+x1+x2, 38, 275+x1+x2, 30);//左手首
HgLine(275+x1+x2, 30, 290+x1+x2, 25);//左手
HgLine(300+x1+x2, 38, 325+x1+x2, 30);//みぎ手首
HgLine(325+x1+x2, 30, 325+x1+x2, 35);//右手
HgLine(300+x1+x2, 25, 290+x1+x2, 0);//左足
HgLine(300+x1+x2, 25, 325+x1+x2, 13);//右足首
HgLine(325+x1+x2, 13, 312+x1+x2, 0);//右足
}
void humanB2(int x1,int x2){//左向き
HgSetFillColor(HG_ORANGE);
HgCircleFill(300+x1+x2, 75, 25,0);//頭
HgLine(300+x1+x2, 50, 300+x1+x2, 25);//胴体
HgLine(300+x1+x2, 38, 275+x1+x2, 30);//左手首
HgLine(275+x1+x2, 30, 290+x1+x2, 35);//左手
HgLine(300+x1+x2, 38, 325+x1+x2, 30);//みぎ手首
HgLine(325+x1+x2, 30, 310+x1+x2, 25);//右手
HgLine(300+x1+x2, 25, 280+x1+x2, 13);//左足太もも
HgLine(280+x1+x2, 13, 290+x1+x2, 0);//左足
HgLine(300+x1+x2, 25, 310+x1+x2, 0);//右足
}
void UFO(int a){
HgSetFillColor(HG_GRAY);
HgFanFill(500+a, 550, 30, 0, M_PI, 1);
HgOvalFill(500+a, 530, 50, 25, 0, 1);
HgBoxFill(470+a, 465, 60, 40, 1);
}
void view(void){
HgSetFillColor(HG_GREEN);
HgFanFill(50, 200, 300, 1.25*M_PI, 1.75*M_PI,1);
HgFanFill(300, 300, 500, 1.25*M_PI, 1.75*M_PI,1);
HgFanFill(550, 200, 300, 1.25*M_PI, 1.75*M_PI,1);
}