Advertisement
Andokeyb

Tic-Tac-Toe

May 19th, 2023 (edited)
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.03 KB | Software | 0 0
  1. import random
  2. # from typing import Final
  3.  
  4.  
  5. #######################################################################
  6.  
  7. def display_board(board):
  8.     # La función acepta un parámetro el cual contiene el estado actual del tablero
  9.     # y lo muestra en la consola.
  10.     for i in range(TAMANNO_TABLERO):
  11.         for j in range(TAMANNO_TABLERO):
  12.             print(board[i][j], end='')
  13.         print('\n', end='')
  14.     print('\n')
  15.  
  16.  
  17. #######################################################################
  18.  
  19. def print_empty():
  20.     print('vacios = ', casillas_vacias)
  21.  
  22.  
  23. #######################################################################
  24.  
  25. def print_round():
  26.     print('\n-----------------------------')
  27.     print('Ronda: ', ronda)
  28.  
  29.  
  30. #######################################################################
  31.  
  32. def play_to_row(play):
  33.     return (play - 1) // TAMANNO_TABLERO
  34.  
  35.  
  36. #######################################################################
  37.  
  38. def play_to_column(play):
  39.     return (play - 1) % TAMANNO_TABLERO
  40.  
  41.  
  42. #######################################################################
  43.  
  44. def enter_move(board):
  45.     # La función acepta el estado actual del tablero y pregunta al usuario acerca de su movimiento,  
  46.     # verifica la entrada y actualiza el tablero acorde a la decisión del usuario.
  47.     jugada_usuario = -1
  48.     print_empty()
  49.     while jugada_usuario not in casillas_vacias:
  50.         jugada_usuario = int(input('Indica tu jugada: '))
  51.     casillas_vacias.remove(jugada_usuario)
  52.     print_empty()
  53.     board[play_to_row(jugada_usuario)][play_to_column(jugada_usuario)] = 'o'
  54.  
  55.  
  56. #######################################################################
  57.  
  58. # def draw_move(board):
  59.     # La función dibuja el movimiento de la máquina y actualiza el tablero.
  60.  
  61.  
  62. #######################################################################
  63.  
  64. def machine_move(board):
  65.     jugada_maquina = random.choice(casillas_vacias)
  66.     print('La máquina jugó: ', jugada_maquina )
  67.     casillas_vacias.remove(jugada_maquina)
  68.     print_empty()
  69.     board[play_to_row(jugada_maquina)][play_to_column(jugada_maquina)] = 'x'
  70.  
  71. #def make_list_of_free_fields(board):
  72.     # La función examina el tablero y construye una lista de todos los cuadros vacíos.
  73.     # La lista esta compuesta por tuplas, cada tupla es un par de números que indican la fila y columna.
  74.  
  75.  
  76. #######################################################################
  77.  
  78. def check_status_rows(board):
  79.     global estatus_partida
  80.     i = 0 # contador de filas
  81.  
  82.     while i < TAMANNO_TABLERO and estatus_partida == 'El juego continúa.':
  83.         j = 1
  84.         while j < TAMANNO_TABLERO and board[i][j] == board[i][0]:
  85.             j = j + 1
  86.             # print('ejecutandose el ciclo, parcial = ', j)
  87.         print('Fila ', i, ': ', j)
  88.         if j == TAMANNO_TABLERO:
  89.             if board[i][0] == 'x':
  90.                 estatus_partida = 'Ganó la máquina.  :-('
  91.             else:
  92.                 estatus_partida = '¡Ganaste!  :-)'
  93.         i = i + 1
  94.  
  95.  
  96. #######################################################################
  97.  
  98. def check_status_columns(board):
  99.     global estatus_partida
  100.     i = 0 # contador de columnas
  101.  
  102.     while i < TAMANNO_TABLERO and estatus_partida == 'El juego continúa.':
  103.         j = 1
  104.         while j < TAMANNO_TABLERO and board[j][i] == board[0][i]:
  105.             j = j + 1
  106.             # print('ejecutandose el ciclo, parcial = ', j)
  107.         print('Columna ', i, ': ', j)
  108.         if j == TAMANNO_TABLERO:
  109.             if board[0][i] == 'x':
  110.                 estatus_partida = 'Ganó la máquina.  :-('
  111.             else:
  112.                 estatus_partida = '¡Ganaste!  :-)'
  113.         i = i + 1
  114.  
  115.  
  116. #######################################################################
  117.  
  118. def check_status_main_diagonal(board):
  119.     global estatus_partida
  120.     i = 0 # contador de filas/columnas
  121.  
  122.     while i < TAMANNO_TABLERO and board[i][i] == board[0][0] and estatus_partida == 'El juego continúa.':
  123.         i = i + 1
  124.             # print('ejecutandose el ciclo, parcial = ', j)
  125.     print('Diagonal principal : ', i)
  126.     if i == TAMANNO_TABLERO:
  127.         if board[0][0] == 'x':
  128.             estatus_partida = 'Ganó la máquina.  :-('
  129.         else:
  130.             estatus_partida = '¡Ganaste!  :-)'
  131.  
  132.  
  133. #######################################################################
  134.  
  135. def check_status_secondary_diagonal(board):
  136.     global estatus_partida
  137.     i = 0 # contador de filas/columnas
  138.  
  139.     while i < TAMANNO_TABLERO and board[i][-i+2] == board[0][2] and estatus_partida == 'El juego continúa.':
  140.         i = i + 1
  141.             # print('ejecutandose el ciclo, parcial = ', j)
  142.     print('Diagonal secundaria : ', i)
  143.     if i == TAMANNO_TABLERO:
  144.         if board[0][2] == 'x':
  145.             estatus_partida = 'Ganó la máquina.  :-('
  146.         else:
  147.             estatus_partida = '¡Ganaste!  :-)'
  148.  
  149.  
  150.  
  151. #######################################################################
  152.  
  153. def victory_for(board):
  154.     # La función analiza el estatus del tablero para verificar si
  155.     # el jugador que utiliza las 'O's o las 'X's ha ganado el juego.
  156.     global estatus_partida
  157.     #global jugada
  158.  
  159.     if (jugada >= 3):
  160.         check_status_rows(board) # revision de filas
  161.         if estatus_partida == 'El juego continúa.':
  162.             check_status_columns(board) # revision de columnas
  163.             if estatus_partida == 'El juego continúa.':
  164.                 check_status_main_diagonal(board) # revision de diagonal principal
  165.                 if estatus_partida == 'El juego continúa.':
  166.                     check_status_secondary_diagonal(board) # revision de diagonal secundaria
  167.  
  168.  
  169.     if casillas_vacias == [] and estatus_partida == 'El juego continúa.':
  170.         estatus_partida = 'Empate'
  171.  
  172.     print(estatus_partida)
  173.  
  174.  
  175. #######################################################################
  176. #######################################################################
  177.  
  178. # Inicialiación del tablero
  179. # TAMANNO_TABLERO: Final = 3
  180. TAMANNO_TABLERO = 3
  181. partida = 1
  182. estatus_partida = 'El juego continúa.'
  183. ronda = 1
  184. jugada = 1
  185.  
  186. tablero = [[0 for i in range(TAMANNO_TABLERO)] for j in range(TAMANNO_TABLERO)]
  187. print(tablero, len(tablero))
  188. casillas_vacias = list(range(TAMANNO_TABLERO**2))
  189. casillas_vacias[:]=[i+1 for i in casillas_vacias]
  190. print_empty()
  191.  
  192. casilla = 0
  193.  
  194. for i in range(TAMANNO_TABLERO):
  195.     for j in range(TAMANNO_TABLERO):
  196.         casilla += 1
  197.         tablero[i][j] = casilla
  198.  
  199. print_round()
  200. # Jugada inicial de la máquina
  201. print('Jugada: ', jugada)
  202. print('La máquina jugó:  5')
  203. tablero[1][1] = 'x'
  204. casillas_vacias.remove(5)
  205. display_board(tablero)
  206.  
  207. while estatus_partida == 'El juego continúa.':
  208.     jugada = jugada + 1
  209.     print('Jugada: ', jugada)
  210.     enter_move(tablero)
  211.     display_board(tablero)
  212.     victory_for(tablero)
  213.  
  214.     if estatus_partida == 'El juego continúa.':
  215.         ronda += 1
  216.         jugada = jugada + 1
  217.         print('Jugada: ', jugada)
  218.         print_round()
  219.         machine_move(tablero)
  220.         display_board(tablero)
  221.         victory_for(tablero)
Tags: python
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement