Knots and Crosses
A downloadable game
I made Knots and Crosses (Tic Tac Toe) in my computing class for python. It doesn't have ai because I'm not smart enough but it works for 2 players, enjoy :)
Source:
import random
# check if a number is an integer
def isInt(x):
for y in x:
if ord(y) < 48 or ord(y) > 57:
return False
return True
# prints the table
def prtTable():
print(f" a b c ")
print(f" ┌───┬───┬───┐")
print(f"1 │ {data[0]} │ {data[1]} │ {data[2]} │")
print(f" ├───┼───┼───┤")
print(f"2 │ {data[3]} │ {data[4]} │ {data[5]} │")
print(f" ├───┼───┼───┤")
print(f"3 │ {data[6]} │ {data[7]} │ {data[8]} │")
print(f" └───┴───┴───┘")
# title ascii art
print("█ █▀ █ █ ▄██▄ █████ ███ ▄▀█ ▄███ ███▄ ▄██▄ ███ ███ ████ ███")
print("██▀ ██▄█ █ █ █ ██▄ █▀ ▄ █▀ █ █ █ █ ██▄ ██▄ █▄▄ ██▄ ")
print("█▀█▄ █ ██ █ █ █ ▀██ █▀██ █▄ ███▄ █ █ ▀██ ▀██ █▀▀ ▀██")
print("█ █ █ █ ▀██▀ █ ███ ▀██ █ ▀███ █ █ ▀██▀ ███ ███ ████ ███")
print("By tomekk06")
# game loop
while True:
input("Press enter to start")
data = [" "]*9 # clearing previous game
turn = random.randint(0,1) # choosing random player
end = 0
while end != 1:
# print table
prtTable()
if turn == 0:
print("X's turn")
else:
print("O's turn")
# get position from input
while True:
select = input("Enter position: ")
result = -1
if select == "":
select = " "
# translate position from input to an array
if select[0] == "a":
result = 0
if select[0] == "b":
result = 1
if select[0] == "c":
result = 2
# input validation
if result != -1 and isInt(select[1]) == True:
result += 3*(int(select[1])-1)
if result >= 0 and result <=8 and data[result] == " ":
break
print("Invalid input")
# insert correct marking onto array
if turn == 0:
data[result] = "X"
else:
data[result] = "O"
turn = 1 - turn
# array of possible win combinations
winFlags = [
[0,3,6],
[1,4,7],
[2,5,8],
[0,1,2],
[3,4,5],
[6,7,8],
[0,4,8],
[2,4,6],
]
# checks if any of the patterns from the array above apear in the game
for x in winFlags:
count = 0
for y in x:
if data[y] == "X":
count += 1
else:
break
if count == 3:
prtTable()
print("X wins!")
end = 1
break
for x in winFlags:
count = 0
for y in x:
if data[y] == "O":
count += 1
else:
break
if count == 3:
prtTable()
print("O wins!")
end = 1
break
# if all boxes are filled without a winner then it declears a draw
count = 0
for x in data:
if x != " ":
count += 1
if count == 9:
end = 1
prtTable()
print("Draw!")
break
Download
Download
knotsAndCrosses.py 3.8 kB
Install instructions
Download and install python from the python.org or Microsoft Store
Alternatively, visit Online Python to use python in your browser.

Leave a comment
Log in with itch.io to leave a comment.