Skip to content
Snippets Groups Projects
Select Git revision
  • d176b4e16b121631813f75cfa60e8cf3e53f09b0
  • master default protected
2 results

bouncing_ball.c

Blame
  • bouncing_ball.c 1.25 KiB
    /**
     * bouncing ball
     */
    #include <graphics.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    int kbhit()
    {
        struct timeval tv;
        fd_set fds;
        tv.tv_sec = 0;
        tv.tv_usec = 0;
        FD_ZERO(&fds);
        FD_SET(STDIN_FILENO, &fds); //STDIN_FILENO is 0
        select(STDIN_FILENO+1, &fds, NULL, NULL, &tv);
        return FD_ISSET(STDIN_FILENO, &fds);
    }
    
    int main()
    {
    
        /* request autodetection */
        int gdriver = DETECT, gmode, errorcode;
        /* Local Variables */
        int x, y;
        int up = 0;
        int left = 0;
    
        /* initialize graphics and local variables */
        initgraph(&gdriver, &gmode, "");
    
        /* get mid positions in x and y-axis */
        x = getmaxx() / 2;
        y = getmaxy() / 2;
    
        while (!kbhit()) {
            if (y >= getmaxy() - 30)
                up = 1;
            if (y <= 30)
                up = 0;
    
            if (x >= getmaxx() - 30)
                left = 1;
            if (x <= 30)
                left = 0;
    
            setcolor(RED);
            circle(x, y, 30);
            floodfill(x, y, RED);
    
            /* prepare for next  frame */
            delay(15);
            cleardevice();
    
            if (up)
                y = y - 5;
            else
                y = y + 5;
    
            if (left)
                x = x - 5;
            else
                x = x + 5;
        }
    
        /* clean up */
        closegraph();
        return 0;
    }