From b011990b5c497f09db12585e678cd4ac47c4e223 Mon Sep 17 00:00:00 2001 From: woosh <> Date: Wed, 15 Nov 2023 08:05:29 +0000 Subject: [PATCH] fixing input and curses board - still broken --- uttt.c | 55 ++++++++----------------------------------------------- 1 file changed, 8 insertions(+), 47 deletions(-) diff --git a/uttt.c b/uttt.c index f4d6574..e7dc3a1 100644 --- a/uttt.c +++ b/uttt.c @@ -183,17 +183,17 @@ void ut_drawBoard(void (*mvch)(void*, int, int, char), void *arg, const char *ti */ for(int r = 0; r < 3; r++) // tiles for(int c = 0; c < 3; c++) - mvch(arg, iy + 2 * r, ix + 2 * c, T(r, c) != '\0' ? T(r, c) : ' '); + mvch(arg, iy + 2 * r + 1, ix + 2 * c + 1, T(r, c) != '\0' ? T(r, c) : ' '); //char info = winner != '\0' ? winner : highlight ? '*' : ' '; for(int r = 0; r < 3; r++) // | for(int c = 0; c < 2; c++) - mvch(arg, iy + 2 * r, ix + 2 * c + 1, winner != '\0' ? winner : '|'); + mvch(arg, iy + 2 * r + 1, ix + 2 * c + 1 + 1, winner != '\0' ? winner : '|'); for(int r = 0; r < 2; r++) // - for(int c = 0; c < 3; c++) - mvch(arg, iy + 2 * r + 1, ix + 2 * c, winner != '\0' ? winner : '-'); + mvch(arg, iy + 2 * r + 1 + 1, ix + 2 * c + 1, winner != '\0' ? winner : '-'); for(int r = 0; r < 2; r++) // + for(int c = 0; c < 2; c++) - mvch(arg, iy + 2 * r + 1, ix + 2 * c + 1, winner != '\0' ? winner : highlight ? '*' : '+'); + mvch(arg, iy + 2 * r + 1 + 1, ix + 2 * c + 1 + 1, winner != '\0' ? winner : highlight ? '*' : '+'); for(int r = 0; r < 7; r++) // | boundary for(int c = 0; c < 2; c++) mvch(arg, iy + r, ix + 6 * c, ' '); @@ -209,7 +209,7 @@ void ut_drawTiles(void (*mvch)(void*, int, int, char), void *arg, const struct u for(int c = 0; c < 3; c++) ut_drawBoard(mvch, arg, (char *)state->tiles, 27 * r + 3 * c, 9, - 7 * r + 1, 7 * c + 1, + 7 * r, 7 * c, state->boards[r][c], state->playBoard == -1 || state->playBoard == 3 * r + c); if(numbers) @@ -245,6 +245,7 @@ void ut_bmvch(void *arg, int y, int x, char c) ((char (*)[DBOARDS_X])arg)[y][x] = c; } +#define DTILES_LINE 1 void ut_cursdraw(const struct ut_state *state) { ut_cursprintf("Turn: %c Play board: %d\n", (int)state->player, state->playBoard); @@ -354,7 +355,7 @@ int ut_cursgetpos(const struct ut_state *state, int *r, int *c) *r = 3 * (*r / 3) + 1; *c = 3 * (*c / 3) + 1; }*/ - move((7 * (*r / 3) + 1) + (2 * (*r % 3)), + move(DTILES_LINE + (7 * (*r / 3) + 1) + (2 * (*r % 3)), (7 * (*c / 3) + 1) + (2 * (*c % 3))); refresh(); switch(getch()) @@ -362,6 +363,7 @@ int ut_cursgetpos(const struct ut_state *state, int *r, int *c) case KEY_MOUSE: if(getmouse(&event) == OK && (event.bstate & BUTTON1_CLICKED)) { + event.y -= DTILES_LINE; if(event.y < 0 || event.y >= 21) {break;} if(event.x < 0 || event.x >= 21) {break;} *r = (event.y % 7 - 1) / 2 + 3 * (event.y / 7); @@ -695,47 +697,6 @@ void begin(void) mousemask(BUTTON1_CLICKED, NULL); } -/*int main(int argc, char *argv[]) { - signal(SIGINT, finish); - initscr(); - keypad(stdscr, TRUE); - nonl(); // \r instead of \r\n - cbreak(); - noecho(); - mousemask(BUTTON1_CLICKED, NULL); - - struct ut_state state = ut_initial; - while (true) { - int r, c, err; - erase(); - ut_draw(&state); - char w = ut_winner((char *)state.boards, 0, 3); - if(w) - { - if(w == ' ') - { - mvaddstr(21, 0, "Draw!"); - } - else - { - mvaddch(21, 0, w); - mvaddstr(21, 1, " Wins!"); - } - mvaddstr(22, 0, "Press any key to exit."); - refresh(); - mousemask(0, NULL); - getch(); - break; - } - err = ut_click(&state, &r, &c); - if (err) {continue;} - err = ut_move(&state, &state, r, c); - if (err) {continue;} - } - finish(0); - return 0; -}*/ - int main(int argc, char **argv) { struct ut_state state = ut_initial;