Как остановить постоянное мерцание во время воспроизведения анимации? - PullRequest
0 голосов
/ 26 октября 2019

Я пытался сделать простую анимацию ходячего человечка, в библиотеке graphics в C.

Мой код:

#include<stdio.h>
#include<graphics.h>

void swap(int *x, int *y){

    int temp=0;
    temp=*x;
    *x=*y;
    *y=temp;
}


int main(){
    int gd=DETECT,gm=0;
    int i=0;
    int a=30+i;
    int b=50+i;
    initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
    while(i!=600){
    swap(&a,&b);
    circle(40+i,40,30);
    line(40+i,70,a+i,90);
    line(40+i,70,b+i,90);
    i++;
    delay(10);
    cleardevice();
    }
    getch();
    closegraph();
    return 0;
}

Проблема заключается в том, что экран монитора постоянно мигает во время воспроизведения анимации, и, кроме того, положения ног не меняются в соответствии с функцией swap(&b,&c). Куда я здесь не так? Может кто-нибудь, пожалуйста, помогите мне?

Исправление: Итак, я понял, что нет смысла использовать функцию swap(), так как переключение линий сделает выравнивание снова одинаковым для обоихих (в результате это будет выглядеть, как будто ноги не двигаются), поэтому я решил кое-что настроить здесь:

while(i!=600){
    if(i%2==0){
        circle(40+i,40,30);
        line(40+i,70,(a+b)/2+i,90);
        line(40+i,70,(b+a)/2+i,90);

    }else{
        circle(40+i,40,30);
        line(40+i,70,a+i,90);
        line(40+i,70,b+i,90);
    }
    i++;
    delay(10);
    cleardevice();
    }

Теперь, похоже, фигура идет. Но я все еще не знаю, как решить проблему мерцания экрана.

...