diff --git a/uttt.c b/uttt.c index 4f85c9a..7b761a5 100644 --- a/uttt.c +++ b/uttt.c @@ -189,17 +189,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, ' '); @@ -215,7 +215,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) @@ -251,6 +251,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); @@ -360,7 +361,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()) @@ -368,6 +369,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); @@ -704,47 +706,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;