iOSeando

Mi relación con iOS va viento en popa.


Los últimos proyectos en los que estoy trabajando son el episodio 2 de RedLED (que hace que el uno me de vergüenza... estoy aún a tiempo de cancelar el proceso de aprobación... pero casi que no) y un proyecto de RPG sencillito.

La verdad es que he visto un juego que es prácticamente el Adventures in LedLand original pero en casposo (y mira que el Adventures in LedLand original era chungo...). Así que no descarto un remake en el tono original. Aunque ya está bastante avanzada una versión nueva que me fue muy útil para hacer pruebas de conceptos pero no acaba de convencerme.

En la líneas de los juegos, también está en marcha (debería ser revisado en breve) el Muff in Line, un tres en raya con magdalenas para entretener a mis sobrinos. También gratuito. Pensaba que era imbatible, pero ya le hemos sacado el bug y sabemos como ganarle. Algo que se corregirá en la versión siguiente. :)

Por otra parte, hay un pack de aplicaciones de esas que hacen mi vida más fácil y llevadera que tengo entre manos. Ya os contaré más... :D


Comments

aMaHL's Pieces v1.0 en el App Store



Aún no he rellenado los papelajos para usar legalmente las imágenes promocionales para el App Store, pero ya he tramitado la aplicación.

No he tenido tiempo (no tengo vida... XD) para aplicar las sugerencias de los beta testers, porque quería tenerlo en el App Store antes de la semana que viene (en la que estaré en Murcia impartiendo un curso de introducción a la programación de aplicaciones para iPhone).

Os dejo el enlace que he visto en iTunes Connect. :D


Y en el App Shopper


Y unas capturas interesantes...

Hooray!
Comments

Dices v2.0


Replanteamiento de la idea original. Aún hay vueltas que darle, pero he cambiado el registro en tabla por un registro en un UIWebView que permite representar texto con formato.

Además, he incluido un sistema de control de jugadores, para saber por quién estás tirando los dados.

Lo que no me convence es el botón de "All", ni gráficamente ni en funcionalidad. Debería ser un botón que nos permitiera lanzar una tirada configurable.

También estoy pensando en incluir una pantalla de presentación. Todo llegará... :D


Comments

Puzzle (2)

Más screenshots...

Comments

Puzzle

Mientras he ido desarrollando el proyecto, he ido viendo diversos problemas y encontrando limitaciones en los modelos de gestión de los elementos. Ayer hice unas pruebas del sistema en el iPhone y el resultado fue satisfactorio. La gran sorpresa que me llevé fue el tema del multitouch, que permite arrastrar las piezas de manera independiente. Es algo que intuía pero que no tenía confirmado al no haberlo podido probar en el dispositivo (incompatibilidad de versiones de OS de desarrollo y en el terminal).


Algunos de los aspectos positivos y negativos que he encontrado son:
+ El sistema está basado las piezas, luego no necesito reprogramar para cambiar de puzzle (si necesito indicar el número de piezas)
+ He hecho que el sistema ajuste la posición de las piezas a una rejilla de 10x10 pixels, lo que hace más fácil disponerlas.
- Como la imagen de las piezas ha de ser cuadrada, hay una zona transparente.
+ La zona transparente ignora los clicks sobre ella.
- Los clicks se siguen haciendo sobre la zona transparente, aunque sean ignorados. Esto hace que las piezas tengan un tamaño mínimo para ser funcionales. Esto, visto de otra manera, consiste en que si las piezas colindantes solapan la central con zonas transparentes, estas zonas ignorarán los clicks pero no permitirá seleccionar la pieza central. D'Oh!
- Hay un delay entre que hacemos click en la App y vemos todo en pantalla. Tiempo de carga.

La idea original de hacer un puzzle con piezas cuadradas y temática infantil está más que superada. De hecho, las pruebas las hago con piezas "normales" como se ve en la captura. A pesar de eso, quiero que el motor sea más flexible.
Comments

aMahL Puzzle Collection

Estoy trabajando a ratitos sobre un programa de iPhone para hacer puzzles.

De momento el programa detecta las piezas, permite moverlas y rotarlas y las ajusta a una rejilla. Hay muchas cosas que se me ocurren para mejorar el sistema, pero prefiero ir por partes y obtener un producto funcional.

La primera versión tendrá las piezas cuadradas y estará orientada a un público infantil.



Comments

Curso iPhone Programming RWTH Aachen University

Parece que el curso de la Universidad de Stanford no es el único disponible y gratuito... :D
Aunque no se si está en inglés...

URL: http://hci.rwth-aachen.de/iphone

EDIT: Lo bueno de estas cosas es que te las puedes descargar y ya las consultarás.

Comments

Dices 2

Tras leer (parte de) el capítulo 5 de Beginning iPhone 3 Development, he adaptado Dices 2 para que los elementos se reubiquen correctamente si el dispositivo gira. La vista de tabla sigue sin funcionar, aunque los datos de las últimas tiradas si que se almacenan en un array. Me falta el volcado de datos desde el array hasta la tabla, pero me parece que aún hay alguna cosa de las vistas de tabla que se me escapa... supongo que con el tiempo y la práctica caerá por su propio peso.
Comments

Dices 2

Este es el aspecto actual de Dices 2. Me estoy pegando con las vistas de tabla (lo más grande que aparece en la imagen) para conseguir que se lleve un log de los resultados de las tiradas. De momento, los botones con los dibujos de los dados mueven el slider de selección de tipo de dato a las posiciones predeterminadas, aunque a mano se puede poner en cualquier posición. El botón de roll hace la tirada y el número que aparece arriba del todo cambia a un valor aleatorio entre 1 y la posición del slider.

Para las tablas, después de mucho buscar, estoy mirando esto:

Comments

Dices 2

Captura de pantalla de otro de los ejemplos con los que estoy trasteando. Esta vez no me he basado en ningún código que me haya encontrado. La interacción entre elementos es fruto del estudio del capítulo 3 de Begining iPhone 3 Development. Simplemente quería demostrarme que lo estaba entendiendo.

La idea es fácil. El número gordo de arriba muestra el resultado de la última tirada. El botón de roll lanza un dado de N, siendo N el número seleccionado en el slider. El slider puede variar entre 2 y 100. Los botones de abajo desplazan el slider automáticamente (y con animación) a X, siendo X el número indicado en el botón (DX).

La idea final es tener un dado configurable. De momento hace una tirada, pero estudiaré la posibilidad de que haga más de una tirada (seleccionando el número de datos a tirar mediante otro slider. Además, los botones DX serán reemplazados por imágenes de los dados más típicos (concretamente de los dados que tenga por casa...).

Un concepto de diseño a cambiar, ahora que lo veo, es el de poner el número actual del slider en una posición que no sea debajo del mismo, dado que si está ahí se puede ocultar con la mano o con el dedo mientras mueves el slider.
Comments

Minutes to Midnight

En http://www.appsamuck.com/ hay una serie de proyectos (31) relacionados con la programación de iPhone. He mirado hoy el proyecto Minutes to Midnight pero el código que utiliza no me convence puesto que al intentar reproducir las funciones y mirar sus parámetros en la ayuda me he encontrado con que algunas de las llamadas que hace no me salen como opciones en la ayuda del XCode o me salen como no recomendadas. El caso es que he estado mirando por mi cuenta las clases NSDate, NSCalendar y NSTimer para ver como podía hacerlas funcionar y al final he conseguido el resultado buscado.

Las funciones que utilizo para calculas los valores de horas, minutos y segundos actuales los he aprendido buscando en Google. Básicamente el código que utilizo para esto es:

NSDate * date = [NSDate date];

NSCalendar * calendar = [NSCalendar currentCalendar];


unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;

NSDateComponents * comp = [calendar components:unitFlags fromDate:date];


countdownLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", 23 - [comp hour], 59 - [comp minute], 59 - [comp second]];


Además, he estado experimentando con la creación de temporizadores y la llamada de funciones de la aplicación desde el appDelegate.

No pongo el código de todo por tres motivos básicos:
  1. Quiero comentarlo un poquitín y hay algunas cosas del appDelegate que no he acabado de comprender (aunque funcionen).
  2. No tengo aún claro dónde voy a meterlo físicamente (hosting) dado que blogger no permite la subida de archivos. Así que estoy mirando si uso un hosting que tengo contratado o algún servicio del palo de RapidShare o MegaUpload.
  3. También me estoy planteando hacerlo en plan screencast.
Por lo demás, comentar que el botón del screenshot es simplemente un lastre que queda de las primeras pruebas en las que el botón llamaba a la función que actualizaba al etiqueta en lugar de usar un temporizador.
Comments