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 8d3e7472bc5464575df3c334297752264d400183 parent 3d2c130294c5771319123cdddc93bac7a191074e Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Tue, 28 Jan 2025 23:10:03 +0100 Les coordonnées pour les boites de texte Aussi, compter le nombre de lignes qui vont s'afficher dans les boites de texte en comptant les retour à la ligne ça marche pas quand il n'y a pas une ligne vide à la fin du fichier source J'ai donc ajouté une ligne vide dans les fichiers sources C'est un peu gênant si on veut permettre le modage facile En même temps c'est comme ça que fonctionne wc !! $ printf "azdazd\nazdad" | wc -l 1 Diffstat:
M | cards/sources/all-in | | | 1 | + |
M | cards/sources/defend | | | 1 | + |
M | cards/sources/strike | | | 1 | + |
M | interface.c | | | 47 | +++++++++++++++++++++++------------------------ |
4 files changed, 26 insertions(+), 24 deletions(-)
diff --git a/cards/sources/all-in b/cards/sources/all-in @@ -1,2 +1,3 @@ attack 20 health -10 + diff --git a/cards/sources/defend b/cards/sources/defend @@ -1 +1,2 @@ defend 5 + diff --git a/cards/sources/strike b/cards/sources/strike @@ -1 +1,2 @@ attack 6 + diff --git a/interface.c b/interface.c @@ -158,7 +158,7 @@ void file2pile(FILE* fp, pile *p, pile **piles) { p->curline=0; } -void displaybox(int coloffset, int lineoffset, int width, int length) { +coord displaybox(int coloffset, int lineoffset, int width, int length) { length<2 ? length=2 : length; hr(coloffset+1,lineoffset,width-1); hr(coloffset+1,lineoffset+length,width-1); @@ -168,14 +168,14 @@ void 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; + return p; } coord displaypile(pile p, pile curmenu, int coloffset, int lineoffset, bool selection) { int newlineoffset=lineoffset; int maxwidth=CARD_NAME_SIZE+2; int maxlen=p.cardCount+1; - displaybox(coloffset,lineoffset,maxwidth,maxlen); - coord point; - point.x=coloffset+maxwidth; point.y=lineoffset+maxlen; + coord point=displaybox(coloffset,lineoffset,maxwidth,maxlen); coloffset++;lineoffset++; for (int i=0;i<p.cardCount;i++) { char *name = strcmp(p.cards[i],"none")==0 ? " " : p.cards[i] ; @@ -190,12 +190,14 @@ coord displaypile(pile p, pile curmenu, int coloffset, int lineoffset, bool sele return point; } -int displaytextblock(char *text, int coloffset, int lineoffset) { - int nbl=nblines(text); - displaybox(coloffset,lineoffset,20,nbl+1); +coord displaytextblock(char *text, int coloffset, int lineoffset) { + coord p; + int nbl=nblines(text), w=30; + p.y=nbl+lineoffset;p.x=w+coloffset; + displaybox(coloffset,lineoffset,w,nbl); coloffset++;lineoffset++; tb_printf(coloffset, lineoffset, TB_DEFAULT, TB_DEFAULT, text); - return nbl+lineoffset+1; + return p; } int debug(int l, pile curmenu,struct tb_event ev) { @@ -216,29 +218,26 @@ int display(pile** piles, pile curmenu, bool selection, char* cmd, char* res, ch p=displaypile(*piles[PLAYEDARGS], curmenu, 0, 0, selection); coord p2=displaypile(*piles[PLAYED], curmenu, p.x, 0, selection); - p=displaypile(*piles[HAND], curmenu, p2.x, 0, selection); - p=displaypile(*piles[ARGS], curmenu, p2.x, p.y, selection); + coord p3=displaypile(*piles[HAND], curmenu, p2.x, 0, selection); + p=displaypile(*piles[ARGS], curmenu, p2.x, p3.y, selection); p=displaypile(*piles[PLAYEDENNEMY], curmenu, p.x, 0, selection); - displaypile(*piles[PLAYEDENNEMYARGS], curmenu, p.x, 0, selection); + p=displaypile(*piles[PLAYEDENNEMYARGS], curmenu, p.x, 0, selection); - int lineoffset1=0; - lineoffset1=displaytextblock(res,0,30); - lineoffset1=displaytextblock(intern,0,lineoffset1); - lineoffset1=displaytextblock(cmd,0,lineoffset1); + p=displaytextblock(res,0,20); + p=displaytextblock(intern,0,p.y); + p=displaytextblock(cmd,0,p.y); - int lineoffset2=displaytextblock(resennemy,CARD_NAME_SIZE*3+2,30); - lineoffset2=displaytextblock(internennemy,CARD_NAME_SIZE*3+2,lineoffset2); - lineoffset2=displaytextblock(cmdennemy,CARD_NAME_SIZE*3+2,lineoffset2); + coord p4=displaytextblock(resennemy,p3.x,20); + p=displaytextblock(internennemy,p3.x,p4.y); + p=displaytextblock(cmdennemy,p3.x,p.y); - int lo=displaytextblock("\ + displaytextblock("\ * enter to select card\n\ * arrows to move selection\n\ * m to create arg (if no whitespace)\n\ -* e to end turn and output res\n",0,40); - - lo=hr(0,lo,CARD_NAME_SIZE*5); +* e to end turn and output res\n",0,50); - return lo; + return p.y; } @@ -283,7 +282,7 @@ int main(int argc, char **argv) { updateinterncmd(internennemy, playedennemy); int l=display(piles,*curmenu,selection,cmd,res,intern,cmdennemy,resennemy,internennemy); - debug(l,*curmenu,ev); + debug(60,*curmenu,ev); tb_present(); tb_poll_event(&ev); switch(ev.type) {