//#include //#include #include /*-------------------------------------- * Programme lievre et tortue version 1 * ------------------------------------- */ /* Le lievre et la tortue font une course sur un plateau. * Le plateau est ici represente * par un tableau 1D de N cases. * A chaque tour, le lievre peut aleatoirement * - Sauter (avancer de x cases) * - Glisser (reculer de x cases) * - Dormir * A chaque tour, le lievre peut aleatoirement * - Marcher (avancer de x cases) * - Glisser (reculer de x cases) * La course se termine lorsque le lievre ou la tortue * arrive a la fin du plateau. */ /*-------------------------------------- * Les fonctions utiles au * programme principal * ------------------------------------- */ // On initialise le cote aleatoire du jeu. // Disons qu'on utilise l'heure d'execution du // programme (localtime) pour cela. void InitialiserAleatoire(void) { time_t t_loc; struct tm *tmp; time(&t_loc); tmp= localtime(&t_loc); srand(tmp->tm_sec); } // Fonction testant la fin de la course int courseFinie(int pLievre, int pTortue,int lCourse) { // Si le lievre depasse la ligne d'arrivee // la course est finie if (pLievre >= lCourse) return 1; // Si la tortue depasse la ligne d'arrivee // la course est finie if (pTortue >= lCourse) return 1; // Si aucune des deux conditions precedente // n'a permis de dire que la course est finie, // alors la course n'est pas finie return 0; } // Fonction permettant de deplacer la tortue int DeplacerTortue(int position) { int aleat; // Sert au tirage aleatoire du deplacement // On tire aleatoirement entre 1 et 10 aleat = (rand() % (10 - 1 + 1)) + 1; printf("Tortue : "); if (aleat <= 5 ) { printf("un pas rapide \n"); position = position+3; } if (aleat >= 6 && aleat <=7) { printf("une glissade \n"); position = position - 6; if(position <1) position =1; } if (aleat >=8) { printf("un pas lent \n"); position = position + 1; } return position; } int DeplacerLievre(int position) { int aleat; // Sert au tirage aleatoire du deplacement // On tire aleatoirement entre 1 et 10 aleat = (rand() % (10 - 1 + 1)) + 1; printf("Lievre : "); if (aleat <= 2 ) { printf("il dort \n"); position = position; // Il dort } if (aleat >= 3 && aleat <=4) { printf("grand saut \n"); position = position + 9; // grand saut } if (aleat >= 5 && aleat <=7) { printf("petit saut \n"); position = position + 1; // Petit saut } if (aleat == 8 ) { printf("grande glissade \n"); position = position - 9; // grande glissade if (position <1) position = 1; } if (aleat > 8) { printf("petite glissade \n"); position = position - 2; // Petite glissade if (position <1) position = 1; } return position; } // Fonction qui affiche l'etat de la course void AfficherPlateau(int pTortue,int pLievre,int lCourse) { printf("Position Tortue : %d \n",pTortue); printf("Position Lievre : %d \n",pLievre); printf("-------------------------------------- \n\n"); } /*-------------------------------------- * Programme Principal * ------------------------------------- */ int main(void) { int positionTortue=1; int positionLievre=1; int longueurCourse =70; // Pour tirer des nombres aleatoires differents, // on doit faire une petite manip avant tout tirage InitialiserAleatoire(); // Affichage de debut de course printf("Depart \n"); AfficherPlateau(positionTortue,positionLievre,longueurCourse); // On attends que l'utilisateur appuie sur la touche enter; getchar(); // La course continue tant qu'aucun des deux n'est arrivé a la fin while (courseFinie(positionLievre, positionTortue, longueurCourse) == 0 ) { // On deplace la tortue; positionTortue = DeplacerTortue(positionTortue); // On deplace le lievre; positionLievre = DeplacerLievre(positionLievre); // On affiche le plateau; AfficherPlateau(positionTortue,positionLievre,longueurCourse); // On attends que l'utilisateur appuie sur la touche enter; getchar(); } // Ici, la course est forcement finie // Ce qui suit sert a determiner qui est vainqueur if (positionTortue>=longueurCourse) { if(positionLievre>=longueurCourse) printf("Egalite ! \n"); else printf("Vainqueur : la tortue ! \n"); } else printf("Vainqueur : le lievre ! \n"); // Disons pour simplifier // qu'il faut toujours mettre ceci a la fin du main return 0; }