fix mouse movement and prevent moves on completed boards
このコミットが含まれているのは:
コミット
d2e2489715
16
uttt.c
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;
|
||||
|
|
読み込み中…
新しいイシューから参照