viernes, 11 de diciembre de 2015

proyectos del curso de Taller de Programación 1



Proyecto de herramientas con el SoftWare GreenFoot.
  • Aquí se muestra como se hizo un aplicativo. en este caso es un juego, se hizo en grupo de 4 alumnos de la facultad de Ingeniería en Informática y Sistemas de la Universidad Agraria de la Selva (UNAS). Espero que sea de gran ayuda para ustedes. revisen y publiquen en los comentarios cualquier duda sobre como se hizo. 
  • nota: solo redirijan se al enlace de abajo


  • En el siguiente proyecto se muestra un aplicativo que te permite registrar animales.
  • Se hizo con todos los conocimientos adquiridos en el curso de TP1 espero que les sirva este material


  • En el enlace encontraran información, imágenes, diapositiva y el código de los 2 programas asi como el programa GreenFoot y las librerías del registro de animales.    







Interfaces con la Libreria EdisoncorSX




https://docs.google.com/document/d/16_18aS5ZozL5_UhGWz-j3aBDpHwDzgPNrbjbNxgBzpw/edit?usp=drive_web

miércoles, 2 de diciembre de 2015


informe del grupo 6
2. Introducción

Este proyecto esta hecho por alumnos de la facultad de ingeniería informática y sistemas de la universidad agraria de la selva UNAS los cuales trabajamos el proyecto repartiendo las clases según su complejidad y pretende demostrar los conocimientos de programación mediante el uso de la visualización de los objetos representados por entidades dentro de la simulación de un clásico juego de “PING PONG”, en el cual los objetos y clases cumplen las expectativas de aprendizaje del curso y además logra expresar el funcionamiento de los conceptos de clases métodos herencia y demás conocimientos adquiridos durante el curso
El programa es simple y conciso tanto en su funcionalidad, programación y diseño esta simplicidad deja ver lo simple que es el paradigma orientado a objetos.
El juego en sí, es una representación de grafica de un partido de tenis, en donde el actuador principal o jugador es una persona que controla una raqueta mediante el teclado mientras que el adversario es una raqueta que tiene movimientos basados en la pelota pero con un una velocidad menor, la pelota es un objeto que tiene atributos que le permiten colisionar contra las paredes y las raquetas. Esto es lo que vendría a ser el juego en sí y cada una de las entidades del juego es representada por una clase y sus respectivos objetos








3. INDICE







4. Objetivo (generales y específicos)

Generales: Desarrollar una aplicación, la cual nos permite observar gráficos y simulaciones en 2d. En la cual usaremos nuestros conocimientos de aprendidos de programación en java de manera más divertida e interactiva. Y de esta manera los usuarios puedan divertirse y mostrar sus habilidades y destrezas en los juegos.   
Específicos:
Investigar sobre el lenguaje de programación que utilizaremos “GREENFOOT”.
Diseñar una aplicación: diagrama de bloques, pantallas.
Desarrollar e implementar los temas de manera concisa.
Realizar la muestra del funcionamiento del juego.

5. Definición de la herramienta tecnológica

Greenfoot es una herramienta didáctica de aprendizaje de programación en java. Es un entorno integrado de desarrollo (IDE) y programación que facilita la escritura de los juegos y simulaciones (en dos dimensiones) en lenguaje java con fines educativos. El lenguaje incluye por defecto un buen número de escenarios de ejemplos y documentación la cual permite que los menos expertos se familiaricen con el manejo.
Greenfoot es un proyecto de software libre y gratuito desarrollado en la Universidad De Kent (UK) que combina por igual un entorno de desarrollo visual con forma de rejilla bidimensional (adecuado para los principiante), y un editor convencional para desarrollar código al estilo tradicional, con un visor de clases, editor, compilador, ejecución, etc.
                                                   



6. Descripción del programa a desarrollar

El nombre viene por el sonido de Ping que hacia la pelota de celuloide al impactar con las raquetas recubiertas en pergamino y el sonido de Pong al contacto de la pelota con la mesa. Se requiere de una pelota, paletas, y una mesa.
El ping pong puede ser jugado por dos personas o por dos parejas, debido a que es un juego sumamente popular, y sobre todo en los países asiáticos. Y no hay que olvidar que es una disciplina olímpica desde hace varios años lo que lo hace un deporte de Mayor categoría.
Referente a nuestra aplicación se tratara de emular lo necesario para que los usuarios sientan satisfechos y la experiencia sea muy parecido a la realidad.

Clase Mundo:
Ping Pong: Conformado por todos los objetos de la clase actor, la cual permite elegir opciones como modo de jugador, variables de las teclas para el movimiento, tamaño y color de los objetos,  y también muestra puntos necesario para ganar.










Clase Actores:
Ball: Representa a la bola la cual se desplaza a cierta velocidad, tiene tamaño y color específicos la cual emula una colisión con la bat (raqueta)
Bat: Conformado por dos raquetas que se mueven eje “Y” la cual se puede contralar por jugador y la otra por máquina.









Button: Conformado por las opciones del juego que el usuario tendrá en cuenta al momento de iniciar la aplicación.
InfoBar: Muestra información detallada de los jugadores y una puntuación de cada lanzamiento que se anota.
Menú: Muestra la opciones generales del aplicación que estamos desarrollando al momento de iniciarlo.



 

 

 

 

7.Marco conceptual


a.    Antecedentes (Donde lo utilizaron)
Esta herramienta fue diseñada e implementada en la Universidad de Kent (Inglaterra) y por la Universidad Deakin (Melbourne, Australia).
El diseño de Greenfoot está inspirado originalmente considerando la combinación de características de dos de los más populares tipos de entornos de enseñanza: “microworlds” (micromundos), como “Karel te Robot” y entornos de interacción directa como el BlueJ. Uno de los puntos fuertes de los “micromundos” es la visualización excelente de los objetos, su estado y su comportamiento. Pero carece por otro lado, de un medio para la interacción directa de los objetos.
b.    Marco conceptual (5 hojas)
Concepto
Greenfoot es un programa informático visual e interactivo que utiliza Java para crear juegos, simulaciones y otros programas gráficos. Java utiliza la orientación a objetos, un paradigma de programación que representa conceptos como objetos. Los objetos tienen campos de datos que describen el objeto, así como los procedimientos asociados que se hace referencia como métodos. Un programa orientado a objetos se puede considerar como una colección de objetos que interactúan mientras que un modelo de programación convencional se ve como una lista de tareas que se llevan a cabo mediante programación.
El entorno de desarrollo interactivo Greenfoot se puede utilizar para aprender orientado a objetos de programación Java sin tener que crear un entorno de programación que utiliza el lenguaje y reglas complejas. Usando Greenfoot, puede crear objetos y luego crear instrucciones de programación para dar a los objetos de la capacidad de interactuar con otros objetos en la ventana de Greenfoot
Componentes
·         El mundo. Se llama mundo al área más grande que ocupa la mayor parte de la pantalla (una rejilla de color tierra en este caso). Es donde el programa se ejecutará y verás lo que ocurre. Variará su apariencia en función del escenario que carguemos, ya que cada uno tiene un Mundo por defecto (en este caso es ‘WombatWorld“)
·         El diagrama de clases. Se llama diagrama de clases al área de la derecha con cajas y flechas de color beis. Ahí nos aparecen tanto las clases de Mundo que tenemos disponibles y las clases de Actores (‘Wombat‘ y ‘Leaf’) a partir de las cuales crearemos los objetos que incluiremos en el mundo elegido.
·         Los controles de ejecución. Los controles de ejecución son los botones Accionar, Ejecutar, y Reiniciar y la barra inferior para ajustar la velocidad. Volveremos también más tarde con ellos.







Características
A partir de ahí, se puede hacer clic izquierdo sobre las clases en el panel derecho y elija si desea agregar al mundo (al seleccionar la opción y luego seleccionando la celda para poner el objeto en), o si se debe abrir y editar el código fuente. El editor de código lleva un par de características interesantes, incluyendo "ir al número de línea", un buscador de ubicación en el lado derecho, y los colores de fondo para determinar qué partes del código van de la mano.
·         Hacer objetos actúa: Haga clic en el botón ‘Act’ en los controles de ejecución. Cada objeto ahora actúa – es decir: cada objeto hace lo quiere hacer.Lo que se quiera hacer con los objetos depende de cómo se definen los comportamientos de ellos, es decir, qué se puede hacer. En este ejemplo, las hojas no definen comportamientos, mientras que Wombat avanza. Se recomienda probar esta práctica, colocando dos osos australianos en el mundo, al pulsar el botón ‘Act’, ambos se moverán.
A un Wombat también le gusta comer hojas. Si al desplazarse, en su camino, encuentra una hoja, se la puede comer.
·         Ejecutar un escenario: Haga clic en el botón "Run". Esto es equivalente a hacer clic en el botón de ‘Act’ una y otra vez, muy rápidamente. Verá que el botón “Run” cambia a un botón de 'Pausa'. Este botón permite detener temporalmente la ejecución.
El control deslizante, que está junto a los botones de “Act” y “Run” establece la velocidad. Para probar esto, hacer clic en “Run” y, a continuación, cambiar el regulador y se verá el cambio en la velocidad.
·         Invoque directamente métodos: En lugar de simplemente ejecutar el escenario completo, también pueden invocar un solo método. Un método es una acción que un objeto puede realizar.
Asegúrese de que tiene un wombat en el mundo, y no se está ejecutando el escenario. A continuación, haga clic en el wombat, y verá que los objetos del mundo también tienen un menú emergente.








·         Invocar un método de mundo: Hemos visto que los objetos en el mundo tienen métodos que puede invocar a través de un menú emergente. El mundo es también un objeto con métodos que se pueden invocar.

En la sección anterior hemos visto cómo crear nuevos mundos. Ahora queremos invocar un método del objeto World.
Sobre el mundo hay un título que muestra el nombre del mundo: "WombatWorld" en nuestro caso. Uno de los métodos de este menú es 'populate()'. Pruebe. Es un método que crea varias hojas y osos australianos (wombat) y los coloca en el mundo. A continuación, puede ejecutar el escenario.
Otro método de mundo es 'randomLeaves(int howMany)'. Este método coloca algunas hojas en el mundo en ubicaciones aleatorias. Tenga en cuenta que este método tiene algunas palabras entre paréntesis tras su nombre: howMany int. Esto se llama un 'parámetro'. Esto significa que debe especificar algunos bits adicionales de información al invocar este método. El término 'int' le dice que se espera un número entero, y 'howMany' sugiere que debe especificar cuántas hojas que desee.
Al invocar este método, un cuadro de diálogo aparecerá, el que le permite introducir un valor para este parámetro. Introduzca un número y hacer clic en Aceptar.
Se puede observar, si contamos, que a veces parece como si el número especificado de hojas es menor que las que se crearon. Esto es porque algunas hojas pueden estar  en el mismo lugar y se encuentra por encima de la otra.
·         Cambiar el comportamiento de un objeto: Puede programar sus propios objetos, Wombat, o cualquier cosa que te gusta, escribiendo código Java para la clase del objeto. Eso es lo que haremos ahora.
Haga doble clic en la clase Wombat en la pantalla de clase. Abre un editor de texto y verá el código fuente de Java para la clase de Wombat.
Lo primero que queremos hacer es cambiar el comportamiento del wombat modo que, cuando no puede avanzar, resulta una dirección aleatoria en lugar de siempre girando a la izquierda. Para lograrlo, primero agregamos un método 'turnRandom()'. Agregue el método siguiente a la clase Wombat:












A continuación, se modifica el método 'act()' para hacer uso de turnRandom. El método act() actualmente Lee:












Sustituir la llamada a 'turnLeft()' en el final con una llamada a 'turnRandom()'.
Después de hacer este cambio, se debe probar. Para esto hacer clic en el botón 'Compilar' en el editor. Si se muestran los errores, corregir y volver a compilar. Repita esto hasta la clase compila sin errores. Ahora puede cerrar el editor.
c.    Definiciones operacionales (Palabras claves)
·         Los objetos tienen métodos. Al invocarlos, realizan una acción.
·         El tipo de vuelta de un método especifica lo que la llamada a un método devolverá.
·         Un método con un tipo de vuelta void no devuelve ningún valor.
·         Los métodos con tipos de vuelta void representan órdenes; los métodos con tipos de vuelta diferentes de void representan preguntas.
·         Un parámetro es un mecanismo para pasar datos adicionales a un método.
·         Los parámetros y los tipos de vuelta tienen tipos. Algunos ejemplos de tipos son int para números y boolean para valores cierto/falso.
·         La especificación de un método, que muestra su tipo de vuelta, nombre, y parámetros se llama signatura.
·         Los objetos que pueden ser colocados en el mundo se conoce como actores.
·         Una subclase es una clase que representa una especialización de otra. En Greenfoot, esto se muestra con una flecha en el diagrama de clases.
·         Cada clase se define por su código fuente. Este código define lo que los objetos de esta clase pueden hacer. Podemos ver el código fuente abriendo el editor de la clase.
·         Los ordenadores no entienden código fuente. Necesita ser traducido a código máquina antes de ejecutarlo. Esto se denomina compilación.


8. PRUEBAS DE DESARROLLO

En las pruebas de desarrollo dividimos en partes al juego para encontrar más fácil los errores que pudiese surgir en la construcción del juego
Así por ejemplo nos encontramos con este error cuando comenzábamos a dibujar la bola no teníamos la forma deseada así que investigando en internet encontramos que tenía que ser de la siguiente forma para que la bola sea completamente redonda poner la posición de x e y en 0 para que se ubique en el centro y el tamaño de la bola.
  
Una vez corregido esto ubicamos la posición correctamente y dimos el tamaño adecuado

Como hacer que la bola cambie de color cada vez que toque el Bat de cada uno de los jugadores: en un principio pensábamos hacer que la bola sea de un solo color para el juego, pero luego vimos que sería mejor que cambiara de color cada vez que toque el Bat para que el jugador pueda guiarse mejor así que investigando implementamos este método para que haga lo deseado

9. IMPACTO ESPERADO

El impacto que obtuvimos al utilizar esta herramienta de software no sabíamos cómo crear un escenario para crear el juego que teníamos de idea, luego mediante tutoriales fuimos aprendiendo rápido para que servía cada uno de las opciones que brindaba GreenFoot así como utilizar las imágenes que tiene por defecto. La dificultad más grande que tuvimos sería poner el tamaño de la bola y el bat y darle el movimiento. Pero en general fue fácil e interactivo crear un juego en esta herramienta de software.

10. CODIFICACION

Comenzamos a crear cada uno de los objetos por separado para hacer que sea más rápido la creación del juego comenzamos con el principal PingPong.
·         Importamos las librerías que vamos a utilizar

·         Creamos los atributos a utilizar


·         Creamos lo métodos de la clase

BatState nos da el estado de cada uno de los jugadores que hay en pantalla
GameState nos da cada uno de los componentes del juego
GameType tipo de jugador.








·         Teclas de los jugadores

·         Constructor del PingPong

·         Método principal del PingPong


Acá especificamos las direcciones, tamaño y posición de los objetos creados como Ball, Bat, Button, InfoBar, Menú

Lo colocamos en casos para que especifique cada acción que tenga el juego como ADDING_GAME, WAITING, RUNNING
·         Con GreenFoot se puede poner de fondo las imágenes que tiene predeterminadas, importar otra imagen o crear una de formato jpg



·         Obtener un punto
Este método hace que si pasa la bola del bat se obtenfga un punto y vuelva al centro la bola.






·         Colocar el texto


Los siguientes métodos don para direccionar el texto en la posición deseada


·         Obtiene el estado del bat y retorna la tecla










·         Métodos para ubicar la imagen


·         Getters y Setter de objetos y atributos

 










El objeto Ball

·         Librerías y atributos

Colocamos final al color de la bola porque cada vez que se comience la bola comenzara en negro una vez que toque cada uno de los bates recién cambiara de color
·         Acciones de la bola

Se mueve a la velocidad que se le asigna en consola, así como cambia de color al tocar cada bat y al obtener un punto regresa al centro.




·         Posiciones de la bola

Aquí se especifica cuando toca el bat y gana un punto

·         Se pone el color, posición, Angulo y se añade al principal


El objeto bat

·         Importamos las librerías a usar y declaramos los atributos


·         Definimos la dirección y posición del bat


·         Creamos los métodos para dar la localización y hacia donde se moverá el bat.


goTo: acción para que se mueva el bat
setLocation: cambiar la dirección del bat
handleMovement: maneja el movimiento del bat

·         Agregar al principal el bat

·         Métodos del bat
      

El objeto Button

·         Librerías y atributos

·         Métodos y acciones del botón

MouseCliked: evento al hacer clic sobre el botón con el mouse
addedToWorld: agrega al principal los botones
act: llama al evento al hacer clic con el mouse


El objeto InfoBar

·         Librerías y objeto imagen


·         Acciones de la barra de información


Act: dibuja la imagen las líneas y el texto
addedToWorld: agrega al principal la información de la barra
getPingPong: envía la InfoBar al principal


El objeto Menú
·         Librerías y atributos del menú


Se crea la imagen de tipo GreenFoot, los jugadores al elegir el botón, el texto y estado del juego 

·         Acá se escribe lo que va a ir en el menú , generalmente se escribe las palabras que van en el juego, como por ejemplo  “Escoger con quien jugar” o una vez que gane uno de los jugadores “Gano el jugador 1!!!”













·         Aquí se especifican los métodos del menú
startGame: aquí se agrega al principal los métodos
menú: se da el parámetro de estado

11. Conclusión

La programación orientada a objetos permite la optimización del código generado, gracias a que mediante técnicas de herencia, atributos estáticos entre otros permiten, que el código sea genérico de manera que sea reutilizable. Mediante la técnica aprendida en el presente curso podemos establecer una solución primitiva de un problema real, tan solo con relacionarlo con objetos lógicos que serán usados para el desarrollo del software. Podemos dar a conocer de una forma sencilla los mecanismos que se usan en este nivel de programación, a personas que deseen una explicación rápida y sencilla de lo que es la programación orientada a objetos. Tenemos los conocimientos necesarios como para enfrentar un problema real y desarrollo en otro lenguaje de programación, pues concebimos la idea de que el lenguaje C es la base de la programación. Al trabajar con la programación orientada a objetos sea esta desarrollada en otras plataformas de programación o en lenguaje C, sabemos las formas de lograr un mejor rendimiento del equipo a controlar y aplicar soluciones sencillas, de manera que sea fácilmente digeribles para el usuario y/o destinatario del trabajo final.

12. Recomendación

ü  Tener conocimiento básico en micro controladores y lenguaje de programación. 
ü  Java facilita el entendimiento y programación de las sentencias.
ü  Entienda lo que está haciendo: Importante es enterarse de que está pasando y que estas elaborando.
ü  Domine el paradigma de orientación a objetos.
ü   Preste atención a los errores.
ü  No se acostumbre al copy & paste.



13. Bibliografía