Ejercicio: 1Eva_IIT2005_T4 Juego escaleras y serpientes
Propuesta de solución: python_pdf, matlab_pdf
En un primer bosquejo, no se considera el lanzar la moneda para ver cuál jugador inicia, semejante al ajedrez en que las fichas blancas salen primero sin considerar el nombre del jugador.
Para determinar las posiciones de las fichas en el tablero, se usarán acumuladores para cada jugador A y B, usando como variables “fichaa” y “fichab”.
# jugador A dadoa = int(rnd.random()*6)+1 fichaa = fichaa + dadoa
Serán necesarios otras variables como el contador para el turno, cada jugador dispondrá de una variable generada de forma aleatoria que simula un dado de 6 caras.
Se lanza el dado para el jugador A, se avanza acumulando conforme a los puntos del dado, se valida el premio o castigo para luego repetir el proceso para el jugador B, repitiendo el proceso hasta que alguna ficha se ubique o pase la casilla de “llegada”.
Terminado el proceso anterior, se determina cuál jugador ganó, observe que se supone que gana tiene inicialmente el valor de 0, para tener la opción de registrar un empate.
Al final se muestran los resultados del juego simulado.
Tarea: Resolver con el lanzamiento de la moneda para ver cuál inicia.
Primero se presenta la solución usando lazo “Mientras-Repita” por compatibilidad con Matlab, luego se muestra la versión con el lazo “Repita-Hasta” que se puede escribir en los lenguajes de programación.
Instrucciones en Python. Versión Lazo: Mientras-Repita
# ICM00794-Fundamentos de Computación - FCNM-ESPOL # 1Eva_IIT2005_T4 Juego escaleras y serpientes # Propuesta de solución: edelros@espol.edu.ec import random as rnd # INGRESO # Sortear quién empieza # PROCEDIMIENTO llegada = 64 fichaa = 0 fichab = 0 turno = 0 while (fichaa<llegada or fichab<llegada): # jugador A dadoa = int(rnd.random()*6)+1 fichaa = fichaa + dadoa if (fichaa==4 or fichaa==9 or fichaa==29 or fichaa==34 or fichaa==46): fichaa = fichaa + 3 if (fichaa==8 or fichaa==19 or fichaa==38 or fichaa==50 or fichaa==60): fichaa = fichaa - 3 #jugador B dadob = int(rnd.random()*6)+1 fichab = fichab + dadob if (fichab==4 or fichab==9 or fichab==29 or fichab==34 or fichab==46): fichab = fichab + 3 if (fichab==8 or fichab==19 or fichab==38 or fichab==50 or fichab==60): fichab = fichab - 3 turno = turno + 1 # Revisa ganador gana = 0 if fichaa > fichab: gana = 1 if fichab > fichaa: gana = 2 # SALIDA print('gana el jugador: ') print(gana) print('turnos jugados:') print(turno)
Ejecución del algoritmo
gana el jugador: 2 turnos jugados: 16 >>> gana el jugador: 2 turnos jugados: 16 >>>
Instrucciones en Python. Versión lazo: Repita-Hasta
# ICM00794-Fundamentos de Computación - FCNM-ESPOL # 1Eva_IIT2005_T4 Juego escaleras y serpientes # Propuesta de solución. edelros@espol.edu.ec import random as rnd # INGRESO # Sortear quién empieza # PROCEDIMIENTO llegada = 64 fichaa = 0 fichab = 0 turno = 0 while not(fichaa>=llegada or fichab>=llegada): # jugador A dadoa = int(rnd.random()*6)+1 fichaa = fichaa+dadoa if (fichaa==4 or fichaa==9 or fichaa==29 or fichaa==34 or fichaa==46): fichaa = fichaa+3 if (fichaa==8 or fichaa==19 or fichaa==38 or fichaa==50 or fichaa==60): fichaa = fichaa - 3 #jugador B dadob = int(rnd.random()*6)+1 fichab = fichab + dadob if (fichab==4 or fichab==9 or fichab==29 or fichab==34 or fichab==46): fichab = fichab + 3 if (fichab==8 or fichab==19 or fichab==38 or fichab==50 or fichab==60): fichab = fichab - 3 turno = turno+1 gana = 0 if fichaa>fichab: gana = 1 if fichab>fichaa: gana = 2 # SALIDA print('gana el jugador: ') print(gana) print('turnos jugados:') print(turno)
Diagrama de Flujo