Você está na página 1de 4

Escuela Superior Politécnica del Litoral

Fundamentos de Programación
Proyecto del Primer Parcial
Parte 2
Fecha de Entrega: Domingo 24, 23:55 pm

Objetivos:

El objetivo del proyecto es darle a usted más experiencia en el manejo de estructuras de


control, listas y el manejo de la librería Numpy.

Descripción:

Unos fanáticos de Super Smash Bros le ha pedido a usted que realice un simulador del juego
Super Smash Bros con el propósito de analizar el rendimiento de los personajes del juego. En
su juego usted debe simular las batallas de los personajes basados en las estadísticas de cada
uno.

Las personas que lo contratan a usted le dan un archivo llamado personajes_info.txt que
tienen la información de los personajes del juego. Cada línea del archivo contiene información
de un personaje, con los campos en la línea separados por comas (,). Los campos en una línea
son:

name,counter,sprintSpeed,reflector,fallSpeed,walkSpeed,airSpeed,projectile,weight ,attack_power,image

Parte 1

Ingreso y edición de datos, consultas y simulador de batallas

Parte 2

Las personas que lo contrataron le piden a usted que agregue dos nuevas opciones al proyecto que
les permita consultar información del porcentaje de uso y porcentaje de victoria en batallas de los
personajes de smash en los torneos que son organizados por ellos. Para hacer esto los contratantes
les entregan un archivo llamado batallas_info.txt que tiene el número de batallas ganadas y perdidas
contra otros personajes.

nombre|rival;num_victorias;num_derrotas|rival;num_victorias;num_ derrotas|….

Donde:
Nombre del campo Descripción
nombre Es el nombre del personaje a quien corresponde la información en la
línea
rival Nombre del rival
num_victorias Numero de partidas ganadas contra ese rival
num_perdidas Numero de partidas perdidas contra ese rival

Ejemplo de una línea:

Diddy Kong|Dark Pit;11;4|Game and Watch;71;29|Zelda;16;7|Robin;84;41|…

La información de la línea corresponde a Diddy Kong.


 Dark Pit;11;4 -> Diddy Kong ha tenido 11 victorias y 4 derrotas contra Dark Pit
 Game and Watch;71;29 -> Diddy Kong ha tenido 71 victorias y 29 derrotas contra Game and
Watch
 Y así con los demás elementos en la línea

Para leer la información en batallas_info.txt y crear una lista de cadena de caracteres llamada
batallas, donde cada elemento es una línea del archivo use el siguiente código

#leer la informacion de las batallas de batallas_datos.txt


f = open("batallas_info.txt")
batallas = []
for linea in f:
batallas.append(linea.strip("\n"))
f.close()

Después de leer la información en batallas_info.txt usted debe crear un arreglo que tenga la
información de las victorias y las derrotas de los personajes.

Bowser Dedede Sonic … Luigi Dr. Mario


Bowser 15 14 35 … 13 5
Dedede 13 20 29 … 8 3
Sonic 46 24 83 … 86 4
… … … … … .. …
Luigi 15 11 64 … 55 5
Dr. Mario 1 5 2 … 2 16
arregloBatallas

En la arregloBatallas podemos ver que Bowser le ha ganado 15 veces a Bowser, 14 veces a


Dedede, 35 veces a Sonic, 13 veces a Luigi, 5 veces a Dr. Mario (los puntos representan que
hay más personajes).

De la arregloBatallas también podemos observar que Bowser ha perdido 15 veces contra


Bowser, 13 veces contra Dedede, 46 veces contra Sonic, 15 veces contra Luigi y una vez contra
Dr. Mario.

A las 4 opciones del menú que usted creó en la primera parte debe agregarle las siguientes
opciones a continuación:

Opción 5.- Porcentaje de Victorias y Derrotas

Usando la información en el arreglo de batallas debe mostrar


 El número total de batallas
 El número de personajes.
 El personaje más y menos popular
 El número de batallas, el porcentaje de uso y el porcentaje de victorias de los todos
personajes en orden alfabético por el nombre del personaje
Notas:
 El porcentaje de uso es el número de batallas en el que ha sido usado el personaje
dividido para el número total de batallas registradas.
 El porcentaje de victorias es el número de victorias del personaje divido para el
número de veces que ha sido usado el personaje en batalla.
 Para ordenar los datos puede crear un arreglo con los nombres de los personajes
y luego usar argsort() para obtener los índices ordenados por orden alfabético.

Numero batallas: 144308.0


Mas popular: Diddy Kong con 6.75%
Menos popular: Dark Pit con 0.25%
Mas victorias: Dr. Mario con 59.08%
Menos victorias: Diddy Kong con 44.83%
Nombre Porc. Uso Porc. Victorias
Bowser 1.44205449455 50.7928880346
Bowser Jr. 0.840563239737 51.7724649629
Captain Falcon 4.04967153588 50.3593429158
….

6. Estadística de Personaje
El usuario ingresa el nombre de un personaje y a continuación se muestra el número de
batallas del personaje, el porcentaje de uso del personaje, el porcentaje de victorias del
personaje y los mejores oponentes. Los mejores oponentes son los personajes cuyo que
tienen un porcentaje de victoria sobre el personaje ingresado mayor al 70%.

Ingrese nombre del personaje: Bowser


Numero batallas: 2081.0
Por Uso: 1.44%
Por Promedio: 50.79%
Nombre Rival Porc Victoria Victorias - Derrotas
Mario 60.74 82.0 - 53.0
Lucina 62.96 17.0 - 10.0
Kirby 75.0 9.0 - 3.0
Pikachu 63.63 14.0 - 8.0
….

Rúbrica
El proyecto corresponde la 20% de su nota teórica del primer parcial.
Parte 1 – 15 puntos
Parte 2 – 5 puntos

Fecha de entrega
Parte 1 – martes 19 de junio, 23:55 pm
Parte 2 – domingo 24 de junio, 23:55 pm

Entregables
 Código fuente del proyecto (Parte 1 y Parte 2) en .zip con el nombre proyecto1_grupoN.zip,
donde N es el número de grupo que fue asignado.
 Dentro de .zip también debe estar un archivo de texto con nombre README donde explica
cualquier consideración especial del proyecto, alguna asunción que haya hecho.

Consideraciones Generales
 El proyecto debe ser realizado en grupo de 2 estudiantes. Si se detecta copia parcial o total
del código del proyecto todos los grupos involucrados tendrán 0.
 Si el programa se cae tendrá 1 punto menos por cada caída hasta un máximo de 3 puntos
 Si el programa no está correctamente comentado tendrá hasta 2 puntos menos.
Correctamente comentado no significa poner un comentario en cada línea de código, pero si
en secciones nuevas de código o parte de código que necesita explicación. Use su criterio.
 Todas las opciones del menú deben tener la opción de regresar al menú anterior.
 Se valorará la presentación del proyecto y su interacción. Revisar
https://docs.python.org/3/library/string.html#formatstrings

Você também pode gostar