Multiple Bouncing Balls Program in C (Please Help)

Discussion in 'C' started by Jimmysl, Jan 15, 2018.

  1. Jimmysl

    Jimmysl New Member

    Joined:
    Jan 15, 2018
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    1
    Gender:
    Male
    I am trying to make a program in C with multiple bouncing balls. I know it is a very known program and I have already searched the internet and seen different versions of it. However, because I am new in programming, I didn’t manage to understand them and answer my questions. The problem is that I have created a code, but my program doesn’t run properly. To be more exact, I think the part where it reads the data is fine, but then there is a problem in the code of the graphics.h library. I cannot understand where the problem is, as it is the first time I use this library. Please help me and be as lenient as possible.

    Thank you in advamce.

    Here is my code:

    Code:
    #include <stdio.h>
    #include <graphics.h>
    #include <stdlib.h>
    #include <time.h>
    #include <math.h>
    
    int main()
    {
        FILE *input;
        int n, *num, i, total, j;
        if((input=fopen("data.txt", "r"))!=NULL)
        {
            fscanf(input, "%d", &n);
            total=n*7;
            num=(int *) malloc(total*sizeof(int));
            if(num!=NULL)
            {
                for(i=0; i<total; i++)
               {
                   fscanf(input, "%d", &num[i]);
               }
               fclose(input);
    
               clock_t start,finish, previous;
               double step;
               int gdriver = DETECT, gmode, errorcode;
               initgraph(&gdriver, &gmode, "");
               errorcode = graphresult();
               if (errorcode != grOk)
               {
                   printf("Graphics error: %s\n", grapherrormsg(errorcode));
                   system ("pause");
                   exit(1);
               }
               start=clock();
               previous=start;
               do
               {
                   j=0;
                   for(i=0; i<=n; i++)
                   {
                       finish = clock();
                       step = (finish-previous)*1.0/CLOCKS_PER_SEC;
                       if (step >= 0.03)
                       {
                           previous = finish;
                           setfillstyle(SOLID_FILL,BLACK);
                           setcolor(BLACK);
                           fillellipse(num[j],num[j+1],num[j+4],num[j+4]);
                           num[j]+= num[j+5]*step;
                           num[j+1]+= num[j+6]*step;
                           if (num[j]+num[j+4]>=getmaxx() || num[j]-num[j+4]<=0)
                           {
                               num[j+5] *= -1;
                           }
                           if (num[j+1]+num[j+4]>=getmaxy() || num[j+1]-num[j+4]<=0)
                           {
                               num[j+6] *= -1;
                           }
                           setfillstyle(SOLID_FILL,RED);
                           setcolor(RED);
                           fillellipse(num[j],num[j+1],num[j+4],num[j+4]);
                           j=j+7;
                       }
                   }
               }
               while (!kbhit());
               closegraph();
            }
            else
            {
                printf("Could not allocate memory\n\n");
            }
        }
        else
        {
            printf("Could not open file\n\n");
        }
    
    
        system("pause");
        return 0;
    }
    
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice