Algoritmia - cuatro en linea

 
Vista:

cuatro en linea

Publicado por andres mg (2 intervenciones) el 30/11/2007 15:09:00
saludos! NECESITO UN GRAN FAVOR, SI ALGUIEN ME PUEDE AYUDAR CON EL ALGORITMO DE CUATRO EN LINEA O EL DIAGRAMA DE FLUJO,, LO NECESITO URGENTE, SI ALGUIEN ME PUEDE AYUDAR SE LO AGRADECERIA !!..
ESPERO PRONTA RESPUESTA..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cuatro en línea

Publicado por Alejandro (307 intervenciones) el 11/03/2024 22:48:19
Andrés, a continuación, presento un algoritmo simple para el juego Cuatro en línea. Este algoritmo utiliza una matriz para representar el tablero y permite que dos jugadores se turnen para colocar sus fichas en columnas. El juego verifica si hay un ganador después de cada movimiento.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# 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.')

Este código es un ejemplo simple y no incluye una interfaz gráfica. Los jugadores ingresan las columnas donde quieren colocar sus fichas. El juego termina cuando hay un ganador o cuando el tablero está lleno, y se muestra el resultado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar