PC1- Modelo 2021-0 PDF

Title PC1- Modelo 2021-0
Author Anonymous User
Course Programacion 2
Institution Universidad Peruana de Ciencias Aplicadas
Pages 8
File Size 256.3 KB
File Type PDF
Total Downloads 83
Total Views 523

Summary

MODELOPROGRAMACIÓN II (CC67)Ciclo 2021-Práctica Calificada Nro. 1Trabajo PrácticoProfesor: Pedro ShiguiharaDuración: 12 horasInicio: 9:00 a.Fin: 9:00 p.Sección: SI___Instrucciones:1. La pregunta es de tipo estudio de caso y la entrega de su respuesta es a través deun archivo en Blackboard.2. El trab...


Description

MODELO PROGRAMACIÓN II (CC67) Ciclo 2021-0 Práctica Calificada Nro. 1 Trabajo Práctico Profesor: Pedro Shiguihara Duración: 12 horas Inicio: 9:00 a.m. Fin: 9:00 p.m. Sección: SI22 ___________________________________________________________________

Instrucciones: 1. La pregunta es de tipo estudio de caso y la entrega de su respuesta es a través de un archivo en Blackboard. 2. El trabajo práctico consta de un caso y tendrá una duración de 12 horas para resolverla. 3. El trabajo puede ser resuelto por un grupo de hasta 03 integrantes 4. Cada integrante del grupo debe enviar el archivo de solución. 5. Durante el examen, sólo puede utilizar un Entorno de Desarrollo Visual Studio 2015 o superior y el Explorador del Windows. 6. Para el Diagrama de clase, se puede utilizar Jamboard, StarUML, Yuml, Word o Paint. 7. Al finalizar el examen el alumno deberá enviar la solución de su examen a través del AULA VIRTUAL Estamos seguros que cada uno realizará su examen. Sin embargo, para evitar cualquier perspicacia, le recomendamos leer sus reglamentos de estudios y disciplina del alumno, en el cual se indican las faltas y las sanciones en el caso de la copia de exámenes (falta contra la probidad académica).

Lea con atención el enunciado y responda teniendo en cuenta la rúbrica de calificación

CASO DE ESTUDIO “Snake” Debe implementar un juego Snake haciendo uso del paradigma de Programación Orientada a Objetos. El juego consiste en un mapa donde se encuentra una serpiente, dirigida por el usuario, y una colección de manzanas (ejm.: 2 o 3). Al colisionar con la manzana, la serpiente aumenta de tamaño, haciéndose más larga. Si la serpiente llega a colisionar con su propio cuerpo, entonces pierde el juego. Los detalles son presentados en la descripción de las clases:  Clase Serpiente Clase Serpiente, donde una instancia de Serpiente se desplaza a una velocidad constante por cada nivel. Si la serpiente colisiona con una manzana, su cuerpo aumenta 1 píxel. La serpiente puede moverse en vertical (arriba-abajo) y horizontal (izquierda-derecha). Si la serpiente colisiona con una parte de su largo cuerpo, muere. La serpiente puede tener un color. La serpiente puede tener una forma de cuerpo representado por un carácter como: *, ^, etc; esta forma de cuerpo puede ser seleccionada al inicio del juego por el usuario. Cada vez que la serpiente come 10 manzanas, debe incrementar su velocidad, pues es indicador que ha subido a un nivel más difícil en el progreso del juego. El valor de 10 manzanas puede convertirse en una variable N que puede ser graduada como parámetro.  Clase Manzana Es el alimento de la serpiente y aparece de manera aleatoria dentro del mapa. Puede haber más de una manzana en el escenario. Si la serpiente come una manzana, entonces debe aparecer automáticamente otra manzana en una posición aleatoria totalmente distinta. Se debe evitar que aparezca encima del cuerpo de la serpiente pues, de ser así, generaría problemas en el juego. La manzana puede tener un color. La manzana puede tener una forma de cuerpo representado por un carácter como: +,o, etc; esta forma de cuerpo puede ser seleccionada al inicio del juego por el usuario.  Clase Jugador Un jugador tiene una puntuación en el juego. Cada vez que la serpiente come una manzana, la puntuación se incrementa en 1 punto. El jugador puede moverse usando las teclas:  ‘a’: moverse a la izquierda  ‘d’: moverse a la derecha  ‘w’: moverse arriba  ‘s’: moverse abajo

 Clase Juego Contiene a una serpiente, un jugador y una colección de manzanas. En esta clase se realiza la graficación del juego en pantalla, pudiendo cambiar el tamaño de la pantalla de juego. La lógica y gestión de entrada de datos por teclado se realiza en esta clase, pudiemdo gestionar el juego de principio a fin.

2

EJEMPLO

Funcionamiento del programa El programa debe cumplir los siguientes requisitos:  El programa inicia con una posición aleatoria tanto para la serpiente como para la colección de manzanas.  La serpiente se mueve a velocidad constante hasta completar 10 manzanas, tiempo en el que aumenta la velocidad.

 Cuando la serpiente colisiona con su cola, se pierde el juego. En ese caso, se debe reiniciar todo el juego nuevamente. Entregables

 Código fuente adjunto  Documento de actividades de programación que realizó cada estudiante: Este documento es en formato Word y contiene las actividades de programación que ha realizado cada integrante durante el proceso de elaboración del programa. Se debe especificar qué métodos y/o clases implementó cada estudiante. La estructura es:  Datos generales: se detallan los nombres completos y códigos de alumnos UPC de los integrantes.  Link del video: se detalla el link público (asegurarse de que sea accesible por el profesor) donde se encuentra el video del programa, donde se expone su funcionamiento  Diagrama de clase: se detallan las clases (nombre de la clase, atributos y métodos en formato gráfico) y las relaciones de asociación y composición entre tales clases.

3

Reporte de trabajo colaborativo: Debe haber una sección por cada integrante, donde se detalle las actividades realizadas, acompañado de capturas de pantalla de su trabajo.  Video del programa: El grupo debe grabar el funcionamiento del programa y subirlo a su cuenta OneDrive u otro espacio de almacenamiento en la nube. El enlace del video debe ser colocado al inicio del documento de actividades de programación. El video debe tener una duración no mayor a 6 minutos y debe ser claro y conciso. El video debe tener 3 partes:  Parte 1: se explica y muestra la relación entre clases en un diagrama de clases, resaltando la relación de asociación y de composición. Se debe presentar el diagrama de clases.  Parte 2: se explica y muestra el código que principalmente contiene funcionalidades o características añadidas por el grupo.  Parte 3: se demuestra cómo se juega y cómo se comporta la aplicación en tiempo de ejecución. 

Enero 2021

4

RÚBRICA DE CALIFICACIÓN Bueno

Evidencia de las relaciones

Los comentarios están incompletos

No hizo el comentario

2

1

0

5

Informe y Video

Total 20 puntos

Incomplet o

El código de programación tiene los comentarios en las relaciones establecidas

La clase Juego está definida e implementada correctamente, incorporando instancias de las clases restantes.

Funcionamien to del programa

Regular

La clase Juego está definida parcialmente o no hace uso apropiado de instancias de las otras clases 3

No hizo la funcionalida d

Las clases de Serpiente está definida e implementada correctamente 2

La funcionalidad está incompleta

La clase Manzana está definida e implementada correctamente

La funcionalidad está incompleta

2

1

La clase Jugador está definida e implementada correctamente

La funcionalidad está incompleta

0 No hizo la funcionalida d 0 No hizo la funcionalida d 0 No hizo la funcionalida d

2

1

0

El programa compila y funciona sin errores con todas las características descritas en el enunciado 3 El grupo envió el video a tiempo donde participan todos los integrantes y se detallan las 3 partes mencionadas en un video máximo de 6 minutos 2 El grupo envió el informe con los datos de cada integrante completo, el diagrama de clase y las actividades de cada integrante 2

1

El programa ejecuta pero tiene bugs durante su ejecución 2 El video está incompleto o no se envió a tiempo o su duración es superior a los 6 minutos 0.5 El informe está incompleto o no se envió a tiempo 0.5

No hizo la funcionalida d 0

No enviaron el video

0 No enviaron el archivo 0

Punt aje

SNAKE Serpiente.h Enum Direccion{ Detenido,arriba,abajo,izquierda,derecha; } Direccion dir; Class Serpiente: Private: Int x,y,dx,dy; Public: Serpiente(); Serpiente(parametrizado) ~Serpiente(); Void Void Void Void Void

Mover(); GetX(); GetY(); Getdx(); Getdy();Direccionalidad getDireccion() { return this->direccion;

} int getX() { return this->x; } int getY() { return this->y; } //Métodos que empiezan con "set" sirven para modificar su atributo void setDireccion(Direccionalidad d) { this->direccion = d; }

Int Set(x) int

Serpiente.cpp Serpiente::Serpiente(){} Serpiente::Serpiente(int x,int y,int dx, int dy) { This->x=x; This->y=y; This->dx=dx; This->dy=dy; } Void Serpiente::Mover(){

switch (dir) { case DETENIDO: break; case IZQUIERDA: this->x--; break; case DERECHA: this->x++; break; case Arriba: this->y--;break; case Abajo: this->y++; default: break;

}

Class Manzana.h Manzana{ Private: Int x,int y; };

Class Jugador.h #include”Serpiente.h” Private: Serpiente* jugador; Int jugador; Public: Constructor y destructor; Void Mover_Arriba(){ This->y--; } . . . Void Captura(

this->serpiente->mover(); if (_kbhit()) { char caracter = _getch(); //Si el jugador 1 presiona mover hacia arriba la paleta if (caracter == ‘w’) { if (this->jugador1->getY() > 0) { this->jugador1->moverArriba();

} } //Si el jugador 1 presiona mover hacia arriba la paleta if (caracter == this->arriba2) { if (this->jugador2->getY() > 0) { this->jugador2->moverArriba(); } } //Si el jugador 1 presiona mover hacia abajo la paleta if (caracter == this->abajo1) { if (this->jugador1->getY() + 4 < this->alto) { this->jugador1->moverAbajo(); } } //Si el jugador 2 presiona mover hacia abajo la paleta if (caracter == this->abajo2) { if (this->jugador2->getY() + 4 < this->alto) { this->jugador2->moverAbajo(); } }

//Verificamos colisión para cambiar la dirección del balón if (this->balon->getDireccion() == DETENIDO) { this->balon->aleatorizarDireccion(); } //Si se retira del juego if (caracter == 'q') { this->salida = true; } } } );...


Similar Free PDFs