miércoles, 20 de abril de 2011

Mi segunda aplicación Cocoa Capítulo 3 y útimo

Nos queda la parte que lleva el cálculo, se puede usar, pero no sacar beneficios de él:


#import "PrimitivaAppDelegate.h"

@implementation PrimitivaAppDelegate

@synthesize window;
@synthesize numeros,num1,num2,num3,num4,num5,num6;
@synthesize aordenar;

NSInteger shuffleSort(id n1, id n2, void *context){
int resultado = arc4random()%3;
if (resultado==0) {
return NSOrderedAscending;
}
if (resultado==1) {
return NSOrderedDescending;
}
return NSOrderedSame;
}

-(IBAction)boton {
numeros =[NSMutableArray arrayWithObjects:@" 1",@" 2",@" 3",@" 4",@" 5",@" 6",@" 7",@" 8",@" 9",@"10",
  @"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",
  @"21",@"22",@"23",@"24",@"25",@"26",@"27",@"28",@"29",@"30",
  @"31",@"32",@"33",@"34",@"35",@"36",@"37",@"38",@"39",@"40",
  @"41",@"42",@"43",@"44",@"45",@"46",@"47",@"48",@"49",nil];
srand(time(nil));
//agitar al agitador, si no se repiten
NSArray *numerosAgitados;
numerosAgitados = [numeros sortedArrayUsingFunction:shuffleSort context:NULL];  //agitar los numeros
// primer numero
int i1 = rand() % 49;   //el que diga random a elegir entre 49
num1 = [numerosAgitados objectAtIndex:i1];
[num1 retain];
NSMutableArray *numerosAgitados1;
numerosAgitados1 =[[NSMutableArray alloc] initWithArray:numerosAgitados];  
//para quitar un numero
  [numerosAgitados1 removeObjectAtIndex:i1];              //quita el que salio
srand(time(nil));
NSArray *numeros2Agitados;
numeros2Agitados = [numerosAgitados1 sortedArrayUsingFunction:shuffleSort context:NULL]; //agitamos
// segundo numero
    int i2 = rand() % 48;
num2 = [numeros2Agitados objectAtIndex:i2];
[num2 retain];
NSMutableArray *numerosAgitados2;
numerosAgitados2 =[[NSMutableArray alloc] initWithArray:numeros2Agitados];   
//para quitar otro numero
[numerosAgitados2 removeObjectAtIndex:i2];               //quita el que salio
srand(time(nil));
NSArray *numeros3Agitados;
numeros3Agitados = [numerosAgitados2 sortedArrayUsingFunction:shuffleSort context:NULL]; 
// tercer numero
int i3 = rand() % 47;
num3 = [numeros3Agitados objectAtIndex:i3];
[num3 retain];
NSMutableArray *numerosAgitados3;
numerosAgitados3 =[[NSMutableArray alloc] initWithArray:numeros3Agitados];
[numerosAgitados3 removeObjectAtIndex:i3];
srand(time(nil));
NSArray *numeros4Agitados;
numeros4Agitados = [numerosAgitados3 sortedArrayUsingFunction:shuffleSort context:NULL]; 
// cuarto numero
int i4 = rand() % 46;
num4 = [numeros4Agitados objectAtIndex:i4];
[num4 retain];
NSMutableArray *numerosAgitados4;
numerosAgitados4 =[[NSMutableArray alloc] initWithArray:numeros4Agitados];
[numerosAgitados4 removeObjectAtIndex:i4];
srand(time(nil));
NSArray *numeros5Agitados;
numeros5Agitados = [numerosAgitados4 sortedArrayUsingFunction:shuffleSort context:NULL]; 
// quinto numero
int i5 = rand() % 45;
num5 = [numeros5Agitados objectAtIndex:i5];
[num5 retain];
NSMutableArray *numerosAgitados5;
numerosAgitados5 =[[NSMutableArray alloc] initWithArray:numeros5Agitados];
[numerosAgitados5 removeObjectAtIndex:i5];
srand(time(nil));
NSArray *numeros6Agitados;
numeros6Agitados = [numerosAgitados5 sortedArrayUsingFunction:shuffleSort context:NULL]; 

// sexto numero
int i6 = rand() % 44;
num6 = [numeros6Agitados objectAtIndex:i6];
[num6 retain];
aordenar = [NSMutableArray arrayWithObjects:num1,num2,num3,num4,num5,num6,nil];
[aordenar sortUsingSelector:@selector(compare:)];
    [eti1 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:0]]];
[eti2 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:1]]];
[eti3 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:2]]];
[eti4 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:3]]];
[eti5 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:4]]];
[eti6 setText:[NSString stringWithFormat:@"%@",[aordenar objectAtIndex:5]]];
}

-(void)applicationDidFinishLaunching:(UIApplication *)application{
[window makeKeyAndVisible];
}


@end

Y ejecutando:
Lo que falta se puede obtener con google. Ahora ando viendo como lo hago con Android.

Cordiales

miércoles, 6 de abril de 2011

Mi segunda aplicación Cocoa Capítulo 2

Hoy vamos con los enganches, hay que utilizar el Interface Builder: doble click en MainWindow.xib.
Cuando estén pintados las etiquetas y el botón quedará así:
Es bastante tosco pero el caso es que funcione.
El arrastrar es fácil, tecla control, primero desde el botón hasta PrimitivaAppDelegate, que habremos incluido antes en MainView:
Y cada una de las etiquetas:
Hasta aquí lo bonito, lo que mola, para el próximo y último capítulo el código que gererará los números aleatorios.

Bye



lunes, 28 de marzo de 2011

Mi segunda aplicación Cocoa Capítulo 1

Para empezar el nuevo proyecto elegimos "Windows-Based" dentro de IOS:




Cuando estémos en Xcode la clase creada "Primitiva" la podemos borrar, ya que con las primitivas no vamos más que mostrarlas, si se hiciera algo con ellas, como imprimir, o sacar estadísticas si que la necesitaríamos.


Queda así:







Y a codificar: añádanse un botón y 6 etiquetas



@interface PrimitivaAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
IBOutlet UIButton *boton;
IBOutlet UILabel *eti1;
IBOutlet UILabel *eti2;
IBOutlet UILabel *eti3;
IBOutlet UILabel *eti4;
IBOutlet UILabel *eti5;
IBOutlet UILabel *eti6;
}

Los campos de trabajo, cada número generado y un par de ARRAYS con la colección de números, que al final saldrán en la ventana ordenados de menor a mayor:

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) NSMutableArray *numeros;
@property (nonatomic, retain) NSMutableArray *aordenar;
@property (nonatomic, retain) NSString *num1;
@property (nonatomic, retain) NSString *num2;
@property (nonatomic, retain) NSString *num3;
@property (nonatomic, retain) NSString *num4;
@property (nonatomic, retain) NSString *num5;
@property (nonatomic, retain) NSString *num6;


El total del código de PrimitivaAppDelegate:
//  PrimitivaAppDelegate.h
//  Created by JBZ on 25/03/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.

#import <UIKit/UIKit.h>

@interface PrimitivaAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
IBOutlet UIButton *boton;
IBOutlet UILabel *eti1;
IBOutlet UILabel *eti2;
IBOutlet UILabel *eti3;
IBOutlet UILabel *eti4;
IBOutlet UILabel *eti5;
IBOutlet UILabel *eti6;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) NSMutableArray *numeros;
@property (nonatomic, retain) NSMutableArray *aordenar;
@property (nonatomic, retain) NSString *num1;
@property (nonatomic, retain) NSString *num2;
@property (nonatomic, retain) NSString *num3;
@property (nonatomic, retain) NSString *num4;
@property (nonatomic, retain) NSString *num5;
@property (nonatomic, retain) NSString *num6;

-(IBAction)boton;

@end

En la próxima entrega engancharemos las etiquetas y el botón.

Bye



viernes, 25 de marzo de 2011

Mi segunda aplicación COCOA capítulo 0

Bien, mis intenciones son hacer mi segunda aplicación en Cocoa, además de dejar escritos los pasos en la nube.
La aplicación va a ser muy sencilla, pero útil: va a generar primitivas, que no son más que combinaciones de 6 números elegidos entre 49 posibles.

El programa se encargará de generar la combinación de 6 números, que por supuesto no está garantizado que nos toque.

Vamos al lio:

CUADERNO DE CARGA

Modelo
Como Cocoa es un lenguaje orientado a objetos, hay que tener presente qué objetos vamos a utilizar; sencillo vamos a tener una clase que será Primitiva, que tendrá como atributos 6 números.

Vista
La pantalla tendrá un NSLabel donde se mostrará la combinación generada. Y un botón tal que al pulsarlo se genere la combinación aleatoria.

Controlador
Se encargará de crear el objeto apuesta de la clase Primitiva; será el encargado de hacer que la apuesta generada sea aleatoria. Como añadido ha de elegir 6 números de 49, pero no puede repetirlos, la invocación a la función random() podría repetir los números, y es aquí donde está la dificultad.

miércoles, 26 de enero de 2011

¿Voy en contra de la nueva ley SINDE?

Pues si voy en contra de la ley, que me lo digan y borro este post:


Sí, he quitado los 7000 enlaces, si alguien iba a usarlos, google lo puede resolver.

A seguir bien

martes, 28 de diciembre de 2010

Adios CNN+

Adios, CNN+ ya ha cerrado.
Veía el canal desde que estuve abonado a Digital+, era de lo poco que se salvaba de su parrilla, cuando pasó a ser emitido en TDT volví a verlo, a informarme además de con otros con él.
Es una pena. Esta mañana al levantarme, ya no estaba ahí, en su lugar había un bucle de GH24. Y he tenido que hacerlo, he borrado el canal, no soporto la basura desde mi ventana al mundo.

Parece que en Navidad paran

Parece que en Navidad paran, llevo desde el 22 sin recibir ninguna llamada de mis acosadores favoritos.
Feliz navidad y todas esas cosas.