Spaces:
Build error
Build error
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
|
3 |
+
def multiplayer_game():
|
4 |
+
st.title("Tic Tac Toe")
|
5 |
+
|
6 |
+
game_state = [[' ' for i in range(3)] for j in range(3)]
|
7 |
+
player = "X"
|
8 |
+
winner = None
|
9 |
+
|
10 |
+
def check_winner():
|
11 |
+
# Check rows
|
12 |
+
for row in game_state:
|
13 |
+
if row == ["X", "X", "X"]:
|
14 |
+
return "X"
|
15 |
+
elif row == ["O", "O", "O"]:
|
16 |
+
return "O"
|
17 |
+
|
18 |
+
# Check columns
|
19 |
+
for col in range(3):
|
20 |
+
if game_state[0][col] == game_state[1][col] == game_state[2][col] == "X":
|
21 |
+
return "X"
|
22 |
+
elif game_state[0][col] == game_state[1][col] == game_state[2][col] == "O":
|
23 |
+
return "O"
|
24 |
+
|
25 |
+
# Check diagonals
|
26 |
+
if (game_state[0][0] == game_state[1][1] == game_state[2][2] == "X" or
|
27 |
+
game_state[0][2] == game_state[1][1] == game_state[2][0] == "X"):
|
28 |
+
return "X"
|
29 |
+
elif (game_state[0][0] == game_state[1][1] == game_state[2][2] == "O" or
|
30 |
+
game_state[0][2] == game_state[1][1] == game_state[2][0] == "O"):
|
31 |
+
return "O"
|
32 |
+
|
33 |
+
return None
|
34 |
+
|
35 |
+
def render_game_state():
|
36 |
+
for row_num, row in enumerate(game_state):
|
37 |
+
row_string = "|".join(row)
|
38 |
+
st.write(row_string)
|
39 |
+
if row_num != 2:
|
40 |
+
st.write("-+-+-")
|
41 |
+
|
42 |
+
for i in range(9):
|
43 |
+
render_game_state()
|
44 |
+
st.write("Player ", player, " turn. Choose a square (1-9).")
|
45 |
+
chosen_square = st.number_input("", min_value=1, max_value=9)
|
46 |
+
row = (chosen_square - 1) // 3
|
47 |
+
col = (chosen_square - 1) % 3
|
48 |
+
if game_state[row][col] != " ":
|
49 |
+
st.write("Square already taken. Please choose another.")
|
50 |
+
continue
|
51 |
+
game_state[row][col] = player
|
52 |
+
winner = check_winner()
|
53 |
+
if winner:
|
54 |
+
st.write("Player ", winner, " wins!")
|
55 |
+
break
|
56 |
+
if player == "X":
|
57 |
+
player = "O"
|
58 |
+
else:
|
59 |
+
player = "X"
|
60 |
+
if not winner:
|
61 |
+
st.write("It's a draw!")
|
62 |
+
|
63 |
+
if __name__ == "__main__":
|
64 |
+
multiplayer_game()
|