Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

How to update this to randomly picking a player instead of asking which one wants to start first? X = X O = O EMPTY

How to update this to randomly picking a player instead of asking which one wants to start first?

X = "X"

O = "O"

EMPTY = " "

TIE = "TIE"

NUM_SQUARES = 9

def ask_yes_no(question):

response = None

while response not in ("y", "n"):

response = input(question).lower()

return response

def ask_number(question, low, high):

response = None

while response not in range(low, high):

response = int(input(question))

return response

def pieces():

go_first = ask_yes_no("Do you require the first move? (y/n): ")

if go_first == "y":

print(" Then take the first move. You will need it.")

human = X

computer = O

else:

print(" Your bravery will be your undoing... I will go first.")

computer = X

human = O

return computer, human

def new_board():

board = []

for square in range(NUM_SQUARES):

board.append(EMPTY)

return board

def display_board(board):

print(" \t", board[0], "|", board[1], "|", board[2])

print("\t", "---------")

print("\t", board[3], "|", board[4], "|", board[5])

print("\t", "---------")

print("\t", board[6], "|", board[7], "|", board[8], " ")

def legal_moves(board):

moves = []

for square in range(NUM_SQUARES):

if board[square] == EMPTY:

moves.append(square)

return moves

def winner(board):

WAYS_TO_WIN = ((0, 1, 2),

(3, 4, 5),

(6, 7, 8),

(0, 3, 6),

(1, 4, 7),

(2, 5, 8),

(0, 4, 8),

(2, 4, 6))

for row in WAYS_TO_WIN:

if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:

winner = board[row[0]]

return winner

if EMPTY not in board:

return TIE

return None

def human_move(board, human):

legal = legal_moves(board)

move = None

while move not in legal:

move = ask_number("Where will you move? ", 0, NUM_SQUARES)

if move not in legal:

print(" That square is already occupied. Choose another. ")

print("Fine...")

return move

def computer_move(board, computer, human):

# make a copy to work with since function will be changing list

board = board[:]

# the best positions to have, in order

BEST_MOVES = (4, 0, 2, 6, 8, 1, 3, 5, 7)

print("I shall take square number", end=" ")

for move in legal_moves(board):

board[move] = computer

if winner(board) == computer:

print(move)

return move

board[move] = EMPTY

for move in legal_moves(board):

board[move] = human

if winner(board) == human:

print(move)

return move

# done checkin this move, undo it

board[move] = EMPTY

for move in BEST_MOVES:

if move in legal_moves(board):

print(move)

return move

def next_turn(turn):

if turn == X:

return O

else:

return X

def congrat_winner(the_winner, computer, human):

if the_winner != TIE:

print(the_winner, "won! ")

else:

print("It's a tie! ")

if the_winner == computer:

print("predictable")

elif the_winner == human:

print("No")

elif the_winner == TIE:

print("lucky ")

def main():

computer, human = pieces()

turn = X

board = new_board()

display_board(board)

while not winner(board):

if turn == human:

move = human_move(board, human)

board[move] = human

else:

move = computer_move(board, computer, human)

board[move] = computer

display_board(board)

turn = next_turn(turn)

the_winner = winner(board)

congrat_winner(the_winner, computer, human)

# start the program

main()

input(" Press the enter key to quit.")

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Concepts of Database Management

Authors: Philip J. Pratt, Joseph J. Adamski

7th edition

978-1111825911, 1111825912, 978-1133684374, 1133684378, 978-111182591

More Books

Students also viewed these Databases questions

Question

16.6 Outline the three waysto obtain union recognition.

Answered: 1 week ago

Question

Is the person willing to deal with the consequences?

Answered: 1 week ago

Question

Was there an effort to involve the appropriate people?

Answered: 1 week ago