Jeu de carte BATAILLE problème d'affectation de valeur
Résolu
samux22
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
samux22 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
samux22 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde !
J'ai commencé à apprendre le C il y a environs 6 mois, et j'en suis rendu à l'envie de recréer ce jeu.
Voici donc l'intérieur du problème: ceci est un aperçu de mon tableau qui contient 32 cartes au total:
tableau[1]="As de coeur",14;
tableau[2]="Roi de coeur",13;
tableau[3]="Dame de coeur",12;
tableau[4]="Valet de coeur",11;
tableau[5]="10 de coeur",10;
tableau[6]="9 de coeur",9;
tableau[7]="8 de coeur",8;
tableau[8]="7 de coeur",7;
Je n'arrive pas à faire accéder mon programme à la valeur numérique qui correspond à chaque carte. Par exemple, si je tire l'As de Coeur, j'aimerais que mon programme stocke dans une variable la valeur 14, pour pouvoir la comparée ensuite avec la carte ennemis ensuite tirée, et me renvoyer la carte gagnante.
Je ne suis pas certain que la structure de mon tableau soit la bonne, toutefois. Si vous avez des idées sur la manière dont je devrais m'y prendre, elle serait les bienvenus !
Merci beaucoup à ceux qui se plancheront sur mon problème !
Samux22
J'ai commencé à apprendre le C il y a environs 6 mois, et j'en suis rendu à l'envie de recréer ce jeu.
Voici donc l'intérieur du problème: ceci est un aperçu de mon tableau qui contient 32 cartes au total:
tableau[1]="As de coeur",14;
tableau[2]="Roi de coeur",13;
tableau[3]="Dame de coeur",12;
tableau[4]="Valet de coeur",11;
tableau[5]="10 de coeur",10;
tableau[6]="9 de coeur",9;
tableau[7]="8 de coeur",8;
tableau[8]="7 de coeur",7;
Je n'arrive pas à faire accéder mon programme à la valeur numérique qui correspond à chaque carte. Par exemple, si je tire l'As de Coeur, j'aimerais que mon programme stocke dans une variable la valeur 14, pour pouvoir la comparée ensuite avec la carte ennemis ensuite tirée, et me renvoyer la carte gagnante.
Je ne suis pas certain que la structure de mon tableau soit la bonne, toutefois. Si vous avez des idées sur la manière dont je devrais m'y prendre, elle serait les bienvenus !
Merci beaucoup à ceux qui se plancheront sur mon problème !
Samux22
A voir également:
- Jeu de carte BATAILLE problème d'affectation de valeur
- Carte d'identité - Accueil - Services publics
- Pile carte mere - Guide
- Changer de carte graphique - Guide
- 94 jeu - Télécharger - Puzzle & Réflexion
- Jeux de moto: jeu de course 3d - Télécharger - Course
1 réponse
Après 6 mois d'apprentissage du C tu n'es pas capable de faire autre chose que des tableaux de chaînes de caractères !?
Il faudrait regarder les struct et les enum, c'est un minimum pour ce que tu veux faire...
Il faudrait regarder les struct et les enum, c'est un minimum pour ce que tu veux faire...
enum Couleur {PIQUE, COEUR, CARREAU, TREFLE}; enum Valeur {DEUX=2, TROIS=3, QUATRE=4, CINQ=5, SIX=6, SEPT=7, HUIT=8, NEUF=9, DIX=10, VALET=11, DAME=12, ROI=13, AS=14}; typedef struct struct_carte { Valeur valeur; Couleur couleur; } Carte; // Renvoie une valeur négative, nulle, ou positive si la valeur de carte1 est inférieure, égale ou supérieure à la valeur de carte2. int comparer(Carte carte1, Carte carte2) { return carte1.valeur-carte2.valeur; } int main() { Carte c1 = {AS,COEUR}; Carte c2 = {CINQ,PIQUE}; printf("%d",comparer(c1,c2)); }
J'ai écrit 6 mois mais je suis en term S, je n'est pas vraiment le temps, à part le week-end, ou pendant les vacances, de me pencher sur le C.
Pourriez-vous m'expliquer rapidement à quoi correspondent les lignes suivantes ? (quels sont les formats des variable Valeur valeur et couleur Couleur ? et à quoi sert le " Carte; " seul, au milieu du code ? )
typedef struct struct_carte
{
Valeur valeur;
Couleur couleur;
}
Carte;
Merci à vous !
ce sont des types enum déclarés dans les lignes juste au-dessus.
"à quoi sert le " Carte; " seul, au milieu du code ?"
Il n'est pas "seul", c'est la suite du typedef. On doit avoir : typedef untype nomdutype
Le paramètre "untype" c'est la structure : struct struct_carte { ... }
Le paramètre "nomdutype" c'est le "Carte" à la fin.
Il ne me reste plus qu'à réécrire mon programme dans le bon format :-) Comment ferai-je pour que l'ordinateur ne choisisse pas deux fois la même carte ?
(Pourriez-vous, si vous avez le temps, m'expliquer comment créer un programme qui affiche toutes les cartes dans un ordre au hasard, dans le système de structure ?)
Voici mon programme actuel; il mélange les cartes en simulant un mélange humain (c'est à dire que le paquet en séparé en trois, puis l'ordre des trois tas est inversé), puis il distribue en deux tas (en simulant une distribution humaine: une carte sur deux) :
int main()
{
printf("\n\n ---------------JEU DE LA BATAILLE---------------\n\n\n\n");
srand(time(NULL));
int tableau[100];
int l;
double k;
int carte2[100];
int player1[100];
int player2[100];
int i=0;
int j=0;
int n=200;
int K=0;
int p=0;
double m=0;
int compteur;
tableau[0]=0;
tableau[1]="As de coeur",14;
tableau[2]="Roi de coeur",13;
tableau[3]="Dame de coeur",12;
tableau[4]="Valet de coeur",11;
tableau[5]="10 de coeur",10;
tableau[6]="9 de coeur",9;
tableau[7]="8 de coeur",8;
tableau[8]="7 de coeur",7;
tableau[9]="As de carreau",14;
tableau[10]="Roi de carreau",13;
tableau[11]="Dame de carreau",12;
tableau[12]="Valet carreau",11;
tableau[13]="10 de carreau",10;
tableau[14]="9 de carreau",9;
tableau[15]="8 de carreau",8;
tableau[16]="7 de carreau",7;
tableau[17]="As de pique",14;
tableau[18]="Roi de pique",13;
tableau[19]="Dame de pique",12;
tableau[20]="Valet de pique",11;
tableau[21]="10 de pique",10;
tableau[22]="9 de pique",9;
tableau[23]="8 de pique",8;
tableau[24]="7 de pique",7;
tableau[25]="As de trefle",14;
tableau[26]="Roi de trefle",13;
tableau[27]="Dame de trefle",12;
tableau[28]="Valet de trefle",11;
tableau[29]="10 de trefle",10;
tableau[30]="9 de trefle",9;
tableau[31]="8 de trefle",8;
tableau[32]="7 de trefle",7;
for (p=1 ; p<=n ; p++) //melange des cartes
{
i=(rand()%(32-2+1))+2; //premier partage
j=(rand()%(i-1+1))+1; //deuxieme partage
for ( K=1 ; K<=i ; K++ )
{
carte2[K] = tableau[K]; //affiche les i premiere cartes dans tab2
}
for ( K=i+1 ; K<=32 ; K++ )
{
tableau[K-i] = tableau[K]; //affiche les derniere cartes de tab1 au debut
}
for ( K=1 ; K<=j ; K++ )
{
tableau[K+32-j] = carte2[K]; //affiche les premiere carte de tab2 a la fin de tab1
}
for ( K=j+1 ; K<=i ; K++ )
{
tableau[(K-j)+(32-i)] = carte2[K]; //range les carte du milieu
}
printf("\tMelange %d, i=%d, j=%d\n", p, i,j);
}
i=0;
l=0;
m=0;
K=0;
for (m=1;m<=32;m++) //distribue en deux tas (joueur1 et joueur2)
{
K++;
if (floor(m/2)==(m/2))
{i++;
player1[i]=tableau[K];
}
else
{l++;
player2[l]=tableau[K];
}
}
printf("\n -- Voici le tas 1 --\n\n"); //afficher tas du joueur 1
for (i=1;i<=16;i++)
{
printf("\t");printf(player1[i]);printf("\n");
}
printf("\n -- Voici le tas 2 --\n\n"); //afficher tas du joueur 2
for (i=1;i<=16;i++)
{
printf("\t");printf(player2[i]);printf("\n");
}
// tirage de carte
printf("\nJoueur 1 tire une carte : "); printf(player1[1]);
printf("\nJoueur 2 tire une carte : "); printf(player2[1]);
printf("\n\n\n");
return 0;
}