Spaces:
Sleeping
Sleeping
File size: 7,890 Bytes
2752e5e 0a29df0 8ea503c 8fb5384 8782fa7 0a29df0 ac27494 36e2aa7 5f4fc3b 8ef9f1b 8060513 348a278 b13feb5 8782fa7 b13feb5 da21713 8782fa7 8ec3185 fdbcf27 ac27494 6d57342 8fb5384 b07a75e 7e8af86 03da642 7e8af86 8fb5384 7e8af86 af15634 a890b42 d0e7795 1299992 d0e7795 ac27494 8fb5384 63525c3 8fb5384 7028ae2 a676e79 58902ba fdbcf27 b24d917 237d5b1 b24d917 237d5b1 cb70215 b2dcf09 c224d5d 7e8af86 c224d5d e52a895 74695d2 a676e79 0a29df0 a676e79 091f8e1 74695d2 ac27494 e52a895 fdbcf27 a890b42 b2dcf09 b5ee351 b2dcf09 091f8e1 b2dcf09 b5ee351 b2dcf09 b5ee351 fdbcf27 bca28d4 f222ef9 a676e79 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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
import streamlit as st
#Sessions
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"
if 'submit_disabled' not in st.session_state:
st.session_state.submit_disabled = False
def get_userInput():
input = st.number_input("Enter a number between 1 to 9." ,min_value=1,max_value=9,key="int",on_change=None)
return input
def validate_userInput(user_input):
#user_input = int(user_input)
if user_input >= 1 and user_input <= 9:
if user_input in st.session_state.legal_numbers:
return True
else:
#st.write("input is not in session " + user_input)
return False
else:
#st.write("input is not between 1 and 9 " + user_input)
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_guide():
st.text("How to play: Enter the grid number as shown below to mark 'X' or 'O'. \n"+
"Kindly pick any number shown in Legal Numbers. \n" +
"Number cannot be repeated more than twice.")
col1, col2, col3 = st.columns(3)
col4, col5, col6 = st.columns(3)
col7, col8, col9 = st.columns(3)
with col1:
st.text("1")
with col2:
st.text("2")
with col3:
st.text("3")
with col4:
st.text("4")
with col5:
st.text("5")
with col6:
st.text("6")
with col7:
st.text("7")
with col8:
st.text("8")
with col9:
st.text("9")
def display_board(num):
col1, col2, col3 = st.columns(3)
col4, col5, col6 = st.columns(3)
col7, col8, col9 = st.columns(3)
if int(num) == 0:
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])
else:
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"
st.session_state.submit_disabled=False
st.rerun()
def update_legalNumbers(number):
if number == 0:
"Legal Numbers: " + "".join(str(st.session_state.legal_numbers))
else:
st.session_state.legal_numbers.remove(int(user_input))
"Legal Numbers: " + "".join(str(st.session_state.legal_numbers))
def isGameWon():
if st.session_state.gridNumbers[0] == "X" and st.session_state.gridNumbers[1] == "X" and st.session_state.gridNumbers[2] == "X":
return True
elif st.session_state.gridNumbers[3] == "X" and st.session_state.gridNumbers[4] == "X" and st.session_state.gridNumbers[5] == "X":
return True
elif st.session_state.gridNumbers[6] == "X" and st.session_state.gridNumbers[7] == "X" and st.session_state.gridNumbers[8] == "X":
return True
elif st.session_state.gridNumbers[0] == "X" and st.session_state.gridNumbers[4] == "X" and st.session_state.gridNumbers[8] == "X":
return True
elif st.session_state.gridNumbers[2] == "X" and st.session_state.gridNumbers[4] == "X" and st.session_state.gridNumbers[6] == "X":
return True
elif st.session_state.gridNumbers[0] == "X" and st.session_state.gridNumbers[3] == "X" and st.session_state.gridNumbers[6] == "X":
return True
elif st.session_state.gridNumbers[1] == "X" and st.session_state.gridNumbers[4] == "X" and st.session_state.gridNumbers[7] == "X":
return True
elif st.session_state.gridNumbers[2] == "X" and st.session_state.gridNumbers[5] == "X" and st.session_state.gridNumbers[8] == "X":
return True
elif st.session_state.gridNumbers[0] == "O" and st.session_state.gridNumbers[1] == "O" and st.session_state.gridNumbers[2] == "O":
return True
elif st.session_state.gridNumbers[3] == "O" and st.session_state.gridNumbers[4] == "O" and st.session_state.gridNumbers[5] == "O":
return True
elif st.session_state.gridNumbers[6] == "O" and st.session_state.gridNumbers[7] == "O" and st.session_state.gridNumbers[8] == "O":
return True
elif st.session_state.gridNumbers[0] == "O" and st.session_state.gridNumbers[4] == "O" and st.session_state.gridNumbers[8] == "O":
return True
elif st.session_state.gridNumbers[2] == "O" and st.session_state.gridNumbers[4] == "O" and st.session_state.gridNumbers[6] == "O":
return True
elif st.session_state.gridNumbers[0] == "O" and st.session_state.gridNumbers[3] == "O" and st.session_state.gridNumbers[6] == "O":
return True
elif st.session_state.gridNumbers[1] == "O" and st.session_state.gridNumbers[4] == "O" and st.session_state.gridNumbers[7] == "O":
return True
elif st.session_state.gridNumbers[2] == "O" and st.session_state.gridNumbers[5] == "O" and st.session_state.gridNumbers[8] == "O":
return True
else:
return False
#UIApp starts here
st.set_page_config(page_title="Python - Tic Tac Toe", page_icon=":python:")
st.header("Python - Tic Tac Toe")
display_guide()
user_input=get_userInput()
#UI Buttons
col1, col2 = st.columns(2)
with col1:
submit=st.button('Submit', key='submit', disabled=st.session_state.submit_disabled)
with col2:
reset=st.button('Reset', key='reset')
#Button functionality
if submit:
valid=validate_userInput(user_input)
if valid:
update_legalNumbers(user_input)
display_board(user_input)
check=isGameWon()
if check:
st.session_state.submit_disabled=True
st.subheader('', divider='rainbow')
st.subheader('You have the won the Game!!!')
elif len(st.session_state.legal_numbers)==0:
st.session_state.submit_disabled=True
st.subheader('', divider='rainbow')
st.subheader('The Game is Tie!!!')
else:
display_board(0)
error_Message("Please enter any of these numbers: " + "Legal Numbers: " + "".join(str(st.session_state.legal_numbers)))
if reset:
reset_game()
|