Joker

Fermé
lebouscat33 Messages postés 3 Date d'inscription lundi 25 mars 2013 Statut Membre Dernière intervention 9 avril 2013 - 9 avril 2013 à 12:01
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 - 10 avril 2013 à 10:51
Bonjour,

je cherche en recrée le jeu Rummikub en langage C. Si vous ne connaissez pas les règles regardez sur internet. Voici ma question:
Comment gérer le joker dans la vérification si la série rentrée par l'utilisateur est correcte?
Voila la fonction gérant la conformité ainsi que celle du remplissage de la structure modele.

bool conforme(char *valeursaisie)
{
int i;
for (i=0;i<128;i++)
{
if (strstr(modele[i].chaine,valeursaisie) != NULL )
{
return true; // la chaine a été trouvé la suite est valide
}
return false; // la suite n'est pas valide
}
}

void remplissage_modele()
{
int i,index_model=0;

//ensemble des suites
strcpy(modele[index_model].chaine,"1R:2R:3R:4R:5R:6R:7R:8R:9R:10R:11R:12R:13R"); //pour les suites en rouges
index_model++;
strcpy(modele[index_model].chaine,"1B:2B:3B:4B:5B:6B:7B:8B:9B:10B:11B:12B:13B"); //pour les suites en bleu
index_model++;
strcpy(modele[index_model].chaine,"1J:2J:3J:4J:5J:6J:7J:8J:9J:10J:11J:12J:13J"); //pour les suites en jaunes
index_model++;
strcpy(modele[index_model].chaine,"1V:2V:3V:4V:5V:6V:7V:8V:9J:10V:11V:12V:13J");// pour les suites en vert
index_model++;

//Ensemble des carrés et des brelans
for (i=1;i<=13;i++)
{
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'R',i,'M',i,'C',i,'J');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'R',i,'M',i,'J',i,'C');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'R',i,'C',i,'J',i,'M');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'R',i,'C',i,'M',i,'J');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'R',i,'J',i,'M',i,'C');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'R',i,'J',i,'C',i,'M');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'J',i,'M',i,'R',i,'C');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'J',i,'M',i,'C',i,'R');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'J',i,'C',i,'M',i,'R');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'J',i,'C',i,'R',i,'M');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'J',i,'R',i,'M',i,'C');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'J',i,'R',i,'C',i,'M');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'M',i,'R',i,'J',i,'C');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'M',i,'R',i,'C',i,'J');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'M',i,'C',i,'R',i,'J');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'M',i,'C',i,'J',i,'R');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'M',i,'J',i,'R',i,'C');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'M',i,'J',i,'C',i,'R');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'C',i,'R',i,'J',i,'M');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'C',i,'R',i,'M',i,'J');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'C',i,'M',i,'J',i,'R');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'C',i,'M',i,'R',i,'J');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'C',i,'J',i,'R',i,'M');
index_model++;
sprintf(modele[index_model].chaine ,"%d%c%d%c%d%c",i,'C',i,'J',i,'M',i,'R');
index_model++;

}
}

Merci d'avance


2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
9 avril 2013 à 19:27
Dans ce cas n'utilise pas strstr () mais fais-toi une fonction de comparaison.
Lorsque tu as le ? tu passes au caractère suivant.
0
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 089
Modifié par [Dal] le 10/04/2013 à 10:51
Salut lebouscat33,

C'est intéressant, je ne connaissais pas ce jeu... c'est apparemment une adaptation du rami avec des jetons (il appellent cela des "tuiles").

Selon ma compréhension, un joker peut terminer une série, commencer une série, ou être inséré entre deux "tuiles". De plus, il peut être substitué par un joueur par la "tuile" qu'il représente.

Je pense que quand un joker est présenté, tu dois déterminer si, dans la position dans lequel il se trouve, il peut correspondre à une valeur légale, et si oui, quelle est cette valeur, et garder cela en mémoire pour pouvoir vérifier les éventuelles "tuiles" qui suivent, et aussi vérifier si une substitution de "tuile" est acceptable.

Je ne pense pas que la façon dont tu organises les données te donne suffisamment de flexibilité pour programmer les règles du jeu.

Il faut que tu puisses, sur la base d'une "tuile" posée, déterminer le contexte de "tuiles" à prendre en compte. Cette fonction sera utile, que la "tuile" posée soit un joker ou pas.


Dal
0