File size: 2,565 Bytes
2752e5e
 
ac27494
8ea503c
 
8fb5384
 
 
 
ac27494
 
 
5f4fc3b
8ef9f1b
 
 
b98e47a
fdbcf27
d4929d9
fdbcf27
8ef9f1b
fdbcf27
 
 
 
ac27494
6d57342
8fb5384
 
 
 
 
3f65a39
a890b42
 
 
3f65a39
1e3d902
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eb918bc
1e3d902
ac27494
8fb5384
63525c3
8fb5384
 
58902ba
fdbcf27
63525c3
 
cb70215
c224d5d
 
 
 
 
 
74695d2
 
 
 
ac27494
2752e5e
fdbcf27
 
 
a890b42
fdbcf27
 
ac27494
 
8fb5384
40f1b61
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import streamlit as st

#Globals
if "legal_numbers" not in st.session_state:
    st.session_state.legal_numbers = [1,2,3,4,5,6,7,8,9]
if "gridNumbers" not in st.session_state:
    st.session_state.gridNumbers = ["...", "...", "...", "...", "...", "...", "...", "...", "..."]
if "Value" not in st.session_state:
    st.session_state.Value = "X"

def get_userInput(): 
    input = st.text_input("Enter a number between 1 to 9: ", key="input")
    return input

def validate_userInput(user_input):
    if user_input.isdigit():
        if int(user_input) < 1 or int(user_input) > 9:
            return False
        else:    
            return True
    else:
        return False

def error_Message(msg):
    st.write(msg)

def toggleValue():
    if st.session_state.Value == "X":
        st.session_state.Value = "O"
    else:
        st.session_state.Value == "X"
    
def display_board(user_input):  
    col1, col2, col3 = st.columns(3)
    col4, col5, col6 = st.columns(3)
    col7, col8, col9 = st.columns(3)
    st.session_state.gridNumbers[int(num)-1]= st.session_state.Value    
    with col1:
        st.text(st.session_state.gridNumbers[0])
    with col2:
        st.text(st.session_state.gridNumbers[1])
    with col3:
        st.text(st.session_state.gridNumbers[2])
    with col4:
        st.text(st.session_state.gridNumbers[3])
    with col5:
        st.text(st.session_state.gridNumbers[4])
    with col6:
        st.text(st.session_state.gridNumbers[5])
    with col7:
        st.text(st.session_state.gridNumbers[6])
    with col8:
        st.text(st.session_state.gridNumbers[7])
    with col9:
        st.text(st.session_state.gridNumbers[8])

    toggleValue()

def reset_game():
    st.session_state.legal_numbers = [1,2,3,4,5,6,7,8,9]
    st.session_state.gridNumbers = ["...", "...", "...", "...", "...", "...", "...", "...", "..."]
    st.session_state.Value = "X"
    
def update_legalNumbers(number):
    st.session_state.legal_numbers.remove(int(user_input))
    st.write("Legal Numbers: " + "".join(str(st.session_state.legal_numbers)))

#UIApp starts here
st.set_page_config(page_title="Python - Tic Tac Toe", page_icon=":python:")
st.header("Python - Tic Tac Toe")

user_input=get_userInput()

#UI Buttons
submit=st.button('Submit')
replay=st.button('Replay')

#Button functionality
if submit:
    response=validate_userInput(user_input)
    if response:
        update_legalNumbers(user_input)
        display_board(user_input)
    else:
         error_Message("Please enter a digit between 1 to 9.")

if replay:
    reset_game()