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 58372ec8a24bdc7013ae970621b5eaebea86ae38
parent 96711cce69a0e4529bd7e9a887acd39c05990eea
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Wed, 22 Jan 2025 22:32:38 +0100

Début du support souris !!!

Olalala cet énorme switch ça va pas
Il me faut du fold

Diffstat:
Minterface.c | 155++++++++++++++++++++++++++++++++++++++++++-------------------------------------
1 file changed, 82 insertions(+), 73 deletions(-)

diff --git a/interface.c b/interface.c @@ -172,13 +172,15 @@ int displaytextblock(char *text, int rowoffset, int lineoffset) { return nbl+1; } -void debug(pile curmenu) { +void debug(pile curmenu,struct tb_event ev) { tb_printf(0,30,TB_DEFAULT,TB_DEFAULT,curmenu.name); char str[100];sprintf(str,"%d",curmenu.cardCount); tb_printf(0,31,TB_DEFAULT,TB_DEFAULT,str); char str2[100]; sprintf(str2,"%d",curmenu.curline); tb_printf(0,32,TB_DEFAULT,TB_DEFAULT,str2); + tb_printf(0,33,TB_DEFAULT,TB_DEFAULT,"touche %d, char %d, x %d, y %d\n",ev.key,ev.ch,ev.x,ev.y); + tb_printf(0,34,TB_DEFAULT,TB_DEFAULT,"type %d",ev.type); } void display(pile** piles, pile curmenu, bool selection, char* cmd, char* res, char* intern) { @@ -200,14 +202,13 @@ void display(pile** piles, pile curmenu, bool selection, char* cmd, char* res, c lineoffset=displaytextblock(intern,0,lineoffset); lineoffset=displaytextblock(cmd,0,lineoffset); - debug(curmenu); - - tb_present(); return; } int main(int argc, char **argv) { + tb_init(); + tb_set_input_mode(TB_INPUT_ESC | TB_INPUT_MOUSE); struct tb_event ev; char res[LIST_SIZE]; @@ -230,89 +231,97 @@ int main(int argc, char **argv) { bool quit=false; pile *curmenu=&hand; - tb_init(); - while(!quit) { cmd[0]='\0';res[0]='\0';intern[0]='\0'; updatecmd(cmd, piles); updateres(res, cmd, fp2); updateinterncmd(intern, played); display(piles,*curmenu,selection,cmd,res,intern); + debug(*curmenu,ev); + tb_present(); tb_poll_event(&ev); - switch(ev.key) { - /* up */ - case 65517: - curmenu=moveselection(curmenu,piles,"up",selection); - break; - /* down */ - case 65516: - curmenu=moveselection(curmenu,piles,"down",selection); - break; - /* <- */ - case 65515: - if (curmenu->name=="played") { - if (selection) { - addcardtopile(played.cards[played.curline],&hand,piles); - removecardofpile(played.curline,&played,piles); - selection=!selection; - } - if (piles[HAND]->cardCount > 0){ curmenu=&hand; } - } else if (curmenu->name=="playedargs") { - if (selection && strcmp(curmenu->cards[curmenu->curline],"none")!=0) { - addcardtopile(playedargs.cards[playedargs.curline],&args,piles); - removecardofpile(playedargs.curline,&playedargs,piles); - selection=!selection; - curmenu=&args; - } - if (piles[ARGS]->cardCount > 0){ curmenu=&args; } - else if (piles[HAND]->cardCount > 0){ curmenu=&hand; } - } - break; - /* -> */ - case 65514: - if (curmenu->name=="hand") { - if (selection) { - addcardtopile(hand.cards[hand.curline],&played,piles); - removecardofpile(hand.curline,&hand,piles); - } - if (piles[PLAYED]->cardCount > 0){ curmenu=&played; } - } else if (curmenu->name=="args") { - if (selection) { - addcardtopile(args.cards[args.curline],&playedargs,piles); - removecardofpile(args.curline,&args,piles); - } - if (piles[PLAYEDARGS]->cardCount > 0){ curmenu=&playedargs; } - } else if (curmenu->name=="played" && piles[PLAYEDARGS]->cardCount > 0) { - curmenu=&playedargs; - } - break; - case 13: - selection=!selection; - break; - case 0: - switch(ev.ch) { - case 113: - quit=true; + switch(ev.type) { + case 1: + switch(ev.key) { + /* up */ + case 65517: + curmenu=moveselection(curmenu,piles,"up",selection); break; - case 109: - bool created=false; - char *token=strtok(res,"\n"); - while(token != NULL) { - if(addcardtopile(token,&args,piles)>0) created=true; - token=strtok(NULL,"\n"); + /* down */ + case 65516: + curmenu=moveselection(curmenu,piles,"down",selection); + break; + /* <- */ + case 65515: + if (curmenu->name=="played") { + if (selection) { + addcardtopile(played.cards[played.curline],&hand,piles); + removecardofpile(played.curline,&played,piles); + selection=!selection; } - if(created) { - for(int i=0;i<=played.cardCount;i++) - removecardofpile(i,&played,piles); - curmenu=&hand; + if (piles[HAND]->cardCount > 0){ curmenu=&hand; } + } else if (curmenu->name=="playedargs") { + if (selection && strcmp(curmenu->cards[curmenu->curline],"none")!=0) { + addcardtopile(playedargs.cards[playedargs.curline],&args,piles); + removecardofpile(playedargs.curline,&playedargs,piles); + selection=!selection; + curmenu=&args; } + if (piles[ARGS]->cardCount > 0){ curmenu=&args; } + else if (piles[HAND]->cardCount > 0){ curmenu=&hand; } + } break; + /* -> */ + case 65514: + if (curmenu->name=="hand") { + if (selection) { + addcardtopile(hand.cards[hand.curline],&played,piles); + removecardofpile(hand.curline,&hand,piles); + } + if (piles[PLAYED]->cardCount > 0){ curmenu=&played; } + } else if (curmenu->name=="args") { + if (selection) { + addcardtopile(args.cards[args.curline],&playedargs,piles); + removecardofpile(args.curline,&args,piles); + } + if (piles[PLAYEDARGS]->cardCount > 0){ curmenu=&playedargs; } + } else if (curmenu->name=="played" && piles[PLAYEDARGS]->cardCount > 0) { + curmenu=&playedargs; + } + break; + case 13: + selection=!selection; + break; + case 0: + switch(ev.ch) { + case 113: + quit=true; + break; + case 109: + bool created=false; + char *token=strtok(res,"\n"); + while(token != NULL) { + if(addcardtopile(token,&args,piles)>0) created=true; + token=strtok(NULL,"\n"); + } + if(created) { + for(int i=0;i<=played.cardCount;i++) + removecardofpile(i,&played,piles); + curmenu=&hand; + } + break; + default: + break; + } default: break; - } - default: + } + break; + case 3: + curmenu=&hand; + curmenu->curline=ev.y; break; - } + } } tb_shutdown();