added some better error msgs. maybe fixed sockets staying open.

This commit is contained in:
Vincent Rodley 2025-08-04 11:08:02 +12:00
parent b6b5b08977
commit 58f59a3335

35
main.py
View File

@ -103,7 +103,7 @@ def play_game(player1_get_move, player2_get_move):
try: try:
tile = board[col].index("O") tile = board[col].index("O")
except ValueError: except ValueError:
continue # column full, skip turn (could add retry logic) continue
board[col][tile] = player board[col][tile] = player
@ -127,18 +127,23 @@ def play_local_pvp():
def play_lan_server(): def play_lan_server():
HOST, PORT = "0.0.0.0", 65432 HOST, PORT = "0.0.0.0", 65432
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: try:
s.bind((HOST, PORT)) with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.listen() s.bind((HOST, PORT))
print("Waiting for player 2...") s.listen()
conn, addr = s.accept() print("Waiting for player 2...")
with conn: conn, addr = s.accept()
print(f"Connected by {addr}") with conn:
play_game( print(f"Connected by {addr}")
lambda p, b: send_and_return_local_move(p, b, conn), play_game(
lambda p, b: socket_receive_move(conn) lambda p, b: send_and_return_local_move(p, b, conn),
) lambda p, b: socket_receive_move(conn)
)
except:
print("Somebody broke something. Try again.")
input("Press ENTER to return to the menu.")
finally:
s.close()
def play_lan_client(): def play_lan_client():
while True: while True:
@ -152,8 +157,10 @@ def play_lan_client():
lambda p, b: send_and_return_local_move(p, b, s) lambda p, b: send_and_return_local_move(p, b, s)
) )
break break
except: except ConnectionRefusedError:
print("No game found on that IP. Try again.") print("No game found on that IP. Try again.")
except ConnectionResetError or ValueError:
print("The game was closed by host (I think).")
def send_and_return_local_move(player, board, sock): def send_and_return_local_move(player, board, sock):
col = local_move_provider(player, board) col = local_move_provider(player, board)