Code:
/* simple little math game that takes six numbers,
each selection eliminates the row and column from which it was selected.
This project was begun mid-morning Jan 18, 2008 */
#include <stdio.h>
void elim( int *subNum, int *row1, int *row2, int *row3, int *row4, int *row5, int *row6, int *col1, int *col2, int *col3, int *col4, int *col5, int *col6 );
void show_grid ( int *r1, int *r2, int *r3, int *r4, int *r5, int *r6 );
int main()
{
int currentNumber, number1, number2, number3, number4, number5, number6, guess, total, x;
char name[256];
/* This is setting up the grid, so that each number is a member of a column and a row. */
int row1[6] = {1, 2, 3, 4, 5, 6};
int row2[6] = {7, 8, 9, 10, 11, 12};
int row3[6] = {13, 14, 15, 16, 17, 18};
int row4[6] = {19, 20, 21, 22, 23, 24};
int row5[6] = {25, 26, 27, 28, 29, 30};
int row6[6] = {31, 32, 33, 34, 35, 36};
int col1[6] = {1, 7, 13, 19, 25, 31};
int col2[6] = {2, 8, 14, 20, 26, 32};
int col3[6] = {3, 9, 15, 21, 27, 33};
int col4[6] = {4, 10, 16, 22, 28, 34};
int col5[6] = {5, 11, 17, 23, 29, 35};
int col6[6] = {6, 12, 18, 24, 30, 36};
/* This is the number that the game will guess. It isn't supposed to change. */
guess = 111;
/* This section introduces the idea of the game */
printf( "Hi, What is your name?\n" );
fgets ( name, 256, stdin );
/* Just getting rid of the default \n at the end for later */
for ( x = 0; x < 256; x++ )
{
if ( name[x] == '\n' )
{
name[x] = '\0';
break;
}
}
printf( "I want to play a game.\n" );
getchar();
printf( "I will show you a grid of numbers; you pick any number, and I will eliminate the row and column that number was in.\n" );
getchar();
printf( "you choose six numbers, and I will guess the sum of those numbers before you even pick the first, okay? \n" );
show_grid(row1, row2, row3, row4, row5, row6);
printf( "I think that the total of your six numbers will be %d.\n", guess );
getchar();
printf( "So enter your first number, cowboy.\n" );
scanf( "%d", &number1 );
currentNumber = number1;
elim(¤tNumber, row1, row2, row3, row4, row5, row6, col1, col2, col3, col4, col5, col6);
/* This is to make sure the correct number is stored in memory for later (ref: elim loop) */
number1 = currentNumber;
show_grid( row1, row2, row3, row4, row5, row6);
printf( "Enter your second number\n" );
scanf( "%d", &number2 );
currentNumber = number2;
elim(¤tNumber, row1, row2, row3, row4, row5, row6, col1, col2, col3, col4, col5, col6);
number2 = currentNumber;
show_grid( row1, row2, row3, row4, row5, row6);
printf( "Enter your third number\n" );
scanf( "%d", &number3 );
currentNumber = number3;
elim(¤tNumber, row1, row2, row3, row4, row5, row6, col1, col2, col3, col4, col5, col6);
number3 = currentNumber;
show_grid( row1, row2, row3, row4, row5, row6);
printf( "Enter your fourth number\n" );
scanf( "%d", &number4 );
currentNumber = number4;
elim(¤tNumber, row1, row2, row3, row4, row5, row6, col1, col2, col3, col4, col5, col6);
number4 = currentNumber;
show_grid( row1, row2, row3, row4, row5, row6);
printf( "Enter your fifth number\n" );
scanf( "%d", &number5 );
currentNumber = number5;
elim(¤tNumber, row1, row2, row3, row4, row5, row6, col1, col2, col3, col4, col5, col6);
number5 = currentNumber;
show_grid( row1, row2, row3, row4, row5, row6);
printf( "Enter your final number\n" );
scanf( "%d", &number6 );
currentNumber = number6;
elim(¤tNumber, row1, row2, row3, row4, row5, row6, col1, col2, col3, col4, col5, col6);
number6 = currentNumber;
/* This part just adds the numbers together, and shows the player the numbers
they chose so they can do it themselves if they'd like */
total = number1 + number2 + number3 + number4 + number5 + number6;
printf( "well %s\n", name );
printf( "you chose the numbers %d, %d, %d, %d, %d and %d", number1, number2, number3, number4, number5, number6 );
getchar();
printf( "The total of those numbers are %d\n", total );
getchar();
if(total == guess)
printf( "Ha! I guessed right! I win!\n" );
else
printf( "Wow, I guess I'm not as good at this game as I thought I was.\n Good Job %s, you beat me.\n", name );
getchar();
return 0;
}
/* This is the function to display the grid. It should update itself based on what numbers have been eliminated. */
void show_grid (int *r1, int *r2, int *r3, int *r4, int *r5, int *r6)
{
printf( "-------------------------------\n" );
printf( "| %d | %d | %d | %d | %d | %d |\n", r1[0], r1[1], r1[2], r1[3], r1[4], r1[5]);
printf( "-------------------------------\n" );
printf( "| %d | %d | %d | %d | %d | %d |\n", r2[0], r2[1], r2[2], r2[3], r2[4], r2[5] );
printf( "-------------------------------\n" );
printf( "| %d | %d | %d | %d | %d | %d |\n", r3[0], r3[1], r3[2], r3[3], r3[4], r3[5] );
printf( "-------------------------------\n" );
printf( "| %d | %d | %d | %d | %d | %d |\n", r4[0], r4[1], r4[2], r4[3], r4[4], r4[5] );
printf( "-------------------------------\n" );
printf( "| %d | %d | %d | %d | %d | %d |\n", r5[0], r5[1], r5[2], r5[3], r5[4], r5[5] );
printf( "-------------------------------\n" );
printf( "| %d | %d | %d | %d | %d | %d |\n", r6[0], r6[1], r6[2], r6[3], r6[4], r6[5] );
printf( "-------------------------------\n" );
}
/* This eliminates the rows and columns of numbers based on what the player has selected */
void elim( int *subNum, int *row1, int *row2, int *row3, int *row4, int *row5, int *row6, int *col1, int *col2, int *col3, int *col4, int *col5, int *col6 )
{
int validNum = 0, number, counter;
while (validNum != 1) {
if( *subNum == *col1 ) {
*col1 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else if( *subNum == *col2 ) {
*col2 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else if( *subNum == *col3 ) {
*col3 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else if( *subNum == *col4 ) {
*col4 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else if( *subNum == *col5 ) {
*col5 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else if( *subNum == *col6 ) {
*col6 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else {
printf( "That number is not a valid selection. Pick a new one\n" );
getchar();
printf( "Enter your number\n" );
scanf( "%d", &number );
*subNum = number;
}
}
validNum = 0;
while (validNum != 1) {
if( *subNum == *row1 ) {
*row1 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else if( *subNum == *row2 ) {
*row2 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else if( *subNum == *row3 ) {
*row3 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else if( *subNum == *row4 ) {
*row4 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else if( *subNum == *row5 ) {
*row5 = 0, 0, 0, 0, 0, 0;
validNum = 1;
}
else if( *subNum == *row6 ) {
*row6 = 0, 0, 0, 0, 0, 0;
validNum = 1;
break;
}
else {
printf( "That number is not a valid selection. Pick a new one\n" );
getchar();
printf( "Enter your number\n" );
scanf( "%d", &number );
*subNum = number;
}
}
validNum = 0;
}
Nothing like jumping in headfirst in the deep end to learn a programming language. Heh.