15,558,869 members
See more:
```// C program to illustrate OpenGL game

#include<stdio.h>
#include<gl glut.h="">
#include<math.h>
#define pi 3.142857

int c = 0, d = 0, left = 0, right = 0;
int m = 0, j = 1, flag1 = 0, l = 1, flag2 = 0, n = 0, score = 0, count = 1;

void myInit (void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glColor3f(1.0f, 0.0f, 0.0f);
glPointSize(1.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-620.0, 620.0, -340.0, 340.0);
}

void keyboard(unsigned char key, int x, int y)
{
left = -200 + 200 * (d - c);//left is the point the rect is drawn in left side
right = 200 + 200 * (d - c);//right is the point the rectangle is drown from right

//if the rectangle is in the middle so the right is = 200 and left = -200
//else if u keep on pressing the b the c will increment and the left equation will be left = -200+200*(0-1) that the left side -400 till it reaches max -600
//and same for right

if (left == -600)//indicats the part between rectangle and the leftmost side
{
if (key == 110)//n  moves right
d++;//if the left reaches -600 so the d increment only letting u move right
}
else if (right == 600)//indicates part between rectangle and right most.
{
if (key == 98)//b moves left
c++;//if right reaches 600 so the c increments letting u only move left
//
}
else
{
if (key == 98)//u could press b
c++;
if (key == 110)//u could press n
d++;
}
glutPostRedisplay();
}

void myDisplay(void)
{
int x, y, k;
for (k = 0; k <= 400; k += 5)//makes ball moves ,just to make ball recreating in display motion
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_STRIP);
float i = 0;
m = m + 6;//indicates motion of ball virtical ,move 6 points virtical in each cycle
n = n + 6;//indicates motion of ball horizonta,move 4 points horizontally in each cycle
while (i <= 2 * pi)//draws the ball cincomfrunce
{
y = 12 + 20 * cos(i);//center of ball equation along y axis //y start from 12 and radius 20
x = 20 * sin(i);//center of ball equation alon x axis//i is the angle //x start from 0 and radius 20
i = i + 0.1;//increment i with 0.1 till it reaches 360,0.1 till it draws the hole ball
if (m == 288 && flag1 == 0)//vertical,if the ball reaches the top increment the score ,
{                          // flag1 0 means incremnt movment up with equation (y-j*m) ,so if it reaches the top switch flag0 with flag 1
j = -1;
m = -288;
flag1 = 1;
score++;
}
if (m == 288 && flag1 == 1) //if flag = 1 means  start moving1 down
{
j = 1;
m = -288;
flag1 = 0;
}
if (n == 580 && flag2 == 0)//horizontal
{                          // if flag2==0 means increment ball movemnt horizontally
// if it reaches the edge switch flags
l = -1;
n = -580;
flag2 = 1;
}
if (n == 580 && flag2 == 1)//if flag 2 =1 do not move horizontally
//if and start moving down  then switch flags
{
l = 1;
n = -580;
flag2 = 0;
}
// equation for desired motion of ball
glVertex2i((x - l * n), (y - j * m));
}
glEnd();

glBegin(GL_LINE_LOOP);//frame off the window
glVertex2i(-600, -320);
glVertex2i(-600, 320);
glVertex2i(600, 320);
glVertex2i(600, -320);
glEnd();

glBegin(GL_LINE_LOOP); //shape of rectangle
left = -200 + 200 * (d - c);
right = 200 + 200 * (d - c);
glVertex2i(left, -315);
glVertex2i(left, -295);
glVertex2i(right, -295);
glVertex2i(right, -315);
glEnd();
if ((j * m) == 276) //if (j*m)=288-radius(12 is the radius of circle on y axis if it is in the buttom right part
{            if ((left > ((-1 * l * n) + 20)) || (right < (-1 * l * n) - 20))//if left point of the rectangle say is in the - part of x asix so the equation will be (left>(-1*1*-588)+20=608 so the left pont will not include the x axis + radius of ball so the ball falls and the game ends)
{
printf("Game Over !!!\nYour Score is :\score\n", score);
exit(0);
}
}
glutSwapBuffers();
}
}

int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(1100, 600);
glutInitWindowPosition(0, 0);
glutCreateWindow("Game");
glutKeyboardFunc(keyboard);
myInit();
glutDisplayFunc(myDisplay);
glutMainLoop();
}```

What I have tried:

It's a simple project but I can't understand the could ,so if someone could help.
Posted
Updated 9-Jun-21 9:03am
v3
Rageh11111 6-Jun-21 14:06pm

## Solution 1

Do you have any idea how much work explaining code line by line is?
Every single line needs a paragraph of explanation! For example:
```int next = r.Next();
```

Create a new variable called "next" which can hold a integer value. From the previously declared Random instance "r", call the "Next" method to get a new random number, and assign it to the "next" variable.

Can you imagine how long it would take us to explain even a code fragment like your example, line by line?

No. It is not going to happen. If you have a specific problem, then ask a question about it. But think first - would you want to sit down for 45 minutes and type up a line-by-line description for no good reason?

If you don't understand code, then don't play with it: learn the language and framework on which it works, and write your own. "Copy'n'paste'n'hope" is not a viable design strategy.