classe CCMenu representa o menu onde estes botões estarão posicionados. Com estas classes, o Cocos2D já sabe se estamos tocando em um botão, se estamos segurando-o, ou se o soltamos.
O que precisamos agora é:
Criar os 4 botões: Play, Highscore, Help e Sound.
Configurar suas posições
Adicioná-los à tela inicial
No init da TitleScreen.m, criaremos nosso menu com os botões:
- (id)init
{
self = [super init];
if (self) {
//...
72
Casa do Código
Capítulo 4. Tela inicial: Lidando com Background, logo e botões de menu
// Cria os botões
CCMenuItemSprite *playButton = [CCMenuItemSprite
itemWithNormalSprite:[CCSprite spriteWithFile:kPLAY]
selectedSprite:[CCSprite spriteWithFile:kPLAY]
target:self
selector:@selector(playGame:)];
CCMenuItemSprite *highscoreButton = [CCMenuItemSprite
itemWithNormalSprite:[CCSprite spriteWithFile:kHIGHSCORE]
selectedSprite:[CCSprite spriteWithFile:kHIGHSCORE]
target:self
selector:@selector(viewHighscore:)];
CCMenuItemSprite *helpButton = [CCMenuItemSprite
itemWithNormalSprite:[CCSprite spriteWithFile:kHELP]
selectedSprite:[CCSprite spriteWithFile:kHELP]
target:self
selector:@selector(viewHelp:)];
CCMenuItemSprite *soundButton = [CCMenuItemSprite
itemWithNormalSprite:[CCSprite spriteWithFile:kSOUND]
selectedSprite:[CCSprite spriteWithFile:kSOUND]
target:self
selector:@selector(toggleSound:)];
// Define as posições dos botões
playButton.position = ccp(0.0f, 0.0f);
highscoreButton.position = ccp(0.0f, -50.0f);
helpButton.position = ccp(0.0f, -100.0f);
soundButton.position = ccp((SCREEN_WIDTH() / -2.0f) + 70.0f,
(SCREEN_HEIGHT() / -2.0f) + 70.0f);
// Cria o menu que terá os botões
CCMenu *menu = [CCMenu menuWithItems:playButton,
highscoreButton,
helpButton,
soundButton,
nil];
[self addChild:menu];
}
return self;
}
@end
73
4.9. Conclusão
Casa do Código
Perceba
que
nossos
botões
foram
criados
utilizando
a
classe
CCMenuItemSprite, que representa um botão com uma imagem ( sprite).
Existem diversos tipos de botões, tais como o CCMenuItemLabel para textos, o
CCMenuItemImage para UIImages, entre outros. Por padrão, os botões incluídos
no menu serão centralizados no meio da tela. Ou seja, ao posicionar um botão na
posição (0,0), ele aparecerá no centro da tela.
Quando criamos os botões, informamos os parâmetros target e selector,
que indicam os métodos chamados cada vez que um botão for selecionado. Falta
apenas criar estes métodos em nossa TitleScreen.m:
- (void)playGame:(id)sender
{
NSLog(@"Botão selecionado: Play");
}
- (void)viewHighscore:(id)sender
{
NSLog(@"Botão selecionado: Highscore");
}
- (void)viewHelp:(id)sender
{
NSLog(@"Botão selecionado: Help");
}
- (void)toggleSound:(id)sender
{
NSLog(@"Botão selecionado: Som");
}
Rode o projeto e confira os botões recebendo os inputs no console.
4.9
Conclusão
O jogo deve estar como mostrado na tela abaixo, com background e logo configura-
dos. Além disso, 4 botões foram implementados: Play, Highscore, Help e controle
de Som.
74
Casa do Código
Capítulo 4. Tela inicial: Lidando com Background, logo e botões de menu
Figura 4.7: Tela de abertura.
O core do desenvolvimento de um jogo não é fácil. Repare na evolução do pro-
tótipo para o jogo real que estamos criando e perceberá que partes complexas foram encapsuladas pelo Cocos2D.
Nesse capítulo, fomos um pouco mais a fundo em questões como telas (
CCScene), camadas ( CCLayer), menus ( CCMenu) e botões ( CCMenuItem). Uti-
lizamos também um importante elemento
do Cocos2D, o CCDirector.
A seguir, faremos a transição para a tela do jogo e teremos nossos primeiros
elementos do game.
75
Capítulo 5
Tela do jogo e objetos inimigos
Hora de adicionar perigo ao nosso game! Nesse capítulo iremos entrar na tela do
jogo de fato, onde toda a ação ocorrerá. Essa será a principal parte do jogo e por isso trataremos em alguns capítulos.
Para iniciar, passaremos pela transição da tela de abertura para a tela de jogo.
Além disso, colocaremos os inimigos na tela. Alguns conceitos importantes do Co-
cos2D serão utilizados nesse capítulo, cujo objetivo é ter a tela do game rodando, com alguns inimigos surgindo.
Utilizaremos muito do que já foi visto até aqui, como CCLayers para represen-
tar camadas de uma tela, CCSprites para controlar objetos e CCScene para criar
a tela do jogo. Além disso o CCDirector será utilizado novamente.
No fim desse capítulo teremos a transição entre tela de abertura e tela do game,
além dos objetos inimigos aparecendo na tela.
5.1. GameScene
Casa do Código
Figura 5.1: Meteoros inimigos.
5.1
GameScene
Precisamos de uma tela para o jogo, para conter os elementos principais de iteração do game como player, inimigos e controles. Assim como anteriormente, criaremos
uma tela herdando da classe CCLayer do Cocos2D, para que possamos ter diversas
camadas atuantes, como botões, inimigos, player, score etc.
Também como anteriormente, a definição de uma tela é criada através de um
CCScene, que saberá lidar com as camadas da nossa classe.