Hi!
I am Abdul-Majeed.
I'm a new student to c. I tried writting a game for random multiplication calculation.
This was a similer questions for me in my midterm exams.
I need friends to inprove it for me.
You can also find faults and make corrections to my code

``````#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

void guesgame(void);
int main ()
{
char name[30];

scanf("%s",name);

printf("Hello! %s and welcome to Abdul-Majeed's Multiplication game\n",name);
printf("Rules for the game:\n1. You will get 5 points for every correct answer\n2. You will loss 5 points for every wrong anwer\n"
"3.The game will end if you score up to 100\nIt will also end when you get 3 questions wrong\nWish you good luck!!!\n");

guesgame();

getch ();
return 0;
}
void guesgame(void)
{

int i=0,j=0;

while(1)
{
srand(time(NULL));

x = 1+rand()%10;

y = 1+rand()%10;

result = x*y;

printf("%d * %d = ",x,y);

{
printf("\nGood you had it ryt! you have 5 points\n");
i +=5;

}
{
printf("\noops! it's wrong. you get -5\n");
j -=5;
}
if(i == 100 || j == -15)
{
printf("Sorry you have no more chance\n\n"
"Thank you for playing Abdul-Majeed's game\n\n"
getch ();

}
}

}
``````
2
Contributors
4
Replies
22
Views
2 Years
Discussion Span
Last Post by kubura musah

A few things:

• Instead of doing this - `int i=0,j=0;`, `int result,answer,x,y;`. It's much more intuitive to use descriptive names. It also helps readability to declare variables on separate lines:

`````` int result = 0;
int mult1 = 0;
int mult2 = 0;
int score = 0;
int errors = 0;
``````
• `srand` should only be initialized once, probably at the beginning of `main`.

• try to be more consistent with your indenting. If the IDE you're using doesn't have options to fix the formatting I would suggest changing to one that does(I.E. Code::Blocks)

• Your `while` loop doesn't have a clean exit. Creating a boolean variable(`bool done = false`) to tell the loop to exit when the game is over, is much more intuitive(`while(!done)`).

• the final score doesn't factor in the errors made:

``````if (score == 100 || errors == -15)
{
printf("Sorry you have no more chance\n\n"
"Thank you for playing Abdul-Majeed's game\n\n"
"Your Total points = %d\n", score + errors);
done = true;
getch();
}
``````

All together it would look something like this:

``````int main()
{
srand(time(NULL));
char name[30];
scanf("%s", name);
printf("Hello! %s and welcome to Abdul-Majeed's Multiplication game\n", name);
printf("Rules for the game:\n1. You will get 5 points for every correct answer\n2. You will loss 5 points for every wrong anwer\n"
"3.The game will end if you score up to 100\nIt will also end when you get 3 questions wrong\nWish you good luck!!!\n");
guesgame();
getch();
return 0;
}
void guesgame(void)
{
int result = 0;
int mult1 = 0;
int mult2 = 0;
int score = 0;
int errors = 0;
bool done = false;
while (!done)
{
mult1 = 1 + rand() % 10;
mult2 = 1 + rand() % 10;
result = mult1*mult2;
printf("%d * %d = ", mult1, mult2);
{
printf("\nGood you had it ryt! you have 5 points\n");
score += 5;
}
{
printf("\noops! it's wrong. you get -5\n");
errors -= 5;
}
if (score == 100 || errors == -15)
{
printf("Sorry you have no more chance\n\n"
"Thank you for playing Abdul-Majeed's game\n\n"
"Your Total points = %d\n", score);
done = true;
getch();
}
}
}
``````

Edited by tinstaafl