pipe-game

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:
Minterface.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++)