# Algoritmo para el juego Cuatro en línea
def inicializar_tablero(filas, columnas):
return [[' ' for _ in range(columnas)] for _ in range(filas)]
def imprimir_tablero(tablero):
for fila in tablero:
print('|'.join(fila))
print('-' * (4 * len(fila) - 1))
def realizar_movimiento(tablero, columna, jugador):
for fila in reversed(tablero):
if fila[columna] == ' ':
fila[columna] = jugador
return True
return False
def verificar_ganador(tablero, jugador):
# Verificar horizontalmente
for fila in tablero:
if ' '.join(fila).count(jugador * 4) > 0:
return True
# Verificar verticalmente
for col in range(len(tablero[0])):
columna = ''.join(tablero[fila][col] for fila in range(len(tablero)))
if columna.count(jugador * 4) > 0:
return True
# Verificar diagonalmente (de izquierda a derecha)
for i in range(len(tablero) - 3):
for j in range(len(tablero[0]) - 3):
diagonal = ''.join(tablero[i + k][j + k] for k in range(4))
if diagonal.count(jugador * 4) > 0:
return True
# Verificar diagonalmente (de derecha a izquierda)
for i in range(len(tablero) - 3):
for j in range(3, len(tablero[0])):
diagonal = ''.join(tablero[i + k][j - k] for k in range(4))
if diagonal.count(jugador * 4) > 0:
return True
return False
# Ejemplo de uso del algoritmo
filas = 6
columnas = 7
tablero = inicializar_tablero(filas, columnas)
jugadores = ['X', 'O']
turno = 0
while True:
imprimir_tablero(tablero)
columna = int(input(f'Jugador {jugadores[turno]}, elige una columna (0-{columnas-1}): '))
if 0 <= columna < columnas:
if realizar_movimiento(tablero, columna, jugadores[turno]):
if verificar_ganador(tablero, jugadores[turno]):
imprimir_tablero(tablero)
print(f'¡Jugador {jugadores[turno]} ha ganado!')
break
elif ' ' not in tablero[0]:
imprimir_tablero(tablero)
print('¡El juego ha terminado en empate!')
break
else:
turno = (turno + 1) % 2
else:
print('La columna está llena. Elige otra columna.')
else:
print('Columna inválida. Elige una columna dentro del rango.')