Está en la página 1de 3

Tarea U03

Debe implementar las siguientes funciones dentro de un mismo módulo llamado


mis_funciones.py y el programa principal en otro script llamado principal.py. Ambos archivos
debe comprimirlos un solo archivo ZIP o RAR y entregarlo por Sidweb.

Programa principal. Desarrolle un programa principal que pida al usuario un valor N entre
8 y 20 (ambos incluidos) y que permita generar una matriz de NxN codificada en una cadena.
Cada fila de la matriz debe contener N/3 de enemigos (representados por números entre 1 y 4) y
el resto deben ser ceros, y todas las filas debe estar unidas por punto y coma. Luego muestre
dicha matriz en forma de tablero. Primero implemente todas las funciones y al final haga el
programa principal.

Funciones que debe desarrollar en mis_funciones.py:

1. def menu() Debe mostrar el siguiente menú, validar y retornar una opción escogida
por el usuario. Es decir, si el jugador escoge una opción incorrecta se la debe validar y
seguir pidiendo que ingrese una opción hasta que sea válida. Las opciones disponibles
son:
1. Iniciar partida
2. Ver estadísticas
3. Mostrar última partida
4. Salir

2. def mostrar_indice(n). Recibe un número entero positivo n, e imprime una cadena


donde se muestra el índice 1 y el n, pero entre ambos números hay una secuencia de
signos de suma(+) en lugar de los números de la secuencia, y separados por guiones. Por
ejemplo, si recibe 5 mostraría
1-+-+-+-5
Si recibe 12, mostraría
1-+-+-+-+-+-+-+-+-+-+12

3. def mostrar_fila(fila). Recibe la cadena fila, que está llena de N números


naturales menores a 4, separados por guiones, donde N es un valor entre 10 y 15. La
función debe mostrar únicamente los dígitos separados por espacios y agregarle una
barra vertical al inicio y al final de la fila. Por ejemplo:
tablero = "3-0-1-0-0-0-3-0-0-0-0-1"
Fila mostrada
| 3 0 1 0 0 0 3 0 0 0 0 1 |

4. def mostrar_tablero(tablero). Recibe la cadena tablero y debe imprimirlo como


se muestra a continuación. El tablero es una cadena de caracteres y está representado
por filas de números separadas por punto y coma. Debe llamar a la función mostrar_fila
para mostrar cada fila, pero además debe agregar los bordes superior e inferior como los
índices de las columnas del tablero (función mostrar_indice). El tablero representa una
matriz cuadrada de dimensiones NxN, donde N es un valor entre 10 y 15, es decir; si la
fila tiene 11 dígitos, entonces también tendrá 11 filas el tablero. Se recomienda utilizar
split() obtener N y usar for. Por ejemplo:
tablero = "3-0-1-0-0-0-3-0-0-0-0-1;0-1-0-0-0-3-0-0-2-2-0-0;0-0-0-0-
0-0-1-3-0-0-3-0;0-0-0-0-2-3-0-0-1-0-0-0;0-0-0-0-0-2-1-2-3-0-0-0;0-0-
0-1-1-3-0-0-0-1-0-0;0-3-0-2-0-0-0-3-0-3-0-0;0-0-0-0-3-0-1-2-0-0-0-
0;0-0-3-0-1-0-0-1-0-0-0-0;0-0-0-0-0-1-3-0-1-0-1-0;0-3-0-0-2-0-0-2-0-
1-0-0;0-0-3-0-1-0-0-1-0-2-0-0"
Tablero mostrado:
___________________________
| 3 0 1 0 0 0 3 0 0 0 0 1 |
| 0 1 0 0 0 3 0 0 2 2 0 0 |
| 0 0 0 0 0 0 1 3 0 0 3 0 |
| 0 0 0 0 2 3 0 0 1 0 0 0 |
| 0 0 0 0 0 2 1 2 3 0 0 0 |
| 0 0 0 1 1 3 0 0 0 1 0 0 |
| 0 3 0 2 0 0 0 3 0 3 0 0 |
| 0 0 0 0 3 0 1 2 0 0 0 0 |
| 0 0 3 0 1 0 0 1 0 0 0 0 |
| 0 0 0 0 0 1 3 0 1 0 1 0 |
| 0 3 0 0 2 0 0 2 0 1 0 0 |
| 0 0 3 0 1 0 0 1 0 2 0 0 |
---------------------------
1-+-+-+-+-+-+-+-+-+-+12

5. def generar_enemigos(N). La función debe generar N/3 números entre 1 y 4 (ambos


incluidos) y devolverlos en forma de lista de str. Por ejemplo: N
N = 12
['3', '1', '2', '4']
N = 10
['2', '2', '1']

6. def generar_linea(N). La función debe generar y devolver una nueva fila del tablero
en forma de cadena. La cadena debe estar rellena de ceros y un tercio deben ser
enemigos, utilice la función generar_enemigos(N). Los dígitos de la cadena deben estar
separados por guiones. Por ejemplo, si N=12 se obtendrá “ 0-0-3-0-1-0-0-1-0-2-0-
0” con 4 enemigos. Las posiciones de los enemigos deben ser aleatorias y distintas. Los
valores que pueden tomar los enemigos van desde 1 hasta 4. Se recomienda utilizar la
función shuffle() con listas y luego join().

7. def ingresar_valor(minimo, maximo). Esta función debe tener como valores


mínimo y máximo el 10 y el 15 de forma predeterminada. Además, debe pedir al usuario
que ingrese un valor en el rango indicado, ambos límites incluidos, y debe validar que lo
que ingrese sea únicamente números entre esos valores, caso contrario debe seguir
pidiendo al usuario que ingrese un número en ese rango. Se recomienda utilizar while.

También podría gustarte