Un jeu de cartes à piper les une dans les autres - retour accueil
git clone git://bebou.netlib.re/pipe-game
Log | Files | Refs | README |
commit e6ff1df44c0562ab2ac2fd38124c716505ddf2c5 parent a37e2604549badd343bc014f9b872422579909ef Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Wed, 22 Jan 2025 16:46:02 +0100 On peut retirer un vrai arg correctement Avant retirer un vrai arg ne le remplaçait pas par un arg none, maintenant oui. Aussi j'ai corrigé le truc où la logique paraissait inversée, c'est parce que comparer des chaînes de cara correctement requiert strcmp Diffstat:
M | interface.c | | | 22 | ++++++++++++++-------- |
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/interface.c b/interface.c @@ -49,27 +49,33 @@ pile createpile(char *name) { } bool addcardtopile(char* cardname, pile* p, pile **piles) { - if(p-> name=="played") { - addcardtopile("none",piles[PLAYEDARGS],piles); - } /*On quitte si l'argument est vide ou s'il contient un espace*/ /* strchr ne fonctionne pas avec utf-8 mais pour le moment rien * ne fonctionne en utf8 alors bon */ if(cardname[0]=='\0' || strchr(cardname,' ')!=NULL){return false;} - p->cards[p->cardCount] = malloc(CARD_NAME_SIZE); - strcpy(p->cards[p->cardCount], cardname); - p->cardCount++; + if(p->name=="played") { + addcardtopile("none",piles[PLAYEDARGS],piles); + } + if(p->name=="playedargs" && cardname!="none") { + strcpy(p->cards[p->cardCount-1], cardname); + } else { + p->cards[p->cardCount] = malloc(CARD_NAME_SIZE); + strcpy(p->cards[p->cardCount], cardname); + p->cardCount++; + } p->curline=p->cardCount-1; return true; } void removecardofpile(int cardposition, pile* p, pile **piles) { if(p->name=="played") { - /* fonctionne mais ça devrait être l'inverse ???? */ - if(piles[PLAYEDARGS]->cards[cardposition]=="none") { + if(strcmp(piles[PLAYEDARGS]->cards[cardposition],"none")!=0) { addcardtopile(piles[PLAYEDARGS]->cards[cardposition],piles[ARGS],piles); } removecardofpile(cardposition,piles[PLAYEDARGS],piles); + } else if(p->name=="playedargs" && strcmp(p->cards[cardposition],"none")!=0) { + p->cards[cardposition]="none"; + return; } p->cardCount--; for(int i=cardposition;i<p->cardCount;i++)