diff --git a/src/game.rs b/src/game.rs index 8edf851..67903cb 100644 --- a/src/game.rs +++ b/src/game.rs @@ -31,7 +31,7 @@ impl GameClient { if let Some((_, t)) = self.end { return (true, t); } - for (t, m) in [(Team::Zero, 1), (Team::One, 2_u32.pow(9))] { + for (t, m) in [(Team::Zero, 0), (Team::One, 9)] { for w in [ 0b111000000, 0b000111000, @@ -42,12 +42,14 @@ impl GameClient { 0b100010001, 0b001010100 ] { - if board & (w*m) == (w*m) { + if board & (w<>9)) & 0b111111111) == 0b111111111 { + return (true, None) + } (false, None) } pub fn update_end_state(&mut self, board: &mut u32) { @@ -98,9 +100,9 @@ impl GameClient { } unwrap(self.res_buf.extend_from_slice(b"
")).await; for c in 0..=8 { - let picked_by = if board & 2_u32.pow(c) != 0 { + let picked_by = if board & (1< return (HttpResCode::NotFound, "", &[]), }; if board - & ((2_u32.pow(clicked_c as u32)) - + (2_u32.pow(9 + clicked_c as u32))) + & ( + (1<<(clicked_c as u32)) + (1<<(9 + clicked_c as u32)) + ) != 0 { return (HttpResCode::Forbidden, "", &[]); } - board = board | 2_u32.pow((self.team as u32 * 9) + clicked_c as u32); + board = board | (1<<((self.team as u32 * 9) + clicked_c as u32)); turn = (!self.team).into(); BOARD.store(board, Ordering::Release); TURN.store(turn, Ordering::Release);