fix mouse movement and prevent moves on completed boards

このコミットが含まれているのは:
woosh 2023-11-13 03:02:03 +00:00
コミット d2e2489715
1個のファイルの変更8行の追加8行の削除

16
uttt.c
ファイルの表示

@ -77,7 +77,10 @@ int ut_move(struct ut_state *new_state, const struct ut_state *old_state, int ro
if (old_state->playBoard != -1 && old_state->playBoard != 3 * (row / 3) + (col / 3)) {return 1;}
// bad move - tile is occupied
if(old_state->tiles[row][col] != '\0') {return 1;} // replace with ' ' maybe
if(old_state->tiles[row][col] != '\0') {return 1;}
// bad move - board is finished
if(old_state->boards[row / 3][col / 3] != '\0') {return 1;}
// copy old_state->{tiles,boards} to new_state->{tiles,boards}
memmove(new_state->tiles, old_state->tiles, sizeof(old_state->tiles));
@ -164,13 +167,10 @@ int ut_click(const struct ut_state *state, int *r, int *c)
{
if(event.y < 0 || event.y >= 21) {break;}
if(event.x < 0 || event.x >= 21) {break;}
*r = event.y % 7 - 1; // this messes up cursor position
*c = event.x % 7 - 1;
if(*r % 2 != 0) {break;}
if(*c % 2 != 0) {break;}
*r /= 2; *c /= 2;
*r += 3 * (event.y / 7);
*c += 3 * (event.x / 7);
*r = (event.y % 7 - 1) / 2 + 3 * (event.y / 7);
*c = (event.x % 7 - 1) / 2 + 3 * (event.x / 7);
if(((event.y % 7) - 1) % 2 != 0) {break;}
if(((event.x % 7) - 1) % 2 != 0) {break;}
return 0;
}
break;