Exercice langage C corrigé les fonctions et les prototypes des fonctions

/* jeu des cailloux */

#include

/* initialisation de la partie, avec la saisie du nombre total de cailloux et
 * du joueur qui demarre la partie */
void initialiser(int *nbCa, int *jo);

/* le jeu proprement dit pour un des deux joueurs : choix du nombre de
 * cailloux */
void jeu(int jo, int *nbCa);

/* la machine joue */
void machine_joue(int *nbCa);

/* l'utilisateur joue, et saisit le nombre de cailloux */
void utilisateur_joue(int *nbCa);

/* changement de joueur dans *jo */
void changer_joueur (int *jo);

int main()
{
	int finJeu = 0;
	int nbCailloux , joueur, perdant;
	initialiser(&nbCailloux, &joueur);

	while ( !finJeu )
	{
		printf("\nil reste %d cailloux\n", nbCailloux);
		jeu (joueur, &nbCailloux);
		if (nbCailloux == 0)
		{
			perdant = joueur;
			finJeu = 1;
		}
		else
		{
			changer_joueur (&joueur);
		}
	}

	if (perdant == 1)
	{
		printf("dommage: tu as perdu\n");
	}
	else
	{
		printf("bravo: tu as gagne\n");
	}

	return 0;
}

void initialiser(int *nbCa, int *jo)
{
	int rep;
	printf("donnez le nombre de cailloux : "); scanf("%d", nbCa);
	printf("\nchoix du premier joueur :\n");
	printf("\tutilisateur.: 1\n");
	printf("\tmachine.....: 2\n");
	printf("qui ? ");
	scanf("%d", &rep);
	switch (rep)
	{
		case 1: *jo = 1;
			break;
		case 2: *jo = 2;
			break;
	}
}

void jeu(int jo, int *nbCa)
{
	if (jo == 2)
	{
		machine_joue(nbCa);
	}
	else
	{
		utilisateur_joue(nbCa);
	}
}

void machine_joue(int *nbCa)
{
	int cailloux_pris, modu;
	modu = *nbCa % 4;
	switch (modu)
	{
		case 0: cailloux_pris = 3;
			break;
		case 1: cailloux_pris = 1;
			break;
		case 2: cailloux_pris = 1;
			break;
		case 3: cailloux_pris = 2;
			break;
	}
	printf("j\'ai pris %d cailloux \n",cailloux_pris);
	*nbCa = *nbCa - cailloux_pris;
}

void utilisateur_joue(int *nbCa)
{
	int cailloux_pris;
	do
	{
		printf("combien de cailloux: ");
		scanf("%d", &cailloux_pris);
	}
	while ((cailloux_pris <= 0) || (cailloux_pris >= 4) ||
		(cailloux_pris > *nbCa));
	*nbCa = *nbCa - cailloux_pris;
}

void changer_joueur (int *jo)
{
	if (*jo == 2)
	{
		*jo = 1;
	}
	else
	{
		*jo = 2;
	}
}

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *