All pastes #824623 Raw Edit

Stuff

public text v1 · immutable
·published 2007-12-20 02:12 UTC
rendered paste body
headers.h =>
#ifndef NIANIANIA
#define NIANIANIA

typedef struct Valeur Valeur;

struct Valeur {
	unsigned int tab[32];
	unsigned int valeur;
	char descriptif[6];
	int numero;
};

Valeur init (Valeur A);
int integrity (Valeur A);
Valeur reorganize (Valeur A, int state, int amplitude);
Valeur valeur_carte ( int i );
void error (int a);
int Bataille_1erepasse ( Valeur A );
int TirerCarte (Valeur A, int joueur);
Valeur Bataille_egalite (Valeur A);
#endif
==


#include <stdio.h>
#include <stdlib.h>
#include "headers.h"
#include <time.h>


/*struct Couleur {
	unsigned int Trefle,Carreau,Coeur,Pique;
};
struct Cartes {
	Couleur Roi,Dame,Valet,As,Dix,Neuf,Huit,Sept;
int integrity;
};*/

int main () {
	Valeur monJeu;
	Valeur A;
	A = init(monJeu);
	Bataille_1erepasse(A);
	return 0;
}

//void menu() {
//}

Valeur init(Valeur A) {
	int k;
	Valeur B;
	int integrite;
	for (k = 0; k < 32 ; k++ ) {
			A.tab[k] = ( rand() % 2) ;
	}
	integrite = integrity(A);
	if (integrite == 0) {
		 return A;
	}
	else {
		if (integrite > 0) {
			B = reorganize(A,1,integrite);
		}
		else 
		{
			B = reorganize(A,0,integrite);
		}
	}
	integrite = integrity(B);
	if (integrite == 0) {
		return B;
	}
	else {
		error(2);
	}
}



int integrity (Valeur A) {
	int i;
	unsigned int var1 = 0 ;
	unsigned int var2 = 0 ;
	for ( i = 0; i < 32; i++ ) {
		if (A.tab[i] == 1 ) {
			var2++;
		}
		else if (A.tab[i] == 0) {
			var1++;
		}
	}
	if ( (var2 || var1) > 16 ) {
		return var2-var1;
	}
	else {
		return 0;
	}
}

Valeur reorganize (Valeur A, int state, int amplitude) {
	int a;
	srand(time(NULL));
	switch(state)
	{
	case 0:
		do {
			a = (rand() % 32);
			if (A.tab[a] == 0) { 
				A.tab[a] = 1;
				amplitude++;
			}
		}
		while ( amplitude != 0 );
		return A;
		break;
	case 1:
		do {
			a = (rand() % 32);
			if (A.tab[a] == 1) { 
				A.tab[a] = 0;
				amplitude--;
			}
		}
		while ( amplitude != 0 );
		return A;
		break;
	default:
		error(1);
		break;
	}
}

Valeur valeur_carte ( int i ){
	Valeur A;
	A.numero = i;
	switch(A.tab[i])
	{
		case 0:;
		case 1:;
		case 2:;
		case 3:
			A.valeur = 13;
			sprintf(A.descriptif , "Roi");
			return A;
		case 4:;
		case 5:;
		case 6:;
		case 7:
			A.valeur = 12;
			sprintf(A.descriptif, "Dame");
			return A;
		case 8:;
		case 9:;
		case 10:;
		case 11: 
			A.valeur = 11;
			sprintf(A.descriptif,"Valet");
			return A;
		case 12:;
		case 13:;
		case 14:;
		case 15:
			A.valeur = 10;
			sprintf(A.descriptif , "Dix");
			return A;
		case 16:;
		case 17:;
		case 18:;
		case 19:
			A.valeur = 9;
			sprintf(A.descriptif, "Neuf");
			return A;
		case 20:;
		case 21:;
		case 22:;
		case 23:
			A.valeur = 8;
			sprintf(A.descriptif,"Huit");
			return A;
		case 24:;
		case 25:;
		case 26:;
		case 27:
			A.valeur = 7;
			sprintf(A.descriptif, "Sept");
			return A;
		case 28:;
		case 29:;
		case 30:;
		case 31:
			A.valeur = 1;
			sprintf(A.descriptif ,"As");
			return A;
		default:
			error(3);
	}
}
	/*A.Roi.Trefle = tab[0];
	A.Roi.Carreau = tab[1];
	A.Roi.Coeur = tab[2];
	A.Roi.Pique = tab[3];
	A.Dame.Trefle = tab[4];
	A.Dame.Carreau = tab[5];
	A.Dame.Coeur = tab[6];
	A.Dame.Pique = tab[7];
	A.Valet.Trefle = tab[8];
	A.Valet.Carreau = tab[9];
	A.Valet.Coeur = tab[10];
	A.Valet.Pique = tab[11];
	A.Dix.Trefle = tab[12];
	A.Dix.Carreau = tab[13];
	A.Dix.Coeur = tab[14];
	A.Dix.Pique = tab[15];
	A.Neuf.Trefle = tab[16];
	A.Neuf.Carreau = tab[17];
	A.Neuf.Coeur = tab[18];
	A.Neuf.Pique = tab[19];
	A.Huit.Trefle = tab[20];
	A.Huit.Carreau = tab[21];
	A.Huit.Coeur = tab[22];
	A.Huit.Pique = tab[23];
	A.Sept.Trefle = tab[24];
	A.Sept.Carreau = tab[25];
	A.Sept.Coeur = tab[26];
	A.Sept.Pique = tab[27];
	A.As.Trefle = tab[28];
	A.As.Carreau = tab[29];
	A.As.Coeur = tab[30];
	A.As.Pique = tab[31];
	*/


void error (int a) {
	switch(a) 
	{
	case 1:
		fprintf(stderr, "La fonction reorganize à rencontré une erreur innatendue, le programme va fermer.\n");
		exit(1);
	case 2:
		fprintf(stderr, "Erreur dans la distribution aléatoire des cartes, le programme va fermer.\n");
		exit(2);
	default: 
		exit(0);
	}
}

int Bataille_1erepasse ( Valeur A ) {
	Valeur B;
	Valeur Carte0 = valeur_carte(TirerCarte(A,0));
	Valeur Carte1 = valeur_carte(TirerCarte(A,1));
	if (Carte0.valeur > Carte1.valeur) {
		//Joueur 0 Gagne => Les Deux cartes sont mises en fin de paquet de joueur 0
		A.tab[Carte0.numero] = 2;
		A.tab[Carte1.numero] = 2;
	}
	else if  ( Carte0.valeur < Carte1.valeur) {
		//Joueur 1 Gagne => Les Deux cartes sont mises en fin de paquet de joueur 1
		A.tab[Carte0.numero] = 3;
		A.tab[Carte1.numero] = 3;
	}
	else {
		//Bataille => Tirage jusqu'à épuisement des paquets jusqu'à qu'un joueur gagne
		B = Bataille_egalite(A);
	}
}
Valeur Bataille_egalite (Valeur A) {
	return A;
}

int TirerCarte (Valeur A, int joueur) {
	int a;
	int ok = 0;
	srand(time(NULL));
	switch(joueur)
	{
	case 0:
		do {
			a = (rand() % 32);
			if (A.tab[a] == 0) { 
				ok = 1;
				return a;
			}
		}
		while ( ok != 1 );
		break;
	case 1:
		do {
			a = (rand() % 32);
			if (A.tab[a] == 1) { 
				ok = 1;
				return a;
			}
		}
		while ( ok != 1 );
		break;
	default:
		error(4);
		break;
	}
}