Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 135 additions & 0 deletions 148.tictactoe.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
board = [' ' for x in range(10)]

def insertLetter(letter,pos):
board[pos] = letter

def spaceIsFree(pos):
return board[pos] == ' '

def printBoard(board):
print(' | | ')
print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
print(' | | ')
print('------------')
print(' | | ')
print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
print(' | | ')
print('------------')
print(' | | ')
print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
print(' | | ')

def isBoardFull(board):
if board.count(' ') > 1:
return False
else:
return True

def IsWinner(b,l):
return ((b[1] == l and b[2] == l and b[3] == l) or
(b[4] == l and b[5] == l and b[6] == l) or
(b[7] == l and b[8] == l and b[9] == l) or
(b[1] == l and b[4] == l and b[7] == l) or
(b[2] == l and b[5] == l and b[8] == l) or
(b[3] == l and b[6] == l and b[9] == l) or
(b[1] == l and b[5] == l and b[9] == l) or
(b[3] == l and b[5] == l and b[7] == l))

def playerMove():
run = True
while run:
move = input("please select a position to enter the X between 1 to 9")
try:
move = int(move)
if move > 0 and move < 10:
if spaceIsFree(move):
run = False
insertLetter('X' , move)
else:
print('Sorry, this space is occupied')
else:
print('please type a number between 1 and 9')

except:
print('Please type a number')

def computerMove():
possibleMoves = [x for x , letter in enumerate(board) if letter == ' ' and x != 0 ]
move = 0

for let in ['O' , 'X']:
for i in possibleMoves:
boardcopy = board[:]
boardcopy[i] = let
if IsWinner(boardcopy, let):
move = i
return move

cornersOpen = []
for i in possibleMoves:
if i in [1 , 3 , 7 , 9]:
cornersOpen.append(i)

if len(cornersOpen) > 0:
move = selectRandom(cornersOpen)
return move

if 5 in possibleMoves:
move = 5
return move

edgesOpen = []
for i in possibleMoves:
if i in [2,4,6,8]:
edgesOpen.append(i)

if len(edgesOpen) > 0:
move = selectRandom(edgesOpen)
return move

def selectRandom(li):
import random
ln = len(li)
r = random.randrange(0,ln)
return li[r]

def main():
print("Welcome to the game!")
printBoard(board)

while not(isBoardFull(board)):
if not(IsWinner(board , 'O')):
playerMove()
printBoard(board)
else:
print("sorry you loose!")
break

if not(IsWinner(board , 'X')):
move = computerMove()
if move == 0:
print(" ")
else:
insertLetter('O' , move)
print('computer placed an o on position' , move , ':')
printBoard(board)
else:
print("you win!")
break




if isBoardFull(board):
print("Tie game")

while True:
x = input("Do you want to play again? (y/n)")
if x.lower() == 'y':
board = [' ' for x in range(10)]
print('--------------------')
main()
else:
break

##i think you use another way to create tic toc toe .I will share my code for this code