Creemos un juego sencillo de Tic Tac Toe en Python. Le ayudará a desarrollar la lógica del juego y comprender cómo estructurar el código.
Los juegos son uno de los entretenimientos que tienen los humanos. Podemos encontrar diferentes tipos de juegos en la web, móvil, escritorio, etc. No estamos aquí para hacer uno de esos juegos pesados ahora. Vamos a crear un juego de tic-tac-toe CLI usando Python.
Si no está familiarizado con Tic Tac Toe, juegue visualmente aquí comprender. No se preocupe, aunque no lo entienda, lo veremos.
Tic Tac Toe
El tutorial se divide en tres secciones diferentes. En la primera sección, aprenderá a jugar al tic-tac-toe. Después de eso, veremos un algoritmo que nos ayuda a idear la lógica del juego. Finalmente, veremos el código estructurado y su explicación.
Puede omitir la primera sección si ya sabe cómo jugar Tic Tac Toe.
Entonces, sin más preámbulos, profundicemos en nuestra primera sección.
Jugando Tic Tac Toe
Habrá dos jugadores en un juego. Dos carteles representan a cada jugador. Los signos generales utilizados en el juego son X y O. Finalmente, habrá un tablero con 9 cajas.
Vea visualmente el tablero de tic-tac-toe.

La jugabilidad será la siguiente.
- Primero, un usuario colocará su signo en una de las casillas vacías disponibles.
- A continuación, el segundo usuario colocará su inicio de sesión en una de las casillas vacías disponibles.
- El objetivo de los jugadores es colocar sus respectivos letreros completamente en filas, columnas o en diagonal.
- El juego continúa hasta que un jugador gana el juego o termina en un empate al llenar todas las casillas sin una partida ganadora.
Veamos algunos juegos visualmente.

El jugador X gana el juego en el modo de juego anterior. Todos los cuadros se llenan diagonalmente con X señales. Entonces, el jugador respectivo gana el juego.
Hay un total de 8 formas de organizar el mismo signo y ganar el juego. Veamos los 8 arreglos que pueden ganar el juego.

Y finalmente, un empate llena el tablero sin ningún arreglo ganador. Espero que entiendas cómo hacer Tic Tac Toe ahora.
Ahora, es hora de jugar para ti. Tu puedes ir aquí y juegue para comprender completamente el juego. Déjalo si ya lo tienes.
Ahora es el momento de mover la sección de algoritmos.
Algoritmo
Ahora discutiremos el algoritmo para escribir el código. Este algoritmo le ayudará a escribir código en cualquier lenguaje de programación de tu preferencia. Veamos cómo se hace.
- Cree un tablero usando una matriz bidimensional e inicialice cada elemento como vacío.
- Puede representar vacío utilizando cualquier símbolo que desee. Aquí vamos a utilizar un guión.
'-'
.
- Puede representar vacío utilizando cualquier símbolo que desee. Aquí vamos a utilizar un guión.
- Escribe una función para comprobar si el tablero está lleno o no.
- Iterar sobre el tablero y volver
false
si el tablero contiene un letrero vacío o si no regresatrue
.
- Iterar sobre el tablero y volver
- Escribe una función para comprobar si un jugador ha ganado o no.
- Tenemos que comprobar todas las posibilidades que comentamos en el apartado anterior.
- Compruebe todas las filas, columnas y dos diagonales.
- Escriba una función para mostrar el tablero, ya que mostraremos el tablero varias veces a los usuarios mientras juegan.
- Escribe una función para iniciar el juego.
- Seleccione el primer turno del jugador al azar.
- Escribe un bucle infinito que se rompa cuando el juego termina (ya sea ganando o empatando).
- Muestre el tablero al usuario para seleccionar el lugar para el próximo movimiento.
- Pídale al usuario que ingrese el número de fila y columna.
- Actualiza el lugar con el signo del jugador respectivo.
- Compruebe si el jugador actual ganó el juego o no.
- Si el jugador actual ganó el juego, imprima un mensaje ganador y rompa el ciclo infinito.
- A continuación, compruebe si el tablero está lleno o no.
- Si el tablero está lleno, imprima el mensaje de dibujo y rompa el bucle infinito.
- Finalmente, muestre al usuario la vista final del tablero.
Es posible que pueda visualizar lo que está sucediendo. No se preocupe, incluso si no lo entendió completamente. Obtendrá más claridad una vez que vea el código.
Entonces, saltemos a la sección de código. Supongo que tienes Python instalado en su PC para probar el código.
Código
Revisa el siguiente código.
import random
class TicTacToe:
def __init__(self):
self.board = []
def create_board(self):
for i in range(3):
row = []
for j in range(3):
row.append('-')
self.board.append(row)
def get_random_first_player(self):
return random.randint(0, 1)
def fix_spot(self, row, col, player):
self.board[row][col] = player
def is_player_win(self, player):
win = None
n = len(self.board)
# checking rows
for i in range(n):
win = True
for j in range(n):
if self.board[i][j] != player:
win = False
break
if win:
return win
# checking columns
for i in range(n):
win = True
for j in range(n):
if self.board[j][i] != player:
win = False
break
if win:
return win
# checking diagonals
win = True
for i in range(n):
if self.board[i][i] != player:
win = False
break
if win:
return win
win = True
for i in range(n):
if self.board[i][n - 1 - i] != player:
win = False
break
if win:
return win
return False
for row in self.board:
for item in row:
if item == '-':
return False
return True
def is_board_filled(self):
for row in self.board:
for item in row:
if item == '-':
return False
return True
def swap_player_turn(self, player):
return 'X' if player == 'O' else 'O'
def show_board(self):
for row in self.board:
for item in row:
print(item, end=" ")
print()
def start(self):
self.create_board()
player = 'X' if self.get_random_first_player() == 1 else 'O'
while True:
print(f"Player {player} turn")
self.show_board()
# taking user input
row, col = list(
map(int, input("Enter row and column numbers to fix spot: ").split()))
print()
# fixing the spot
self.fix_spot(row - 1, col - 1, player)
# checking whether current player is won or not
if self.is_player_win(player):
print(f"Player {player} wins the game!")
break
# checking whether the game is draw or not
if self.is_board_filled():
print("Match Draw!")
break
# swapping the turn
player = self.swap_player_turn(player)
# showing the final view of board
print()
self.show_board()
# starting the game
tic_tac_toe = TicTacToe()
tic_tac_toe.start()
Consulte la salida de muestra del código.
$ python tic_tac_toe.py
Player X turn
- - -
- - -
- - -
Enter row and column numbers to fix spot: 1 1
Player O turn
X - -
- - -
- - -
Enter row and column numbers to fix spot: 2 1
Player X turn
X - -
O - -
- - -
Enter row and column numbers to fix spot: 1 2
Player O turn
X X -
O - -
- - -
Enter row and column numbers to fix spot: 1 3
Player X turn
X X O
O - -
- - -
Enter row and column numbers to fix spot: 2 2
Player O turn
X X O
O X -
- - -
Enter row and column numbers to fix spot: 3 3
Player X turn
X X O
O X -
- - O
Enter row and column numbers to fix spot: 3 2
Player X wins the game!
X X O
O X -
- X O
Algunos puntos importantes que le ayudarán a comprender la estructura del código.
- Hemos utilizado una clase para tener todos los métodos en un solo lugar. También puede ser fácilmente un paquete reutilizable en algún otro código.
- A continuación, hemos definido diferentes funciones para cada responsabilidad, aunque sea una tarea pequeña. Ayuda a mantener el código con facilidad.
- Los dos enfoques anteriores nos ayudan a actualizar la aplicación sin esfuerzo si queremos actualizar el juego.
No dude en adaptar la estructura y mejorarla en función de su proyecto. La estructuración del código no está limitada.
Palabras finales
¡Viva! 😎 Ha creado un juego completamente desde cero. No es uno de los juegos visuales que jugamos a diario. Pero le ayuda a escribir lógica y mantener una estructura limpia en el código. Siga pautas similares para crear algunos juegos interesantes como este. Puedes encontrar juegos similares si te remontas algunos años a tu infancia.
¡Feliz codificación! 👩💻
A continuación, explore cómo crear juego de adivinanzas de números y Prueba unitaria con el módulo unittest de Python.