Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Distancia2018/Objetos/practica»
De WikiEducator
Línea 9: | Línea 9: | ||
{{MRM_Actividad|Title=Juego de mastermind orientado a objetos| | {{MRM_Actividad|Title=Juego de mastermind orientado a objetos| | ||
*Para implementar este juego vamos a crear las siguientes clases | *Para implementar este juego vamos a crear las siguientes clases | ||
+ | *Clave | ||
+ | *Juego | ||
;Clave | ;Clave | ||
− | |||
[[Archivo:Clave.png]]<br /> | [[Archivo:Clave.png]]<br /> | ||
+ | *Es la clave a adivinar | ||
+ | *Su atributo contiene esa información | ||
+ | *Tiene un método estático para obtener una clave | ||
+ | ;Juego | ||
[[Archivo:Jugada.png]]<br /> | [[Archivo:Jugada.png]]<br /> | ||
+ | *Es una jugada | ||
+ | *Cada jugada son 4 colores | ||
+ | *Cada jugada tiene un número de posiciones acertadas | ||
+ | *Cada jugada tiene un número de colores acertados que será menor o igual que el de las posiciones | ||
}} | }} | ||
*Vamos a ver cómo las podremos usar en nuestro programa | *Vamos a ver cómo las podremos usar en nuestro programa | ||
Línea 32: | Línea 41: | ||
} | } | ||
</source> | </source> | ||
+ | ;Cada vez que presiones jugar | ||
+ | *Creamos un objeto de la clase Juego con la jugada | ||
+ | *El méotodo de Jugada llamado jugar analiza el juego y me devuelve un bool que indica si la jugada ha terminado o no. | ||
+ | Recibirá como parámetro la instancia de la clase Clave | ||
+ | <source lang=php> | ||
+ | public function juega(Clave $clave):bool{ | ||
+ | |||
+ | } | ||
+ | </source> | ||
+ | ;Las varialbe de sesión | ||
+ | *Iremos almacenando un array de jugadas en una variable de sesion | ||
+ | *Igualemnte almacenaremos la Clave en una variable de sesión | ||
+ | *Recuerada que los objetos hay que serializarlos para guardarlos en variables de sesión. | ||
+ | **Tanto para escribirlos | ||
+ | **Como para leerlos | ||
+ | ***Deberíamos tener algo parecido a | ||
+ | <source lang=php> | ||
+ | $jugada = new Jugada(...); | ||
+ | .... | ||
+ | $jugadas = unserialize($_SESSION['jugadas']); | ||
+ | .... | ||
+ | $jugada->jugar($clave); | ||
+ | .... | ||
+ | $jugadas[]=$jugada; | ||
+ | .... | ||
+ | $_SESSION['jugadas']=serialize($jugadas); | ||
+ | |||
+ | </source> | ||
+ | |||
+ | |||
==Practica 2== | ==Practica 2== |
Última revisión de 10:32 27 feb 2019
- En este tema tenemos dos prácticas
1.- Implementar el juego de masterMind orientado a objetos
2.- Implementar una calculadora Real/Racional orientada a objetos
Practica 1
- Consiste en hacer el juego de mastermind cuya especificación ya se facilitó
- En este caso lo vamos a implementar orientado a objetos
- Tras un análisis hemos creado dos clases para nuestra aplicación
|
- Vamos a ver cómo las podremos usar en nuestro programa
- Arranca el programa y necesitamos una clave
- Tenemos dos situaciones
1.-Es la primera vez que accedo
Genero la clave La guardo en variable de sesión para próxima sesión
2.-Ya tengo clave
La leo de la variable de sesión. Para probar este requisito visualizaré la clave.
- De todo ello debe encargarse el método estático obtener_clave
//Recupera un objeto de la clase Clave y lo retorna //La clave puede ser que la tenga que recuperar o generar static public function obtener_clave():Clave { return $clave; }
- Cada vez que presiones jugar
- Creamos un objeto de la clase Juego con la jugada
- El méotodo de Jugada llamado jugar analiza el juego y me devuelve un bool que indica si la jugada ha terminado o no.
Recibirá como parámetro la instancia de la clase Clave
public function juega(Clave $clave):bool{ }
- Las varialbe de sesión
- Iremos almacenando un array de jugadas en una variable de sesion
- Igualemnte almacenaremos la Clave en una variable de sesión
- Recuerada que los objetos hay que serializarlos para guardarlos en variables de sesión.
- Tanto para escribirlos
- Como para leerlos
- Deberíamos tener algo parecido a
$jugada = new Jugada(...); .... $jugadas = unserialize($_SESSION['jugadas']); .... $jugada->jugar($clave); .... $jugadas[]=$jugada; .... $_SESSION['jugadas']=serialize($jugadas);