Para ello he creado un menú totalmente simple, con una imagen de fondo y tan sólo dos opciones. Jugar y visitar el código fuente del juego (ya que tengo pensado publicar el juego a modo de "donación" por un precio de 79 céntimos).
Las letras del menú estarán animadas para dar un poco más de vida, y además, mostraremos la puntuación más alta obtenida en nuestras partidas anteriores.
En la definición de la cabecera de la clase "MenuScene" no debemos definir nada, salvo importar la clase "JuegoLayer" ya que necesitamos esta clase, para iniciar el juego.
#import#import "JuegoLayer.h" #import "cocos2d.h" @interface MenuScene : CCLayer {} +(CCScene *) scene; @end
Y ahora, toca implementar el menú. Como ya he dicho, necesitaremos poca cosa, un CCMenu, dos CCMenuItemLabel, un CCSprite como fondo, un CCShaky3D (para la animación del menú), y selectores para cada pulsación de los elementos del menú.
#import "MenuScene.h" @implementation MenuScene +(CCScene *) scene { // 'scene' is an autorelease object. CCScene *scene = [CCScene node]; // 'layer' is an autorelease object. MenuScene *layer = [MenuScene node]; // add layer as a child to scene [scene addChild: layer]; // return the scene return scene; } // Aquí montaremos el menú, encajando cada pieza en su sitio -(id) init { // always call "super" init // Apple recommends to re-assign "self" with the "super" return value if((self=[super init])) { CCSprite *fondo = [CCSprite spriteWithFile: [[NSBundle mainBundle] pathForResource:@"Inicio" ofType:@"png"]]; fondo.position = ccp(240,160); [self addChild:fondo]; //Defino el botón Jugar, poniendole como texto "Play", fuente "Arial", tamaño 30 y además, //El selector que indicará que acción realizará al ser pulsado CCMenuItemLabel *jugar = [CCMenuItemLabel itemWithLabel:[CCLabelTTF labelWithString:@"Play" fontName:@"Arial" fontSize:30] target:self selector:@selector(jugarPulsado)]; //Igual que he definido el botón Jugar, defino el de ir a esta página web. CCMenuItemLabel *informacion = [CCMenuItemLabel itemWithLabel:[CCLabelTTF labelWithString:@"Source Code" fontName:@"Arial" fontSize:24] target:self selector:@selector(website)]; //Cambiando el anchorPoint de esta manera, obtenemos un texto alineado a la derecha jugar.anchorPoint = ccp(jugar.anchorPoint.x*2,0); informacion.anchorPoint = ccp(informacion.anchorPoint.x*2,0); //Una vez definidos los botones, los añadimos a un "CCMenu" y lo posicionamos CCMenu *menu = [CCMenu menuWithItems:jugar, informacion, nil]; [menu alignItemsVertically]; menu.position = ccp(465,25); [self addChild:menu]; //Este es el efecto que tendrán las letras del menú CCShaky3D *efecto = [CCShaky3D actionWithRange:5 shakeZ:NO grid: ccg(4,4) duration:5]; [menu runAction:[CCRepeatForever actionWithAction:efecto]]; self.isTouchEnabled = YES; int puntuacionAnt; if([[NSUserDefaults standardUserDefaults] valueForKey:@"Score"] != nil) { // The key existed... puntuacionAnt = [[NSUserDefaults standardUserDefaults] integerForKey:@"Score"]; } else { puntuacionAnt = 0; } CCLabelTTF *puntuacionAnterior = [CCLabelTTF labelWithString:[NSString stringWithFormat:@"Puntuación: %d",puntuacionAnt] fontName:@"Arial" fontSize:24]; puntuacionAnterior.anchorPoint = ccp(0,0); [self addChild:puntuacionAnterior]; puntuacionAnterior.position = ccp(100,150); } return self; } -(void) jugarPulsado{ CCTransitionFlipY *action = [CCTransitionFlipY transitionWithDuration:1 scene:[HelloWorldLayer scene]]; [[CCDirector sharedDirector] replaceScene:action]; } -(void) website{ //¡Así se abre una página web desde un juego! NSString *link = @"http://indie-veloper.blogspot.com/2011/08/tutorial-cocos2d-juego-completo-parte-1.html"; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:link]]; } @end
Y con esta última entrada, se acaba el tutorial de un juego completo bajo Cocos2D
Código Fuente
Excelente tutorial Diego, te aviso cuando lo termine y te contaré que tal me fue, saludos!!! y muchas gracias!
ResponderEliminarSeria posible volver a subir el codigo fuente por los problemas ya conocidos de megaupload.
ResponderEliminarGracias
Hola, gracias por el tutorial esta genial, bueno la cosa es si es posible que subieras el código fuente a otro servidor, es que tengo un fallo y no se cual es y la verdad me gustaría averiguarlo, sobre todo para no volverlo a cometer :P
ResponderEliminarMuchas gracias
He vuelto a subir el proyecto a Mediafire, lo teneis en http://indie-veloper.blogspot.com.es/p/codigo-fuente-y-proyecto-xcode-de-smash.html
ResponderEliminarSaludos
Muchísimas Gracias!!!!!
ResponderEliminar