Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- # from typing import Final
- #######################################################################
- def display_board(board):
- # La función acepta un parámetro el cual contiene el estado actual del tablero
- # y lo muestra en la consola.
- for i in range(TAMANNO_TABLERO):
- for j in range(TAMANNO_TABLERO):
- print(board[i][j], end='')
- print('\n', end='')
- print('\n')
- #######################################################################
- def print_empty():
- print('vacios = ', casillas_vacias)
- #######################################################################
- def print_round():
- print('\n-----------------------------')
- print('Ronda: ', ronda)
- #######################################################################
- def play_to_row(play):
- return (play - 1) // TAMANNO_TABLERO
- #######################################################################
- def play_to_column(play):
- return (play - 1) % TAMANNO_TABLERO
- #######################################################################
- def enter_move(board):
- # La función acepta el estado actual del tablero y pregunta al usuario acerca de su movimiento,
- # verifica la entrada y actualiza el tablero acorde a la decisión del usuario.
- jugada_usuario = -1
- print_empty()
- while jugada_usuario not in casillas_vacias:
- jugada_usuario = int(input('Indica tu jugada: '))
- casillas_vacias.remove(jugada_usuario)
- print_empty()
- board[play_to_row(jugada_usuario)][play_to_column(jugada_usuario)] = 'o'
- #######################################################################
- # def draw_move(board):
- # La función dibuja el movimiento de la máquina y actualiza el tablero.
- #######################################################################
- def machine_move(board):
- jugada_maquina = random.choice(casillas_vacias)
- print('La máquina jugó: ', jugada_maquina )
- casillas_vacias.remove(jugada_maquina)
- print_empty()
- board[play_to_row(jugada_maquina)][play_to_column(jugada_maquina)] = 'x'
- #def make_list_of_free_fields(board):
- # La función examina el tablero y construye una lista de todos los cuadros vacíos.
- # La lista esta compuesta por tuplas, cada tupla es un par de números que indican la fila y columna.
- #######################################################################
- def check_status_rows(board):
- global estatus_partida
- i = 0 # contador de filas
- while i < TAMANNO_TABLERO and estatus_partida == 'El juego continúa.':
- j = 1
- while j < TAMANNO_TABLERO and board[i][j] == board[i][0]:
- j = j + 1
- # print('ejecutandose el ciclo, parcial = ', j)
- print('Fila ', i, ': ', j)
- if j == TAMANNO_TABLERO:
- if board[i][0] == 'x':
- estatus_partida = 'Ganó la máquina. :-('
- else:
- estatus_partida = '¡Ganaste! :-)'
- i = i + 1
- #######################################################################
- def check_status_columns(board):
- global estatus_partida
- i = 0 # contador de columnas
- while i < TAMANNO_TABLERO and estatus_partida == 'El juego continúa.':
- j = 1
- while j < TAMANNO_TABLERO and board[j][i] == board[0][i]:
- j = j + 1
- # print('ejecutandose el ciclo, parcial = ', j)
- print('Columna ', i, ': ', j)
- if j == TAMANNO_TABLERO:
- if board[0][i] == 'x':
- estatus_partida = 'Ganó la máquina. :-('
- else:
- estatus_partida = '¡Ganaste! :-)'
- i = i + 1
- #######################################################################
- def check_status_main_diagonal(board):
- global estatus_partida
- i = 0 # contador de filas/columnas
- while i < TAMANNO_TABLERO and board[i][i] == board[0][0] and estatus_partida == 'El juego continúa.':
- i = i + 1
- # print('ejecutandose el ciclo, parcial = ', j)
- print('Diagonal principal : ', i)
- if i == TAMANNO_TABLERO:
- if board[0][0] == 'x':
- estatus_partida = 'Ganó la máquina. :-('
- else:
- estatus_partida = '¡Ganaste! :-)'
- #######################################################################
- def check_status_secondary_diagonal(board):
- global estatus_partida
- i = 0 # contador de filas/columnas
- while i < TAMANNO_TABLERO and board[i][-i+2] == board[0][2] and estatus_partida == 'El juego continúa.':
- i = i + 1
- # print('ejecutandose el ciclo, parcial = ', j)
- print('Diagonal secundaria : ', i)
- if i == TAMANNO_TABLERO:
- if board[0][2] == 'x':
- estatus_partida = 'Ganó la máquina. :-('
- else:
- estatus_partida = '¡Ganaste! :-)'
- #######################################################################
- def victory_for(board):
- # La función analiza el estatus del tablero para verificar si
- # el jugador que utiliza las 'O's o las 'X's ha ganado el juego.
- global estatus_partida
- #global jugada
- if (jugada >= 3):
- check_status_rows(board) # revision de filas
- if estatus_partida == 'El juego continúa.':
- check_status_columns(board) # revision de columnas
- if estatus_partida == 'El juego continúa.':
- check_status_main_diagonal(board) # revision de diagonal principal
- if estatus_partida == 'El juego continúa.':
- check_status_secondary_diagonal(board) # revision de diagonal secundaria
- if casillas_vacias == [] and estatus_partida == 'El juego continúa.':
- estatus_partida = 'Empate'
- print(estatus_partida)
- #######################################################################
- #######################################################################
- # Inicialiación del tablero
- # TAMANNO_TABLERO: Final = 3
- TAMANNO_TABLERO = 3
- partida = 1
- estatus_partida = 'El juego continúa.'
- ronda = 1
- jugada = 1
- tablero = [[0 for i in range(TAMANNO_TABLERO)] for j in range(TAMANNO_TABLERO)]
- print(tablero, len(tablero))
- casillas_vacias = list(range(TAMANNO_TABLERO**2))
- casillas_vacias[:]=[i+1 for i in casillas_vacias]
- print_empty()
- casilla = 0
- for i in range(TAMANNO_TABLERO):
- for j in range(TAMANNO_TABLERO):
- casilla += 1
- tablero[i][j] = casilla
- print_round()
- # Jugada inicial de la máquina
- print('Jugada: ', jugada)
- print('La máquina jugó: 5')
- tablero[1][1] = 'x'
- casillas_vacias.remove(5)
- display_board(tablero)
- while estatus_partida == 'El juego continúa.':
- jugada = jugada + 1
- print('Jugada: ', jugada)
- enter_move(tablero)
- display_board(tablero)
- victory_for(tablero)
- if estatus_partida == 'El juego continúa.':
- ronda += 1
- jugada = jugada + 1
- print('Jugada: ', jugada)
- print_round()
- machine_move(tablero)
- display_board(tablero)
- victory_for(tablero)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement