Universidad de Talca Facultad de Ciencias Empresariales Lenguajes de Programación Matthew Bardeen PROYECTO TRES PHP/POO: DAMAS Francisco Honorato Jorge Orellana Estefanie Tello Carlos Vallejos Talca, 23 de julio de 2007 INDICE 1. Introducción -------------------------------------------------------------------- pág.3 2. Objetivos -------------------------------------------------------------------- pág.4 2.1.General -------------------------------------------------------------------- pág.4 2.2.Específicos -------------------------------------------------------------------- pág.4 3. Metodologías de Aprendizaje ---------------------------------------------------- pág.5 3.1.Análisis del Algoritmo ---------------------------------------------------- pág.5 3.2.Diagrama de Clases ---------------------------------------------------- pág.6 3.3.Aprendizaje en PHP ---------------------------------------------------- pág.7 4. Documentación -------------------------------------------------------------------- pág.8 4.1.Bibliografía -------------------------------------------------------------------- pág.8 5. Conclusiones -------------------------------------------------------------------- pág.9 2 1. INTRODUCCION Los problemas diarios, nuestra rutina, y en realidad todo lo que hacemos comúnmente, puede ser resuelto con un algoritmo, es decir un conjunto de instrucciones lógicas que muestran paso a paso la resolución de problemas o ejecución de tareas. Estos algoritmos son aplicados en programación, mediante lenguajes que permiten llevar las instrucciones al ordenador, para que finalmente se ejecutado, teniendo obviamente como base, el algoritmo inicial. PHP es un lenguaje de programación interpretado, comúnmente utilizado en plataformas Web para la creación de páginas dinámicas, y se destaca por la capacidad que posee para relacionarse con otros lenguajes y en especial por su capacidad de crear HTML, además es capas de usar múltiples lenguajes y manipular información de diversas bases de datos. Por ultimo PHP es totalmente gratis y su uso es libre. A continuación presentamos el desarrollo del juego Damas, programado con lenguaje PHP y basado en la programación orientada a objetos (POO). Damos a conocer los objetivos planteados, las estrategias utilizadas para manejar el lenguaje y abordar el juego, un esquema de clases (UML) y conclusiones respecto al trabajo realizado. 3 2. OBJETIVOS 2.1. General Generar un programa en PHP orientado a objetos, que sea permita a dos usuarios jugar al clásico juego de las damas, validando movimiento y llevando a cabo las reglas que comúnmente se usan. 2.2. Específicos Amigable: Queremos un juego amigable, que entregue por pantalla la información necesaria a los jugadores, que esta sea clara y precisa y motive a los usuarios el seguir en continuo el juego. Dinámico: Un programa rápido e interactivo, que permita los usuarios realizar movimiento de forma eficiente y el juego no se vea frustrado por engorrosos tipiados de comandos. Completo: Que contenga todas las bases y validaciones posibles, para impedir posibles errores o malas manipulaciones con el uso e ingreso de variables. Queremos lograr que nuestra Dama, sea de cierta forma “perfecta”. Visualmente Atractivo: Que el diseño grafico por pantalla sea atractivo, las imágenes, fichas y textos, tengan un solo estilo y sigan un línea de diseño. Que se note claramente que ficha es de quien y de que tipo es cada ficha. 4 3. METODOLOGIAS DE APRENDIZAJE 3.1. Análisis de Algoritmo Identificación del problema: Nuestro problema es generar un juego de damas, que centre sus bases en las reglas comúnmente conocidas, incluyendo la creación de reinas, sopladas, movimientos de peones distintos al de las reinas y comer en una jugada todas las piezas que sea posible. Además de lo anterior, debe permitir el juego simultaneo de dos jugadores, debidamente identificados y permitiéndoles movimientos en base a sus decisiones. Entradas: Serán todas la entradas por teclado o Mouse que realizaran los usuarios. o Jugador: En primer lugar ambos jugadores deben ingresar sus nombres, con el objetivo de ser identificados durante todo el desarrollo del juego. o Movimientos: Luego es necesario conocer la pieza que se desea mover, para ello se utilizan dos variables: fila y columna, ellas permiten registrar la posición de la ficha en la matriz. Estas variables de ingreso, se utilizan durante todo el juego, ya que se requiere interactuar con ellas, para efectuar los movimientos. o Dirección Movimiento: Otra variable de entrada es la dirección: izquierda o derecha, en el caso de los peones e izquierda, derecha, arriba o abajo, en el caso de las reinas. Salidas: En pantalla se verán los nombres de cada jugador y en secciones distintas se vera información completa del juego y su 5 juego en especifico, o sea el número de piezas que conserva, las jugadas realizadas, el turno, el número de jugador, tiempo en juego e instrucciones generales, como cuando desea mover una pieza que no pertenece a las suyas. Además cada movimiento de las fichas es mostrado en pantalla, incluyendo el cambio de peones a reinas. 6 3.2. Diagrama de Clases (UML) 7 3.3. Aprendizaje en PHP El aprendizaje de este lenguaje fue por cuenta propia (autoaprendizaje) ya que dentro del grupo contábamos con un integrante que conocía el lenguaje PHP y HTML hace algunos años, esto nos permitió centrarnos en la POO y diseño, y no perder tiempo en aprender etiquetas html, funciones propias de php y otros. Es por ello que luego de pensar el problema, debimos investigar acerca de las funciones propias del lenguaje, fijándonos en los comandos principales, creación de objetos, y sobre todo en el manejo de las clases y objetos cuando estos quieren ser pasados a algún método o función. Como es de suma importancia el hecho de que la información del juego debe mantenerse, es ahí donde aparecen las sesiones. Esto sucede porque PHP es un lenguaje que generara desde el servidor la página en html para el cliente, el cual visualiza y al momento de reiniciar la carga de la pagina o pasar datos, toda información anterior se pierde. Considerando los conocimientos previos del grupo en lenguajes que permitían la POO y los conocimientos por parte de uno en PHP y HTML, debemos admitir que nuestro único y mayor problema fue el uso eficiente de almacenamiento de memoria, la solución y pasos a continuación: Primero, se programa de forma normal, cuando nos percatamos que no éramos capaces de mantener la información constante con métodos tradicionales, tuvimos que buscar una nueva forma. Intentamos mantener la información con el uso de hidden en formularios, pero la verdad fue que era un método un tanto truculento. Para dar solución a lo anterior, utilizamos los métodos de almacenamiento de información mediante cookies, pero 8 resulto frustrante, ya que el uso invalida el sentido normal de los objetos. La razón, es que al usar cookies, los objetos deben ser recargados cada ves que se ocupan y ¿Qué sentido tiene cargar los objetos una y otra vez?, para eso es mejor utilizar estructuras. Otro problema de las cookies que son vulnerables a la modificación por parte del usuario para obtener ventaja. Frente a las dificultades de las cookies y omitiendo la potencialidad de las sesiones recurrimos al profesor, quien nos sugirió y/o en realidad reafirmo la pujante idea de las sesiones. Así recurrimos a un manual básico de cookies obtenido en los cursos para clientes de dattatec.com el cual daba fe a lo sospechado. Así decidimos el uso incondicional de sesiones para lo cual recurrimos a php.net/sessiones de donde adquirimos conocimiento de toda la potencialidad de PHP 5 para el uso de sesiones. Finalmente logramos solucionar todos los inconvenientes y el resto, fue solo crear algoritmos eficientes que dieran funcionalidad a los métodos de cada clase. Nuestro aprendizaje, se base mas que nada en la prueba-error y en las consultas a Internet. Internet es un lugar lleno de información, que al mismo tiempo al ser tan grande suele “esconder” lo vital. Para eso fue de vital importancia los conocimientos previos existentes en el grupo del “camino de php en español”. 4. DOCUMENTACION 9 4.1. Bibliografía, referencias electrónicas www.php.net en su versión cl2, este sitio contiene la documentación oficial de php en todas sus versiones, además contiene una gran comunidad de visitas atentas a los comentarios. www.maestrosdelweb.com tutoriales y códigos de PHP. www.webestilo.com tutoriales y códigos de PHP. www.webtaller.com tutoriales y códigos de PHP. www.otros.cl sitio de uno de los miembros, en el cual corren diferentes script con un sin numero de funciones que miramos para tener un mejor uso de funciones. 5. CONCLUSIONES 10 PHP es realmente un lenguaje que permite crear dinamismo e interacción, además permite incluir diseños muy interesantes, creemos que es una gran herramienta para cualquier tipo de programador que se interese por desarrollar plataformas web. La programación orientada a objetos es similar en todos los lenguajes, y PHP no es la excepción, la forma de manipular los objetos es muy parecida a los demás lenguajes que contienen POO, aunque PHP se caracteriza por una preocupación desde su versión 5 por funciones de la librería principal para su mejor manipulación. El aprendizaje de los lenguajes en general se hace mucho mas fácil cuando se presenta una de las siguientes razones: o Guía: En persona o en documentación. Este caso tuvimos la documentación y la persona. Lo cual nos ayudo bastante a omitir problemas de PHP o etiquetas HTML y centrarnos en la POO. o Conocimientos Previos: Conocer otros lenguajes, en nuestro caso ya manejábamos lenguajes con POO y habíamos aprendido a adaptarnos en diferentes lenguajes. Para finalizar y como conclusión mayor, el sistema de autoaprendizaje y la buena selección del lenguaje, motivaron a un aprendizaje mas didáctico, grupal y que sin dudas dejo mejores experiencias que los dos lenguajes anteriores del curso. 11