¿Quieres suscribirte a todos nuestros blogs? Hazlo desde aquí | Contacta | Publicidad | Empresas | Acerca de factormac.com | LOGIN
Programación en Cocoa y Objective-C (V)

Programación en Cocoa y Objective-C (V)

Santiago Fernández | 22-04-2008

Y llegamos a la quinta edición del tutorial de programación en Cocoa. Creados los outlets y las acciones, vamos a ir escribiendo el código.

Antes de nada, os refresco la memoria: en la parte IV dije que íbamos a definir ciertos datos con código, y en la parte III dije que para ejecutar ciertas órdenes antes de que la aplicación se iniciara, se hacía así:

- (void)awakeFromNib
{
accionAEjecutar;
}

En ese caso, manos a la obra! En primer lugar, borremos ese feo texto del NSTextField:

[hasganado setStringValue:@" "];


Ahora, colocamos los valores mínimos y máximos de los NSStepper entre 0 y 5, dejando así que el usuario elija entre 6 opciones por canal de color:

[frojo setMinValue:0]; // Valor mínimo
[frojo setMaxValue:5]; // Valor máximo
[fverde setMinValue:0]; // Valor mínimo
[fverde setMaxValue:5]; // Valor máximo
[fazul setMinValue:0]; // Valor mínimo
[fazul setMaxValue:5]; // Valor máximo

Probablemente os habréis fijado en esas dos barras y el texto que viene después de ellas. Son comentarios, su existencia no afecta al programa en ningún sentido. Son sólo anotaciones.

Ahora, pasemos a algo más divertido: generar los tres números aleatorios que definirán el valor de los canales rojo, verde y azul del color que el usuario debe conseguir: el “color objetivo” en nuestro juego.

Para ello, usaremos la función random() y srandom(). La primera genera números aleatorios en base a una “semilla”. La segunda genera una “semilla” (un número en base al cual generar números aleatorios) a partir de un número.

Y, ¿cuál será el número que introduciremos? Pues nada más y nada menos que la fecha y hora en formato de Internet o formato Unix, un número que cambia a cada segundo.

srandom([[NSDate date] timeIntervalSince1970]);
// Genera la hora en formato UNIX y se la pasa
//a srandom(). La semilla sólo se genera una vez
//para todo el programa.
double rrojo = random() % 6;
// Genera un número aleatorio, lo divide entre 6
//y devuelve el resto de la operación. Esto genera
//un número entre 0 y 5, lo cual encaja con los
//valores mínimos y máximos del NSStepper. Este
//número se guarda en una variable de tipo double.
double rverde = random() % 6;
// Ídem
double razul = random() % 6;
// Ídem

Ahora vamos a comprobar que el tono creado no es un tono de gris. Los tonos de gris son aburridos y restarían emoción al juego. Como lo comprobamos? Usando la sentencia while.

La sentencia while recibe una condición. Si esa condición se cumple (por ejemplo: 2+2 == 4) entonces realiza una serie de acciones y vuelve a comprobar la condición. En el momento que esa condición no se cumpla, las acciones se omitirán y el código seguirá.

while (rrojo == rverde && rverde == razul) {
// Si rojo, verde y azul son iguales, entonces es
//un tono de gris, así que vuelve a generar tres
//colores aleatorios.
rrojo = rand() % 6;
rverde = rand() % 6;
razul = rand() % 6;
}

Pasado mañana escribiremos el resto del código de nuestra aplicación, sin pararnos en nada que se haya visto antes.

Artículos relacionados:


Para hacer un trackback a este artículo, usa esta URL
Para seguir los comentarios de este artículo por RSS, usa este enlace

No hay ningún comentario



(obligatorio)
¿Añadir la URL de tu blog?


Sindicación

Nube de tags

Redactores

Publicidad



Buscador


   Haz INTRO para realizar la búsqueda

Más comentado

Categorías

Archivo



Publicidad



Blogroll

Créditos





factormac.com © 2008 - Algunos derechos reservados - Aviso Legal

Waimoo