1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

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