Leite Anderson - Desenvolvimento de Jogos para iOS стр 10.

Шрифт
Фон

Casa do Código

Capítulo 2. Protótipo de um jogo

@property (nonatomic, strong) UILabel *gameScoreLabel;

- (void)increaseScore:(int)points;

Na Impossible.m vamos instanciar o label do score e implementar o método

que aumenta o score:

- (id)init

{

//...

// Criação do Label que exibirá o score do jogador

self.gameScoreLabel = [[UILabel alloc]

initWithFrame:CGRectMake(20.0f, 85.0f, 300.0f, 30.0f)];

self.gameScoreLabel.font = [UIFont systemFontOfSize:25.0f];

self.gameScoreLabel.textColor = [UIColor whiteColor];

self.gameScoreLabel.backgroundColor = [UIColor clearColor];

self.gameScoreLabel.text = @"0";

[self addSubview:self.gameScoreLabel];

//...

}

// Soma Pontos

- (void)increaseScore:(int)points

{

if (self.running == YES) {

self.score += points;

self.gameScoreLabel.text = [NSString stringWithFormat:@"%d",

self.score];

}

}

No método que recebe o evento de toque, incrementaremos os pontos. Atualize

o método handleTapGesture: do arquivo GameViewController.m:

- (void)handleTapGesture:(UITapGestureRecognizer *)gesture

{

if (gesture.state == UIGestureRecognizerStateEnded) {

[self.impossibleView moveDown:10];

[self.impossibleView increaseScore:100];

}

}

41

2.8. Criando botões de interface do usuário

Casa do Código

O jogo deve estar assim:

Figura 2.15: Score aparece na tela.

2.8

Criando botões de interface do usuário

Outro conceito importante em jogos é a possibilidade de interagir com elementos

de configuração do game. Poder pausar o jogo, entrar em uma tela para mudar, por

exemplo, a dificuldade ou mesmo fechar e sair do jogo são partes importante do

desenvolvimento.

No protótipo, ilustraremos esse conceito com duas opções na tela, para Restart

(reiniciar) e Stop (parar). Simplificaremos para entender o conceito, e depois, poderemos converter para botões mais interessantes.

42

Casa do Código

Capítulo 2. Protótipo de um jogo

No arquivo GameViewController.m crie os botões e métodos para o Restart

e Stop:

- (void)viewDidLoad

{

//...

// Botão para Reiniciar o jogo

UIButton *buttonRestart =

[UIButton buttonWithType:UIButtonTypeCustom];

[buttonRestart setTitle:@"Restart"

forState:UIControlStateNormal];

buttonRestart.contentHorizontalAlignment =

UIControlContentHorizontalAlignmentLeft;

buttonRestart.frame = CGRectMake(20.0f, 170.0f, 80.0f, 35.0f);

[buttonRestart addTarget:self

action:@selector(restart:)

forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:buttonRestart];

// Botão para Parar o jogo

UIButton *buttonStop =

[UIButton buttonWithType:UIButtonTypeCustom];

[buttonStop setTitle:@"Stop" forState:UIControlStateNormal];

buttonStop.contentHorizontalAlignment =

UIControlContentHorizontalAlignmentLeft;

buttonStop.frame = CGRectMake(20.0f, 250.0f, 80.0f, 35.0f);

[buttonStop addTarget:self

action:@selector(stop:)

forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:buttonStop];

}

- (void)restart:(id)sender

{

// Reinicia o jogo

// Já vamos aprender o que fazer aqui!

}

- (void)stop:(id)sender

{

// Para o jogo

43

2.8. Criando botões de interface do usuário

Casa do Código

// Já vamos aprender o que fazer aqui!

}

Rode o jogo e veja que os botões de Restart e Stop já aparecem na tela.

Figura 2.16: Botões de Restart e Stop na tela.

Agora, precisaremos de uma forma de parar e reinicializar as propriedades do

game. No arquivo Impossible.h defina os métodos restart e stopGame:

- (void)restart;

- (void)stopGame;

No arquivo Impossible.m implemente estes métodos. Repare que, para o

restart, utilizaremos uma abordagem simples de reinicialização.

44

Casa do Código

Capítulo 2. Protótipo de um jogo

// Para o Jogo

- (void)stopGame

{

self.running = NO;

}

// Reinicia o jogo, redefinindo as variáveis

- (void)restart

{

self.enemyX = 0;

self.enemyY = 0;

self.enemyRadius = 0;

self.playerRadius = 25;

self.playerX = 160;

self.playerY = 275;

self.score = 0;

self.gameScoreLabel.text = @"0";

self.gameOverLabel.text = @"";

self.running = YES;

}

Precisamos agora alterar para que o toque dos botões chame estes métodos da

classe Impossible. Na GameViewController.m, altere os métodos restart:

e stop: :

- (void)restart:(id)sender

{

[self.impossibleView restart];

}

- (void)stop:(id)sender

{

[self.impossibleView stopGame];

}

A tela final do protótipo deve estar assim:

45

2.9. Adicionando mais vida: imagens da nave e do céu

Casa do Código

Figura 2.17: Protótipo final.

2.9

Adicionando mais vida: imagens da nave e do céu

Temos toda a lógica do protótipo rodando e já podemos, finalmente, alterar alguns elementos visuais para finalizar o protótipo do jogo e fechar os conceitos básicos.

Vamos desenhar um background que simule um céu escuro com estrelas. Para

isso, utilizaremos a imagem sky.png. Um ponto importante é reparar que quanto

mais sprites forem adicionados ao jogo, mais esforço computacional, o que pode

tornar o jogo mais lento. Mais a frente, utilizaremos frameworks que otimizam essa questão.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке