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 cd90e2c0b99b916991ebbb6d17b824a71b401193
parent ec6a063ab9a7ab428589d938d30bb3f64c6f67f6
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Wed, 29 Jan 2025 22:11:22 +0100

Ménage divers

On ne vérifie plus quelle est la pile courante avec des strcmp sauvages,
c'est super

Diffstat:
Minterface.c | 80++++++++++++++++++++++++++++++++++++++-----------------------------------------
1 file changed, 38 insertions(+), 42 deletions(-)

diff --git a/interface.c b/interface.c @@ -18,7 +18,7 @@ typedef struct { struct pile { char *name; - int cardCount; + int cardcount; char **cards; int curline; coord begin; @@ -57,7 +57,7 @@ void vr(int coloffset, int lineoffset, int length) { struct pile createpile(char *name) { struct pile p; p.cards=malloc(LIST_SIZE); - p.name=name;p.cardCount=0; p.curline=0; + p.name=name;p.cardcount=0; p.curline=0; return p; } @@ -71,34 +71,35 @@ bool addcardtopile(char* cardname, struct pile* p, struct pile **piles) { /* 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; - if(strcmp(p->name,"played")==0) addcardtopile("none",piles[PLAYEDARGS],piles); - if(strcmp(p->name,"playedennemy")==0) addcardtopile("none",piles[PLAYEDENNEMYARGS],piles); - if( ( strcmp(p->name,"playedargs")==0 || strcmp(p->name,"playedennemyargs")==0 ) && strcmp(cardname,"none")!=0) - p->cards[p->cardCount-1]=cardname; + if(p==piles[PLAYED]) addcardtopile("none",piles[PLAYEDARGS],piles); + if(p==piles[PLAYEDENNEMY]) addcardtopile("none",piles[PLAYEDENNEMYARGS],piles); + if( ( p==piles[PLAYEDARGS] || p==piles[PLAYEDENNEMYARGS] ) && strcmp(cardname,"none")!=0) + p->cards[p->cardcount-1]=cardname; else { - p->cards[p->cardCount] = malloc(CARD_NAME_SIZE); - strcpy(p->cards[p->cardCount], cardname); - p->cardCount++; + p->cards[p->cardcount] = malloc(CARD_NAME_SIZE); + strcpy(p->cards[p->cardcount], cardname); + p->cardcount++; } - p->curline=p->cardCount-1; + p->curline=p->cardcount-1; return true; } void removecardofpile(int cardposition, struct pile* p, struct pile **piles) { - if(strcmp(p->name,"played")==0) { + if(p==piles[PLAYED]) { if(strcmp(piles[PLAYEDARGS]->cards[cardposition],"none")!=0) addcardtopile(piles[PLAYEDARGS]->cards[cardposition],piles[ARGS],piles); removecardofpile(cardposition,piles[PLAYEDARGS],piles); - } else if (strcmp(p->name,"playedennemy")==0) { + } else if (p==piles[PLAYEDENNEMY]) { if(strcmp(piles[PLAYEDENNEMYARGS]->cards[cardposition],"none")!=0) addcardtopile(piles[PLAYEDENNEMYARGS]->cards[cardposition],piles[ARGS],piles); removecardofpile(cardposition,piles[PLAYEDENNEMYARGS],piles); - } else if( ( strcmp(p->name,"playedargs")==0 || strcmp(p->name,"playedennemyargs")==0) && strcmp(p->cards[cardposition],"none")!=0) { + } else if( ( p==piles[PLAYEDARGS] || p==piles[PLAYEDENNEMYARGS] ) \ + && strcmp(p->cards[cardposition],"none")!=0) { p->cards[cardposition]="none"; return; } - p->cardCount--; - for(int i=cardposition;i<p->cardCount;i++) + p->cardcount--; + for(int i=cardposition;i<p->cardcount;i++) p->cards[i]=p->cards[i+1]; if (p->curline>0) p->curline--; @@ -106,7 +107,7 @@ void removecardofpile(int cardposition, struct pile* p, struct pile **piles) { struct pile* mvcardup(struct pile* p, struct pile** piles, int direction, bool selection) { int step = direction==UP ? -1 : 1 ; - if (p->curline+step >= 0 && p->curline+step < p->cardCount) { + if (p->curline+step >= 0 && p->curline+step < p->cardcount) { if (selection) { char* tmp; tmp=p->cards[p->curline]; @@ -116,38 +117,34 @@ struct pile* mvcardup(struct pile* p, struct pile** piles, int direction, bool s p->curline=p->curline+step; return p; } - if (strcmp(p->name,"hand")==0 && direction==DOWN && piles[ARGS]->cardCount>0) + if (p==piles[HAND] && direction==DOWN && piles[ARGS]->cardcount>0) return piles[ARGS]; - else if (strcmp(p->name,"args")==0 && direction==UP && piles[HAND]->cardCount>0) + else if (p==piles[ARGS] && direction==UP && piles[HAND]->cardcount>0) return piles[HAND]; return p; } -struct pile* mvcardlr(struct pile* p, struct pile** piles, bool* selection, int direction) { +struct pile* mvcardlr(struct pile* p, struct pile** piles, bool selection, int direction) { struct pile *newcurmenu=p; - if(direction==LEFT) { - newcurmenu=p->destleft; - } else { - newcurmenu=p->destright; - } - if(*selection) { + newcurmenu = direction==LEFT ? p->destleft : p->destright; + if(selection) { addcardtopile(p->cards[p->curline],newcurmenu,piles); removecardofpile(p->curline,p,piles); - } else if ( newcurmenu->cardCount==0 ) { + } else if ( newcurmenu->cardcount==0 ) { newcurmenu=p; } return newcurmenu; } void updatecmd(char* cmd, struct pile p, struct pile parg) { - if (p.cardCount == 0 ) return; + if (p.cardcount == 0 ) return; strcat(cmd,"( cat ./"); strcat(cmd,p.cards[0]); if(strcmp(parg.cards[0],"none")!=0) { strcat(cmd," "); strcat(cmd,parg.cards[0]); } - for (int i=1;i<p.cardCount;i++) { + for (int i=1;i<p.cardcount;i++) { strcat(cmd," | \n./"); strcat(cmd,p.cards[i]); if(strcmp(parg.cards[i],"none")!=0) { @@ -159,9 +156,9 @@ void updatecmd(char* cmd, struct pile p, struct pile parg) { } void updateinterncmd(char *res, const struct pile p) { - if (p.cardCount == 0 ) + if (p.cardcount == 0 ) return; - for(int i=0;i<p.cardCount;i++) { + for(int i=0;i<p.cardcount;i++) { FILE *fp = fopen(p.cards[i], "r"); char line[CMD_LINE_SIZE];line[0]='\0'; while(fgets(line, sizeof(line), fp)) @@ -196,18 +193,18 @@ coord displaybox(int coloffset, int lineoffset, int width, int length) { tb_print(coloffset+width,lineoffset,TB_DEFAULT,TB_DEFAULT,"+"); tb_print(coloffset,lineoffset+length,TB_DEFAULT,TB_DEFAULT,"+"); tb_print(coloffset+width,lineoffset+length,TB_DEFAULT,TB_DEFAULT,"+"); - coord p;p.x=coloffset+width;p.y=lineoffset+length; + coord p; p.x=coloffset+width; p.y=lineoffset+length; return p; } coord displaypile(struct pile *p, struct pile curmenu, int coloffset, int lineoffset, bool selection) { int newlineoffset=lineoffset; - int maxwidth=CARD_NAME_SIZE+2; int maxlen=p->cardCount+1; + int maxwidth=CARD_NAME_SIZE+2; int maxlen=p->cardcount+1; coord begin; begin.x=coloffset; begin.y=lineoffset; coord end=displaybox(begin.x,begin.y,maxwidth,maxlen); p->begin=begin; p->end=end; - coloffset++;lineoffset++; - for (int i=0;i<p->cardCount;i++) { + coloffset++; lineoffset++; + for (int i=0;i<p->cardcount;i++) { char *name = strcmp(p->cards[i],"none")==0 ? " " : p->cards[i] ; if (i==p->curline && p->name == curmenu.name ) { int background = selection ? TB_BLUE : TB_WHITE ; @@ -221,18 +218,17 @@ coord displaypile(struct pile *p, struct pile curmenu, int coloffset, int lineof } coord displaytextblock(char *text, int coloffset, int lineoffset) { - coord p; - int nbl=nblines(text), w=30; - p.y=nbl+lineoffset;p.x=w+coloffset; + coord p; int nbl=nblines(text), w=30; + p.y=nbl+lineoffset; p.x=w+coloffset; displaybox(coloffset,lineoffset,w,nbl); - coloffset++;lineoffset++; + coloffset++; lineoffset++; tb_printf(coloffset, lineoffset, TB_DEFAULT, TB_DEFAULT, text); return p; } int debug(int l, struct pile curmenu,struct tb_event ev) { tb_printf(0,l++,TB_DEFAULT,TB_DEFAULT,curmenu.name); - char str[100];sprintf(str,"%d",curmenu.cardCount); + char str[100];sprintf(str,"%d",curmenu.cardcount); tb_printf(0,l++,TB_DEFAULT,TB_DEFAULT,str); char str2[100]; sprintf(str2,"%d",curmenu.curline); @@ -364,7 +360,7 @@ int main(int argc, char **argv) { token=strtok(NULL,"\n"); } if(created) { - for(int i=0;i<=played.cardCount;i++) + for(int i=0;i<=played.cardcount;i++) removecardofpile(i,&played,piles); curmenu=&hand; } @@ -393,9 +389,9 @@ int main(int argc, char **argv) { else if (ev.y<prevpos.y) curmenu=mvcardup(curmenu,piles,UP,selection); } else { - if(piles[i]->cardCount>0) { curmenu=piles[i]; } + if(piles[i]->cardcount>0) { curmenu=piles[i]; } if(curmenu==piles[HAND] && piles[ARGS]->begin.y < ev.y && ev.y < piles[ARGS]->end.y ) { curmenu=piles[ARGS]; } - curmenu->curline = curmenu==piles[ARGS] ? ev.y-1-piles[HAND]->end.y : min(ev.y-1,curmenu->cardCount-1); + curmenu->curline = curmenu==piles[ARGS] ? ev.y-1-piles[HAND]->end.y : min(ev.y-1,curmenu->cardcount-1); selection=false; } break;