connect_four: Add missing type annotations.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
a2cbd7ef68
commit
602ebb18fe
1 changed files with 13 additions and 10 deletions
|
@ -1,5 +1,6 @@
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
|
from typing import List
|
||||||
|
|
||||||
from zulip_bots.game_handler import BadMoveException
|
from zulip_bots.game_handler import BadMoveException
|
||||||
|
|
||||||
|
@ -10,7 +11,7 @@ class ConnectFourModel:
|
||||||
Four logic for the Connect Four Bot
|
Four logic for the Connect Four Bot
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self) -> None:
|
||||||
self.blank_board = [
|
self.blank_board = [
|
||||||
[0, 0, 0, 0, 0, 0, 0],
|
[0, 0, 0, 0, 0, 0, 0],
|
||||||
[0, 0, 0, 0, 0, 0, 0],
|
[0, 0, 0, 0, 0, 0, 0],
|
||||||
|
@ -22,14 +23,14 @@ class ConnectFourModel:
|
||||||
|
|
||||||
self.current_board = self.blank_board
|
self.current_board = self.blank_board
|
||||||
|
|
||||||
def update_board(self, board):
|
def update_board(self, board: List[List[int]]) -> None:
|
||||||
self.current_board = deepcopy(board)
|
self.current_board = deepcopy(board)
|
||||||
|
|
||||||
def get_column(self, col):
|
def get_column(self, col: int) -> List[int]:
|
||||||
# We use this in tests.
|
# We use this in tests.
|
||||||
return [self.current_board[i][col] for i in range(6)]
|
return [self.current_board[i][col] for i in range(6)]
|
||||||
|
|
||||||
def validate_move(self, column_number):
|
def validate_move(self, column_number: int) -> bool:
|
||||||
if column_number < 0 or column_number > 6:
|
if column_number < 0 or column_number > 6:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -38,7 +39,7 @@ class ConnectFourModel:
|
||||||
|
|
||||||
return self.current_board[row][column] == 0
|
return self.current_board[row][column] == 0
|
||||||
|
|
||||||
def available_moves(self):
|
def available_moves(self) -> List[int]:
|
||||||
available_moves = []
|
available_moves = []
|
||||||
row = 0
|
row = 0
|
||||||
for column in range(0, 7):
|
for column in range(0, 7):
|
||||||
|
@ -47,7 +48,9 @@ class ConnectFourModel:
|
||||||
|
|
||||||
return available_moves
|
return available_moves
|
||||||
|
|
||||||
def make_move(self, move, player_number, is_computer=False):
|
def make_move(
|
||||||
|
self, move: str, player_number: int, is_computer: bool = False
|
||||||
|
) -> List[List[int]]:
|
||||||
if player_number == 1:
|
if player_number == 1:
|
||||||
token_number = -1
|
token_number = -1
|
||||||
if player_number == 0:
|
if player_number == 0:
|
||||||
|
@ -67,8 +70,8 @@ class ConnectFourModel:
|
||||||
|
|
||||||
return deepcopy(self.current_board)
|
return deepcopy(self.current_board)
|
||||||
|
|
||||||
def determine_game_over(self, players):
|
def determine_game_over(self, players: List[str]) -> str:
|
||||||
def get_horizontal_wins(board):
|
def get_horizontal_wins(board: List[List[int]]) -> int:
|
||||||
horizontal_sum = 0
|
horizontal_sum = 0
|
||||||
|
|
||||||
for row in range(0, 6):
|
for row in range(0, 6):
|
||||||
|
@ -86,7 +89,7 @@ class ConnectFourModel:
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def get_vertical_wins(board):
|
def get_vertical_wins(board: List[List[int]]) -> int:
|
||||||
vertical_sum = 0
|
vertical_sum = 0
|
||||||
|
|
||||||
for row in range(0, 3):
|
for row in range(0, 3):
|
||||||
|
@ -104,7 +107,7 @@ class ConnectFourModel:
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def get_diagonal_wins(board):
|
def get_diagonal_wins(board: List[List[int]]) -> int:
|
||||||
major_diagonal_sum = 0
|
major_diagonal_sum = 0
|
||||||
minor_diagonal_sum = 0
|
minor_diagonal_sum = 0
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue