Facebook Twitter E-mail RSS
formats

Curso iOS –> Assignment II, CH5 – Controller: Object-Oriented, superclassing (Part 1)

Publicado en 18/07/2013 en Curso de Stanford

Una vez tenemos el modelo acabado, debemos crear la vista para el nuevo juego de cartas que vamos a añadir a la aplicación. Aun así, antes de hacerlo vamos a crear primero la nueva jerarquía de ViewControllers para compartir el máximo código posible.

Hacemos primero esto para que la conexión entre los controladores y la vista se pueda hacer directamente, ya que si intentamos crear primero la vista conectándola con el controlador y luego cambiamos la jerarquía de controladores podemos tener problemas (como mínimo vamos a tener que modificar algunas cosas).

 

Lo que debemos hacer es renombrar la clase CardGameViewController a CardMatchingGameViewController y crear otra clase MatchGameViewController. Ahora debemos quedarnos en CardGameViewController con la parte comuna del código, la parte que todos los controladores de juegos de cartas van a compartir. De igual forma, debemos trasladar a MatchGameViewController la parte de código propia del mismo, que sea diferente para cada juego.

Leer más…

 
formats

Curso iOS –> Assignment II, CH4 – Model: redoing the movements descriptor

Publicado en 15/07/2013 en Curso de Stanford

Vamos a acabar el modelo de una vez por todas. Tal y como dijimos en el anterior capítulo vamos a modificar la implementación de la parte del modelo que nos devuelve la descripción de los movimientos realizados durante la última partida.

En lugar de hacer que el modelo construya el string de descripción de un movimiento, vamos a crear una clase auxiliar CardMatchingGameMovement, que se encargará de guardar todos los datos necesarios para describir un movimiento (tipo de movimiento, cartas implicadas en él y puntuación obtenida), de forma que el modelo tendrá un array de CardMatchingGameMovement. De esta forma, será el ViewController que, a partir de estos datos, se encargará de construir la descripción definitiva.

 

Lo primero que vamos a hacer es crear esta nueva clase, que lo único que va a tener van a ser unas cuantas propiedades que van a guardar todo lo necesario para describir un movimiento completamente. Como siempre, vamos a intentar que sea lo más genérica posible, de forma que pueda servir para cualquier juego de cartas que creemos en el futuro.

Leer más…

 
formats

Curso iOS –> Assignment II, CH3 – Model: SetGame

Publicado en 14/07/2013 en Curso de Stanford

Para acabar el modelo tan solo nos falta la clase SetGame. Para hacerlo, vamos a modificar primero CardMatchingGame para hacerla del todo genérica, creando luego tanto la nueva clase SetGame como otra clase MatchGame, que será el juego del assignment 1. De esta forma tendremos una superclase que nos servirá para “todos” los juegos que vayamos a añadir en el futuro, haciendo que todos los juegos “reales” hereden de esta superclase.

 

Para hacerlo, lo primero que vamos a hacer es eliminar los define y hacer las puntuaciones parametrizables. Es decir, vamos a convertir flipCost, matchBonus y mismatchPenalty en propiedades readonly, de manera que cada una de las subclases sobrescriban los getters, devolviendo el valor deseado dependiendo del juego. Como siempre, puede que esta no sea la mejor solución; por ejemplo, se podría hacer que estas propiedades se tuvieran que suministrar en el método inicializador, ahorrándonos el tener que crear una subclase para cada juego diferente.

De la misma forma, vamos a modificar la propiedad booleana twoCardMode para que pase a llamarse numberCardsToMatch, de manera que no limitamos la clase a hacer match de 2 o 3 cartas.

Leer más…

 
formats

Curso iOS –> Assignment II, CH2 – Model: SetCard, SetCardDeck

Publicado en 14/07/2013 en Curso de Stanford

En este capítulo vamos a modificar el modelo para hacerlo compatible con el nuevo juego de cartas, Set. Vamos a añadir una nueva subclase tanto de Card (SetCard) como de Deck (SetCardDeck), para en el siguiente capítulo acabar el modelo cambiando la jerarquía de CardMatchingGame, para hacerla compatible con los dos juegos diferentes, pero a la vez compartiendo el máximo de código posible.

 

En los siguientes tres capítulos vamos a cubrir las required tasks 3 y 4 de este segundo assignment:

“The Set game only needs to allow users to pick sets and get points for doing so (e.g. it does not redeal new cards when sets are found). In other words, it works just like your other card game (except that it is a 3 card (instead of 2 card) match with different kinds of cards).” 

 “Choose reasonable amounts to award the user for successfully finding a set (or incorrectly picking cards which are not a set).”

Leer más…

 
formats

Curso iOS –> Assignment II, CH1 – View: UITabBarController

Publicado en 10/07/2013 en Curso de Stanford

En este primer capítulo del segundo assignment tan solo vamos a tocar el storyboard de nuestra aplicación, dejándolo preparado para poder cambiar entre los dos juegos de cartas mediante un UITabBarController.

 

Se puede decir que en este capítulo vamos a cubrir las dos primeras required tasks del segundo assignment:

“Add a tab bar controller to your application. One tab will be the game you built last week in Assignment 1. The other tab will be a new game, Set. Set is still a card game, so a good solution to this assignment will use object-oriented programming techniques to share a lot of code.” 

“Don’t violate any of the Required Tasks from Assignment 1 in the playing card game tab (in other words, don’t break any non-extra-credit features from last week). The only exception is that your playing card game is required to be a 2-card-match-only game this week, so you can remove the switch or segmented control you added for Required Task #5 in Assignment 1. Your Set game is a 3-card matching game.” 

Leer más…

 
© Programación iOS
credit