Une TUI pour jouer au go - retour accueil
git clone git://bebou.netlib.re/go-tui
Log | Files | Refs |
commit 66812dccb221e49c9c93497270073cf20ab3602b parent dd2c41cb39d310d903ec9f66f8e7c01b6fe9ea59 Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Tue, 15 Jul 2025 20:03:09 +0200 On peut passer la taille du plateau en argument Oui j'utilise atoi Diffstat:
M | gotui.c | | | 32 | ++++++++++++++++---------------- |
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/gotui.c b/gotui.c @@ -2,8 +2,6 @@ #include "termbox2.h" #include <stdbool.h> -#define BOARD_SIZE 9 - enum color { WHITE, BLACK }; struct stone { @@ -30,32 +28,32 @@ int spot_is_taken(struct stone* stone_list, int stone_count, int x, int y) { /*Display functions*/ -void print_line(int y) { +void print_line(int y, int size) { if (y==0) { tb_print(0,y,0,0,"┌"); - tb_print(BOARD_SIZE*2+1,y,0,0,"─┐"); - for (int i=0;i<BOARD_SIZE;i++) { + tb_print(size*2+1,y,0,0,"─┐"); + for (int i=0;i<size;i++) { tb_print(i*2+1,y,0,0,"─┬"); } - } else if (y>0 && y<BOARD_SIZE-1) { + } else if (y>0 && y<size-1) { tb_print(0,y,0,0,"├"); - tb_print(BOARD_SIZE*2+1,y,0,0,"─┤"); - for (int i=0;i<BOARD_SIZE;i++) { + tb_print(size*2+1,y,0,0,"─┤"); + for (int i=0;i<size;i++) { tb_print(i*2+1,y,0,0,"─┼"); } - } else if (y==BOARD_SIZE-1) { + } else if (y==size-1) { tb_print(0,y,0,0,"└"); - tb_print(BOARD_SIZE*2+1,y,0,0,"─┘"); - for (int i=0;i<BOARD_SIZE;i++) { + tb_print(size*2+1,y,0,0,"─┘"); + for (int i=0;i<size;i++) { tb_print(i*2+1,y,0,0,"─┴"); } } } -void display(struct stone* stone_list, int count, int color) { - for (int i=0;i<BOARD_SIZE;i++) - print_line(i); +void display(struct stone* stone_list, int count, int size) { + for (int i=0;i<size;i++) + print_line(i,size); for(int i=0;i<count;i++) { if(stone_list[i].color==BLACK) tb_printf(stone_list[i].x,stone_list[i].y,0,0,"○"); else tb_printf(stone_list[i].x,stone_list[i].y,0,0,"●"); @@ -63,6 +61,8 @@ void display(struct stone* stone_list, int count, int color) { } int main(int argc, char **argv) { + int size=9; + if (argc>1) { size=atoi(argv[1]); } int input=0; tb_init(); tb_hide_cursor(); @@ -74,7 +74,7 @@ int main(int argc, char **argv) { while(1) { tb_clear(); - display(stone_list,stone_count,color); + display(stone_list,stone_count,size); tb_present(); tb_poll_event(&ev); @@ -85,7 +85,7 @@ int main(int argc, char **argv) { int spot=-1; switch(input) { case 65512: /*MouseLeft*/ - if(ev.x<0 || ev.x>BOARD_SIZE*2+2 || ev.x <0 || ev.y>BOARD_SIZE-1 || ev.x%2) break; + if(ev.x<0 || ev.x>size*2+2 || ev.x <0 || ev.y>size-1 || ev.x%2) break; spot=spot_is_taken(stone_list,stone_count,ev.x,ev.y); if(spot!=-1) { for (int j=spot;j<stone_count;j++) stone_list[j]=stone_list[j+1];