3
Algoritmos y Programas – Año 2012 Práctica de Repaso Objetivos: Repasar los conceptos aprendidos en las Prácticas anteriores. 1) Se necesita modelar y desarrollar una solución en Python para un juego de conquista planetaria. Es un juego por turnos y consiste de un conjunto de planetas y de un conjunto de Bots que compiten por los planetas en cada turno. Cada planeta posee flotas que pueden ser utilizadas por el Bot dueño del planeta para conquistar otro. La conquista del planeta se efectiviza al enviar una flota mayor que la que posee el planeta objetivo, esta conquista se puede perder si otro Bot ataca el planeta con la misma mecánica en otro momento. El juego finaliza cuando todos los planetas existentes han sido conquistados por un Bot o cuando sólo quede un Bot activo en el juego. Cada Bot posee una inteligencia artificial (IA) representada a través de la superclase AbstractIA y sus subclases concretas. La clase AbstractIA define un método sin implementacion llamado hacerMov(self, juego) que recibe como parámetro un objeto de tipo GuerraDePlanetas, el cual será invocado por el Bot en cada turno para definir la estrategia de conquista a seguir. El parámetro de tipo GuerraDePlanetas provee distintos métodos para obtener información del contexto del juego y el método ordenarAtaque(planetaOrigen, planetaDestino, nroNaves) para dirigir los ataques (descargue la documentación desde el sitio de la cátedra). Se provee una IA básica por defecto y el objetivo del ejercicio es construir otra mas compleja que derrote a la primera. Su estrategia será utilizada por un Bot mediante una clase llamada MiBot que sea subclase de AbstractIA en un modulo llamado bots. De esta manera deberá dar comportamiento al método hacerMov(self, juego). Finalmente ejecute la clase TestIA que contiene el siguiente método de clase main(), para testear su estrategia: def main(): juego = GuerraDePlanetasLocal() juego.init() juego.jugar(bots.MiBot()) Nota: - Para poder implementar su IA, debe descargar del sitio de la cátedra el archivo juego.zip e incorporarlo a su proyecto. - Antes de comenzar con la estrategia verifique dos cosas: 1. Que haya planetas que no han sido conquistados. 2. Que tenga planetas para realizar los ataques y que la cantidad de naves en ellos sea mayor a 1.

Practica repaso 4 5 2da

Embed Size (px)

Citation preview

Page 1: Practica repaso 4 5 2da

Algoritmos y Programas – Año 2012

Práctica de Repaso Objetivos: • Repasar los conceptos aprendidos en las Prácticas anteriores.

1) Se necesita modelar y desarrollar una solución en Python para un juego de conquista planetaria. Es un juego por turnos y consiste de un conjunto de planetas y de un conjunto de Bots que compiten por los planetas en cada turno. Cada planeta posee flotas que pueden ser utilizadas por el Bot dueño del planeta para conquistar otro. La conquista del planeta se efectiviza al enviar una flota mayor que la que posee el planeta objetivo, esta conquista se puede perder si otro Bot ataca el planeta con la misma mecánica en otro momento. El juego finaliza cuando todos los planetas existentes han sido conquistados por un Bot o cuando sólo quede un Bot activo en el juego. Cada Bot posee una inteligencia artificial (IA) representada a través de la superclase AbstractIA y sus subclases concretas. La clase AbstractIA define un método sin implementacion llamado hacerMov(self, juego) que recibe como parámetro un objeto de tipo GuerraDePlanetas, el cual será invocado por el Bot en cada turno para definir la estrategia de conquista a seguir. El parámetro de tipo GuerraDePlanetas provee distintos métodos para obtener información del contexto del juego y el método ordenarAtaque(planetaOrigen, planetaDestino, nroNaves) para dirigir los ataques (descargue la documentación desde el sitio de la cátedra).Se provee una IA básica por defecto y el objetivo del ejercicio es construir otra mas compleja que derrote a la primera. Su estrategia será utilizada por un Bot mediante una clase llamada MiBot que sea subclase de AbstractIA en un modulo llamado bots. De esta manera deberá dar comportamiento al método hacerMov(self, juego).

Finalmente ejecute la clase TestIA que contiene el siguiente método de clase main(), para testear su estrategia:

def main(): juego = GuerraDePlanetasLocal() juego.init() juego.jugar(bots.MiBot())

Nota: - Para poder implementar su IA, debe descargar del sitio de la cátedra el archivo juego.zip e incorporarlo a su proyecto.- Antes de comenzar con la estrategia verifique dos cosas:

1. Que haya planetas que no han sido conquistados.2. Que tenga planetas para realizar los ataques y que la cantidad de naves en ellos sea mayor a 1.

Page 2: Practica repaso 4 5 2da

Algoritmos y Programas – Año 2012

Diagrama de Clases de conquista planetaria:

Page 3: Practica repaso 4 5 2da

Algoritmos y Programas – Año 2012

2) Crea una clase Libro que modele la información que se mantiene en una biblioteca sobre cada libro: título, autor (usar la clase Persona), ISBN, páginas, edición, editorial y lugar (ciudad y país). La clase debe proporcionar los siguientes métodos: getters, setters y __str__. Este último método mostrará la información del libro con este formato:

Título: Introduction to Java ProgrammingAutor: Liang, Y. Daniel3a. ediciónISBN: 0-13-031997-XPrentice-Hall, New Jersey (USA)784 páginas

3) En una biblioteca se prestan libros a lectores para que ellos se los lleven a sus hogares por un periodo no mayor a 14 días. La biblioteca tiene en cuenta si un libro está disponible o no antes de prestarlo. Se pide:a) Realice el diseño de clases utilizando un diagrama de clases UML indicando las

relaciones entre las clases y los miembros que hay en cada una. b) Implemente en Python dichas clases. c) En el modulo test cree la clase TestBiblioteca y en su método main() cree 3 lectores y 5

libros con los datos de prueba dados a continuación:

Lectores:- nombre: Federico dirección: 50 y 115, teléfono: 411-1111- nombre: Ezequiel dirección: 45 y 7, teléfono: 4235658- nombre: Valeria dirección: Diag. 77 Nº587, teléfono: 4212265

Libros:- título: “Doce tequilas”, autor: Alejandro Volnié, edición: 1º edición- título: “El psicoanalista”, autor: John Katzenbach, edición: 1º edición- título: “2085”, autor: Alejandro Volnié, edición: 2º edición- título: “Historia del loco”, autor: John Katzenbach, edición: 3º edición- título: “Fortaleza digital”, autor: Dan Brown, edición: 4º edición

d) Cree los siguientes 5 préstamos:

Préstamos- (Federico, 2085)- (Valeria, Doce tequilas)- (Ezequiel, El psicoanalista)- (Valeria, Fortaleza digital)- (Federico, Historia del loco)

e) Intente realizar los siguientes préstamos:(Federico, Doce tequilas) y (Ezequiel, Fortaleza digital) ¿qué sucedió?.

f) Realice un listado de todos los préstamos realizados.g) Luego, realice la devolución de los mismos.h) Vuelva a intentar el inciso e) ¿obtuvo el mismo resultado?.i) Vuelva realizar un listado de todos los préstamos realizados.