Hi,
This is a program i wrote to simulate the race between the hare and the tortoise. But for some reason it prints nothing. And i don't know why. Pls help me to correct this program and tell me which part is wrong ( it's my first try to use pointers...). Thnx in advance.
also, i keep getting compile error: warning: assignment makes integer from pointer without a cast
Code:
/* Race between the tortoise and the hare */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 70
void printPositions( const char positions[], int arraySize );
int moveAnimals( char positions[], int *currentPos_Tortoise, int *currentPos_Hare );
int main()
{
char positions[ SIZE ];
int end = 0;
int i;
int whoWins = 0;
int currentPos_tortoise = 1, currentPos_hare = 1;
for ( i = 0; i < SIZE; i++ )
positions[ i ] = " ";
printf( "***---Race---***\n\n" );
srand( time( NULL ) );
while ( whoWins = 0 ) {
whoWins = moveAnimals( positions, ¤tPos_tortoise, ¤tPos_hare );
printPositions( positions, SIZE );
}
switch ( whoWins ) {
case 1:
printf( "Turtle wins!\n" );
break;
case 2:
printf( "Hare wins!\n" );
break;
case 3:
printf( "It's a tie.\n" );
break;
}
getch();
return 0;
}
int moveAnimals( char positions[], int *currentPos_Tortoise, int *currentPos_Hare )
{
static int moveTortoise[ 3 ] = { 3, -6, 1 };
static int moveHare[ 5 ] = { 0, 9, -12, 1, -2 };
int i;
i = 1 + rand() % 10;
if ( 1 <= i <= 5 )
*currentPos_Tortoise += moveTortoise[ 0 ];
else if ( 6 <= i <= 7 )
*currentPos_Tortoise += moveTortoise[ 1 ];
else if ( 8 <= i <= 10 )
*currentPos_Tortoise += moveTortoise[ 2 ];
if ( 1 <= i <= 2 )
*currentPos_Hare += moveHare[ 0 ];
else if ( 3 <= i <= 4 )
*currentPos_Hare += moveHare[ 1 ];
else if ( i == 5 )
*currentPos_Hare += moveHare[ 2 ];
else if ( 6 <= i <= 8 )
*currentPos_Hare += moveHare[ 3 ];
else if ( 9 <= i <= 10 )
*currentPos_Hare += moveHare[ 4 ];
for ( i = 0; i < 70; i++ )
positions[ i ] = " "; /* Clearing up the array */
if ( *currentPos_Tortoise == *currentPos_Hare )
positions[ *currentPos_Tortoise ] = "!";
else {
positions[ *currentPos_Tortoise ] = "T";
positions[ *currentPos_Hare ] = "H";
}
if ( *currentPos_Tortoise >= 70 || *currentPos_Hare >= 70 )
return 3; /* it's a tie */
else if ( *currentPos_Tortoise >= 70 )
return 1; /* turtle wins */
else if ( *currentPos_Hare >= 70 )
return 2; /* hare wins */
else
return 0; /* nobody wins yet */
}
void printPositions( const char positions[], int arraySize )
{
int i;
printf( "\n" );
for ( i = 0; i < arraySize; i++ )
printf( "%c ", positions[ i ] );
}