Where is the 2d array or list in this python program Progr
Where is the 2d array or list in this python program??
#######################################################################
# Program Filename: assign9.py
# Author: Matthew Tong
# Date: 11/27/16
# Description: Tic Tac toe
# Input: Players choice on characters and location on the board
# Output: Characters on the board, player\'s choices, total wins
#######################################################################
import sys
#######################################################################
# Function: initialize_board
# Description: Method to initialize the baord to spaces
# Parameters: none
# Return values: This returns the board
# Pre-Conditions:
# Post-Conditions:
#######################################################################
def initialize_board():
board = []
for i in range(3):
board.append([])
for j in range(3):
board[i].append(\' \') # adds its parameter as a single element to the list
return board
#######################################################################
# Function: determine_player_choice
# Description: Method to pick the user choices
# Parameters: none
# Return values: The return value of from each usersw
# Pre-Conditions:
# Post-Conditions:
#######################################################################
def determine_player_choice():
ch1 = input(\'Player 1: What character do you want? \')
ch2 = input(\'Player 2: What character do you want? \')
return ch1, ch2
#######################################################################
# Function: fill_board
# Description: Method to ifll the board with user choice
# Parameters: The player\'s characters
# Return values: The location: x and y on the board
# Pre-Conditions:
# Post-Conditions:
#######################################################################
def fill_board(board, ch1, ch2):
while not is_full(board):
print_board(board)
while True:
x, y = input(\'Player 1: Where would you like to put your \' + ch1 + \'? \').split(\' \')
if board[int(x)][int(y)] == \' \':
break
else:
sys.stdout.write(\'Invalid choice. Try again!!\ \') # print out whatever string you give it. What the print function really does; it adds a carraige return to the end of the string you\'re printing
board[int(x)][int(y)] = ch1
print_board(board)
if check_for_winner(board, ch1) or check_for_winner(board, ch2):
return
while True:
x, y = input(\'Player 2: Where would you like to put your \' + ch2 + \'? \').split(\' \')
if board[int(x)][int(y)] == \' \':
break
else:
sys.stdout.write(\'Invalid choice. Try again!!\ \')
board[int(x)][int(y)] = ch2
if check_for_winner(board, ch1) or check_for_winner(board, ch2):
return
#######################################################################
# Function: print_board
# Description: Method to print the tic tac board
# Parameters: none
# Return values: Prints the board out
# Pre-Conditions:
# Post-Conditions:
#######################################################################
def print_board(board):
for i, lst in enumerate(board): #starts counting at board but if you give it a second integer argument, itll start from that board
for j, ch in enumerate(lst):
sys.stdout.write(ch)
if j != len(lst) - 1:
sys.stdout.write(\' | \')
if i != len(board) - 1:
sys.stdout.write(\'\ ----------\')
sys.stdout.write(\'\ \')
sys.stdout.write(\'\ \')
#######################################################################
# Function: is_full
# Description: Method to check the winner of the board
# Parameters: none
# Return values: the winnder of the baord
# Pre-Conditions:
# Post-Conditions:
#######################################################################
def is_full(board):
for lst in board:
for ch in lst:
if ch == \' \':
return False
return True
#######################################################################
# Function: check_for_winner
# Description: Method to check the winner of the board
# Parameters: player\'s input for the location: x and y
# Return values: User inputs their locations, place on the board
# Pre-Conditions:
# Post-Conditions:
#######################################################################
def check_for_winner(board, ch):
return (board[0][0] == ch and board[0][1] == ch and board[0][2] == ch) or \\
(board[1][0] == ch and board[1][1] == ch and board[1][2] == ch) or \\
(board[2][0] == ch and board[2][1] == ch and board[2][2] == ch) or \\
(board[0][0] == ch and board[1][0] == ch and board[2][0] == ch) or \\
(board[0][1] == ch and board[1][1] == ch and board[2][1] == ch) or \\
(board[0][2] == ch and board[1][2] == ch and board[2][2] == ch) or \\
(board[0][0] == ch and board[1][1] == ch and board[2][2] == ch) or \\
(board[0][2] == ch and board[1][1] == ch and board[2][0] == ch)
#######################################################################
# Function: print_winner_results
# Description: Method to print the result
# Parameters: Each matche to see who wins or ties
# Return values: Total wins for each players and ties
# Pre-Conditions:
# Post-Conditions:
#######################################################################
def print_winner_results(total, p1_wins, p2_wins):
print(\'Total Wins:\')
print(\'Player 1: \' + str(p1_wins))
print(\'Player 2: \' + str(p2_wins))
print(\'Ties: \' + str(total - p1_wins - p2_wins))
#######################################################################
# Function: main
# Description: Main method to invoke other method and play the game
# Parameters: After the users input their characters and see who wins the match.
# Return values: The winner.
# Pre-Conditions:
# Post-Conditions:
#######################################################################
def main():
total = 0
p1_wins = 0
p2_wins = 0
while True:
board = initialize_board()
ch1, ch2 = determine_player_choice()
fill_board(board, ch1, ch2)
total += 1
if check_for_winner(board, ch1):
p1_wins += 1
print(\'Congratulations Player 1, you are a winner!!!\')
elif check_for_winner(board, ch2):
p2_wins += 1
print(\'Congratulations Player 2, you are a winner!!!\')
ch = input(\'Do you want to play again (y-yes, n-no): \')
if ch == \'n\' or ch == \'N\':
break
print_winner_results(total, p1_wins, p2_wins)
main()
Solution
def initialize_board():
board = []
for i in range(3):
board.append([])
for j in range(3):
board[i].append(\' \')
return board
Here board is list
===============================================
def fill_board(board, ch1, ch2):
while not is_full(board):
print_board(board)
while True:
x, y = input(\'Player 1: Where would you like to put your \' + ch1 + \'? \').split(\' \')
if board[int(x)][int(y)] == \' \':
break
else:
sys.stdout.write(\'Invalid choice. Try again!!\ \') # print out whatever string you give it. What the print function really does; it adds a carraige return to the end of the string you\'re printing
board[int(x)][int(y)] = ch1
print_board(board)
if check_for_winner(board, ch1) or check_for_winner(board, ch2):
return
while True:
x, y = input(\'Player 2: Where would you like to put your \' + ch2 + \'? \').split(\' \')
if board[int(x)][int(y)] == \' \':
break
else:
sys.stdout.write(\'Invalid choice. Try again!!\ \')
board[int(x)][int(y)] = ch2
if check_for_winner(board, ch1) or check_for_winner(board, ch2):
return
===========================================================
In above function board is 2D array
==========================================================
def is_full(board):
for lst in board:
for ch in lst:
if ch == \' \':
return False
return True
In above function board is matrix
===================================================================
def check_for_winner(board, ch):
return (board[0][0] == ch and board[0][1] == ch and board[0][2] == ch) or \\
(board[1][0] == ch and board[1][1] == ch and board[1][2] == ch) or \\
(board[2][0] == ch and board[2][1] == ch and board[2][2] == ch) or \\
(board[0][0] == ch and board[1][0] == ch and board[2][0] == ch) or \\
(board[0][1] == ch and board[1][1] == ch and board[2][1] == ch) or \\
(board[0][2] == ch and board[1][2] == ch and board[2][2] == ch) or \\
(board[0][0] == ch and board[1][1] == ch and board[2][2] == ch) or \\
(board[0][2] == ch and board[1][1] == ch and board[2][0] == ch)
In above function board is 2D Array.As itt has 2 dimensions
===================================================================



