Convierte a decimal el número ingresado de base indicada aplicando algorítmos de conversión. Para la conversión usaremos algorítmos basados en poténcias, como si se hiciera el cálculo a mano.
- num (
str): Número a convertir. - base (
str): Clave de la base numérica en el diccionariobases. Debe ser una de las siguientes:'BIN'para números binarios.'OCT'para números octales.'HEX'para números hexadecimales.
int: El número de entrada convertido a decimal.
Se divide el número decimal entre 2 repetidamente, guardando el resto en cada paso. Luego, se leen los restos en orden lifo, formando el número binario.
Ejemplo:
13 → 13 ÷ 2 = 6 resto 1
6 ÷ 2 = 3 resto 0
3 ÷ 2 = 1 resto 1
1 ÷ 2 = 0 resto 1 → Resultado: 1101
int: Número decimal a convertir.
str: Representación binaria del número.
Se divide el número decimal entre 8 repetidamente, guardando los restos. Al leer los restos en orden inverso se obtiene el número en base 8 (octal).
Ejemplo:
78 → 78 ÷ 8 = 9 resto 6
9 ÷ 8 = 1 resto 1
1 ÷ 8 = 0 resto 1 → Resultado: 116
int: Número decimal a convertir.
str: Representación octal del número.
Se divide el número decimal entre 16 repetidamente, y se toma el resto. Ese resto se traduce a un dígito hexadecimal (0–9, A–F). Finalmente, se invierte el orden de los dígitos obtenidos para formar el resultado final.
Ejemplo:
254 → 254 ÷ 16 = 15 resto 14 → 'E'
15 ÷ 16 = 0 resto 15 → 'F' → Resultado: 'FE'
int: Número decimal a convertir.
str: Representación hexadecimal del número.
Contiene la información para validar y convertir números en diferentes bases.
-
BIN- key:
'BIN' - name:
'Binario' - regex:
r'^[01]+$'(dígitos 0 y 1)
- key:
-
OCT- key:
'OCT' - name:
'Octal' - regex:
r'^[0-7]+$'(dígitos del 0 al 7)
- key:
-
HEX- key:
'HEX' - name:
'Hexadecimal' - regex:
r'^[0-9A-Fa-f]+$'(dígitos 0-9 y letras A-F)
- key:
Define las direcciones válidas en las que Snake puede moverse dentro del tablero, asociando cada tecla de control con su descripción textual.
'w':'Arriba'– Movimiento hacia arriba (fila anterior).'s':'Abajo'– Movimiento hacia abajo (fila siguiente).'a':'Izquierda'– Movimiento hacia la izquierda (columna anterior).'d':'Derecha'– Movimiento hacia la derecha (columna siguiente).
Inicializa el tablero del juego.
largo(int): Número de columnas del tablero.guardias(int): Número de guardias a colocar en el tablero.
self.largo: Almacena el largo del tablero.self.guardias: Número de guardias a colocar.self.tablero: Matriz que representa el tablero.self.snake_pos: Posición inicial de la Snake.self.objetivo_pos: Posición del objetivo.self.base: Base del tablero.
Genera el estado inicial del tablero.
- Coloca a Snake (
'S') en la posición (5, 0). - Coloca el objetivo (
'*') en una posición aleatoria en la última columna. - Coloca los guardias (
'!') en posiciones aleatorias del tablero.
Mueve a Snake ('S') en una dirección específica, una cantidad determinada de pasos, siempre que no se salga del tablero.
direccion(str): Dirección del movimiento. Debe ser una de las siguientes:'w': Mover arriba (norte).'s': Mover abajo (sur).'a': Mover a la izquierda (oeste).'d': Mover a la derecha (este).
pasos(int): Cantidad de celdas a moverse en la dirección indicada.
- Limpia la posición actual de Snake en el tablero.
- Mueve paso a paso en la dirección especificada, sin salirse de los límites del tablero.
- Evalúa en cada paso si snake se encuentra con un elemento interactivo (
!,*).
Actualiza la posición de Snake y la refleja en el tablero.
Muestra el estado actual del tablero por consola, fila por fila.
-
Imprime la matriz del tablero con los siguientes símbolos:
'░': Espacio libre.'S': Snake.'*': Objetivo.'!': Guardia (obstáculo).
Muestra un mensaje de victoria al completar la misión con éxito y termina la ejecución del juego.
- Imprime un arte ASCII celebrando la victoria.
- Muestra un mensaje indicando que la misión fue completada exitosamente.
- Finaliza el programa con
exit(0).
Muestra un mensaje de derrota cuando Snake es detectado por un guardia o falla el hackeo y finaliza el juego.
- Imprime un arte ASCII indicando fallo en la misión.
- Muestra un mensaje de alerta informando que Snake fue detectado.
- Finaliza el programa con
exit(0).
Inicia el entorno, solicita configuraciones iniciales y gestiona el ciclo principal de juego.
- Da la bienvenida al jugador.
- Solicita al usuario el largo del pasillo (número de columnas del tablero).
- Solicita el número de guardias a colocar en el tablero.
- Crea una instancia de Tablero con los parámetros ingresados.
- Entra en un ciclo donde:
- Muestra el estado actual del tablero.
- Solicita al jugador una dirección de movimiento (
w,s,a,d). - Verifica que la dirección sea válida.
- Solicita la cantidad de pasos a moverse, en una base numérica específica (
BIN,OCT, oHEX) definida en el tablero. - Convierte el número ingresado a decimal usando la función
convertir_a_decimal. - Mueve a Snake usando el método
mover_snake.
- Largo del tablero (
entero). - Número de guardias (
entero). - Dirección del movimiento (
w,s,a,do-1para salir). - Número de pasos (en base
BIN,OCToHEX).
- Muestra el estado del tablero tras cada turno.
- Mensajes de error si la entrada no es válida.
- Mensajes de victoria o derrota al finalizar el juego.
- Sebastián Richiardi, Rol; 20203055-2, Paralelo: 201
- Gabriel Alejandro Toro Varela, Rol; 202204557-4, Paralelo: 201