Está en la página 1de 5

FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN

FUNDAMENTOS DE PROGRAMACIN

PROYECTO SEGUNDO PARCIAL

Instrucciones:
El desarrollo del proyecto ser realizado de forma GRUPAL (2 Estudiantes por grupo mximo).
Implementacin deber ser realizada utilizando Python 3.
Comentar el cdigo.
Definir nombres apropiados a las variables a utilizar en su programa.
Realizar validaciones de los datos ingresados por teclado.
Recuerde si la tarea es entregada un minuto despus de la fecha de entrega, tendr la mitad de la
nota. Por lo tanto, suba con anticipacin su deber.
Al subir su avance del proyecto al SIDWEB VERIFICAR que este se haya adjuntado correctamente, en
caso de presentarse algn problema durante el envo, reportarlo inmediatamente, y enviarlo como
mensaje en la seccin de Verificar Envo Tarea.
La verificacin de que la tarea fue adjuntada correctamente es COMPLETA responsabilidad de los
alumnos y no se permitirn entregas en fechas posteriores.
El avance ser evaluado por un sistema anti-plagios, por lo tanto, en caso de detectarse copia
tendrn la calificacin de CERO para todos los involucrados. Adems, de las sanciones especificadas
en el reglamento de la ESPOL.
Se proveern dos archivos para la ejecucin del avance, los cuales debern ser ubicados de acuerdo
a lo indicado ms adelante en este documento.
Entregables:
Implementacin del proyecto solicitado en un archivo .py. El proyecto debe ejecutarse SIN ERRORES.
Validacin de los datos de entrada del programa.
Comentar el cdigo correctamente. Dentro del archivo .py se debe indicar al inicio del archivo como
comentarios, los autores del proyecto, y una descripcin de lo que hace su cdigo.
Descripcin del Problema
La empresa Niantic INC desarrolladora de la aplicacin Pokemon GO requiere desarrollar la versin para
computadoras de su popular juego, por lo tanto, le solicita crear un prototipo del juego con la funcionalidad
que se detallar ms adelante. Las batallas sern realizadas entre los usuarios registrados en el juego contra
la computadora (Ash Ketchum).

POKEMONS
La empresa le proveer la un archivo(pokemons.csv) con TODOS los Pokemons con el siguiente formato:

Cdigo, Nombre, Tipo1, Tipo2, Total, Sanacin, Ataque, Defensa,Ataque Especial,Defensa Especial contra Ataques,
Rapidez, Generacion, Legendario

Por ejemplo:
1,Bulbasaur,Grass,Poison,318,45,49,49,65,65,45,1,False
2,Ivysaur,Grass,Poison,405,60,62,63,80,80,60,1,False
3,Venusaur,Grass,Poison,525,80,82,83,100,100,80,1,False
3,VenusaurMega Venusaur,Grass,Poison,625,80,100,123,122,120,80,1,False

Su Programa deber definir un mtodo que reciba como parmetro la lista de pokemons que han sido leidos
desde el archive y devuelva un diccionario de la siguiente forma:

{1: {'Bulbasaur': {'velocidad': 45, 'defensa_esp': 65, 'defensa': 49, 'hp': 45, 'total':
318, 'ataque': 49, 'legendario': False, 'generacion': 1, 'tipo1': 'Grass', 'ataque_esp':
65, 'tipo2': 'Poison'}},

3: {'VenusaurMega Venusaur': {'velocidad': 80, 'defensa_esp': 120, 'defensa': 123, 'hp':


80, 'total': 625, 'ataque': 100, 'legendario': False, 'generacion': 1, 'tipo1': 'Grass',
'ataque_esp': 122, 'tipo2': 'Poison'},
'Venusaur': {'velocidad': 80, 'defensa_esp': 100, 'defensa': 83, 'hp':
80, 'total': 525, 'ataque': 82, 'legendario': False, 'generacion': 1, 'tipo1': 'Grass',
'ataque_esp': 100, 'tipo2': 'Poison'}},
4: {'Charmander': {'velocidad': 65, 'defensa_esp': 50, 'defensa': 43, 'hp': 39, 'total':
309, 'ataque': 52, 'legendario': False, 'generacion': 1, 'tipo1': 'Fire', 'ataque_esp':
60, 'tipo2': ''}},
.....
.....
}

Donde la clave es el Cdigo del pokemon como entero y el valor es otro diccionario cuya clave es el nombre
del pkemon y su valor es un diccionario con los datos de restantes del pokemon con las claves indicadas en
el ejemplo.

JUGADORES

Su programa utilizar un archivo (jugadores.csv) donde guardar informacin de los jugadores en el siguiente
formato:
Nombre Usuario,Usuario,Batallas Jugadas,Batallas Ganadas,Batallas Empatadas,Batallas Perdidas, Puntaje
Total,pokemon1-cantidad|pokemon2-cantidad||pokemonN-candidadN

Por defecto, su archivo tendr el juego tendr un jugador pre-configurado:


Ash Ketchum,aketchum,0,0,0,0,0,charizard-1|charmander-1|pikachu-1
Su Programa deber definir un mtodo que reciba como parmetro la lista con la informacin de los jugadores
que han sido leidos desde el archivo y devuelva un diccionario de la siguiente forma:

{'aketchum':
{'bj': 0, 'be': 0, 'pokemons': {'pikachu': 1, 'charizard': 1,
'charmander': 1}, 'bg': 0, 'pt': 0, 'nombre': 'Ash Ketchum', 'bp': 0}

..

Donde la clave ser el usuario y el valor un diccionario con la informacin respect a las batallas y los pokemos
que tiene el jugador. En lo que respecta los pokemons este ser un diccionario cuya clave ser la palabra
pokemons y el valor un diccionario con los nombres de los pokemons como claves y como valor la cantidad
de pokemons que tiene el jugador.

El programa deber mostrar el siguiente men:


1. Pokeinfo
2. Mi Pokedex
3. Pokebatallas
4. Estadsticas Pokemons
5. Estadsticas Jugadores
6. Salir

Detalle Jugadores
Para acceder a esta opcin el usuario deber elegir la opcin 2 del men.

Esta opcin solicita el ingreso por teclado del usuario de un jugador. Si el usuario existe se mostrar la
informacin de la siguiente forma.

Si el usuario no existe, se consultar al usuario si desea aadir el usuario a la lista de jugadores y el usuario
decide agregarlo entonces se solicitar el ingreso del nombre del usuario y deber elegir 3 pokemons del
listado provisto, la eleccin la har ingresando el nombre o el cdigo del pokemon, finalmente se mostrar el
resumen de la informacin del nuevo usuario:
Tu PokeInfo es:
Nombre: Jacinto Idrovo
Usuario: jidrovo
BJ:0 BG:0 BE:0 BP:0 PT:0
Pokemones:
VENUSAUR : 1
CHARIZARD : 1
WARTORTLE : 1

Al finalizar la ejecucin de la opcin se consultar al usuario si desea regresar al men principal. Si la


respuesta es S entonces se mostrar el men principal, caso contrario se ejecutar nuevamente la opcin 2.

La bsqueda de un jugador se realizar sobre el diccionario de jugadores creado al inicio del programa.

Cuando se agregue un nuevo usuario este deber aadirse al diccionario y tambin agregarse a la lista.

Pokebatallas
Para acceder a esta opcin el usuario deber elegir la opcin 3 del men.

Una pokebatalla consta de 3 rondas por lo tanto es necesario que el jugador tenga ms de 3 pokemones a su
haber. El juego seleccionar al azar 3 pokemones de la lista de pokemones disponibles de cada jugador (3 de
usuario y 3 de Ash) e iniciar la batalla. Las batallas se inician de la siguiente forma:

La batalla se realiza entre el primer pokemon de la lista del jugador vs el primero pokemon de la lista
de Ash
El pokemon que inicia el ataque es quien tiene mayor rapidez
La batalla se inicia cuando el jugador dice yo te elijo ms el nombre del pokemon
Finalizada la batalla se muestra el usuario y pokemn que gan la batalla, el calcul del dao
realizado por cada pokemon se realizar de la siguiente manera.

( + )
2.4
( + )
= +2
50
Una vez calculado el dao este se verificar contra el promedio de defensa ((Defensa + Defensa
Especial) /2) del pokemon que recibe el ataque, esto le permitir conocer quin es el ganador.
Usted deber llevar una cuenta de las batallas ganadas por cada contrincante. Si existe un empate al
final el encuentro, se considera que nadie gan, por lo tanto, no se contar esa batalla.
Una vez finalizada la ronda se verifica que jugador gan ms encuentros y se le dar 5 puntos, los
cuales debern ser reflejados en la informacin del jugador cuando se ingrese a la opcin 2. Si hubo
un empate se le darn 2,5 puntos a cada jugador.
As mismo se deber incrementar el indicador de batallas jugadas, ganadas, empatadas y perdidas
dependiendo del caso de cada jugador y actualizar dicha informacin en el diccionario y en el archivo
de jugadores.
Al jugador ganador se le dar un como premio un pokemon similar a uno de los que tenga su
contrincante (OJO el pokemon no ser removido de la lista del contrincante), para esto, el programa
deber seleccionar al azar un pokemon y lo aadir en la informacin del jugador cuando se consulte
la opcin 2, si el pokemon ya existi en el Pokedex del jugador su programa deber incrementar el
contador. Actualizar dicha informacin en el diccionario y en el archivo de jugadores.

Puntaje:
Item Peso(puntos)
Lectura de archivos Pokemons y Jugadores 1
Actualizacin de archivo jugadores 1
Opcin 2 1.25
Opcin 3 2
Total 5.25 puntos

Penalizaciones:
Item Peso(puntos)
Errores de ejecucin -30%
Uso de funcionalidad NO contemplada en las unidades de -50%
la 1 a la 8. (Funcionalidad no vista en clases)
Cdigo sin documentar, nombres de variables no -5% por cada item
adecuadas

También podría gustarte