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

Шрифт
Фон

17

2.2. Criando a base do jogo

Casa do Código

# import <UIKit / UIKit.h>

# import "Impossible.h"

@interface GameViewController : UIViewController

@property

(nonatomic, strong) Impossible *impossibleView;

@end

Na GameViewController.m inicializaremos nossa impossibleView e adi-

cionaremos ela à tela:

- (void)viewDidLoad

{

[super viewDidLoad];

// Instancia um objeto do tipo Impossible

self.impossibleView = [[Impossible alloc] init];

// Define o tamanho dele, com base no tamanho da tela

self.impossibleView.frame = CGRectMake(0.0f,

0.0f,

self.view.frame.size.width,

self.view.frame.size.height);

[self.view addSubview:self.impossibleView];

}

Pode rodar seu projeto novamente, mas ainda não temos bons resultados! Parece

que um jogo ainda está longe de se concretizar, mas até o final do capítulo você já terá um protótipo para mostrar.

Game Loop

Normalmente os jogos têm um primeiro conceito importante: um

loop

infinito, conhecido como game loop ou main loop.

O jogo é uma série de iterações nesse loop infinito. Nele, o jogo define posições de elementos, desenha-os na tela, atualiza valores como placar, verifica colisões entre elementos. Isso tudo é realizado diversas vezes por segundo, em que cada tela desenhada é chamada de frame. Uma boa analogia são os desenhos feitos em blocos de papel, onde cada desenho (frame) é um pedaço da animação. Ao passar tudo

rapidamente temos a impressão de movimento.

18

Casa do Código

Capítulo 2. Protótipo de um jogo

Figura 2.7: Desenho animado em bloco de papel.

Esse conceito é extremamente importante e, com o passar do tempo, difícil de

lidar no desenvolvimento de um jogo. Com vários objetos tendo diversas possibi-

lidades na tela a chance de perder o controle é grande. Por isso, tente sempre criar métodos pequenos, com pouca responsabilidade. Dessa forma, encontrar o que pode

estar errado fica muito mais fácil.

Vamos colocar o nosso loop infinito dentro da classe Impossible. Para isto,

criaremos um timer que chamará um método 60 vezes por segundo, repetidamente.

Também teremos a propriedade running que controlará se o jogo está em execução

ou não. Primeiramente, inclua o código abaixo no Impossible.h:

@property (nonatomic, strong) NSTimer *gameRunTimer;

@property (nonatomic) BOOL running;

Então altere também o Impossible.m:

- (id)init

{

self = [super init];

19

2.3. Desenhando o objeto principal

Casa do Código

if (self) {

// Timer que executa o Game Loop ("run") 60 vezes por segundo

self.gameRunTimer = [NSTimer

scheduledTimerWithTimeInterval:1.0f/60.0f

target:self

selector:@selector(run)

userInfo:nil

repeats:YES];

// Variável para controlar a execução do jogo

self.running = YES;

}

return self;

}

// Game Loop

- (void)run

{

if (self.running == YES) {

NSLog(@"Impossible Running...!");

}

}

Como criamos nosso timer dentro do

init, no momento em que a

Impossible for criada ela já começará a repetir o run 60 vezes por segundo.

Rode o projeto novamente. Temos nossa primeira saída, ainda não muito em-

polgante. O console exibe Impossible Running...! infinitamente.

2.3

Desenhando o objeto principal

O motor do nosso jogo já está ligado, funcionando a todo vapor, porém nada acon-

tece na tela. Nosso próximo passo será definir o objeto principal, que chamaremos de Player. Nosso player será bem simples, apenas um elemento gráfico, no caso um

círculo. Pode parecer simples mas jogos 2D são objetos triviais que são animados

muitas vezes por segundo. No nosso caso temos um círculo, mas podemos trocar

por qualquer recurso ou imagem melhor trabalhado para definir um personagem

interessante.

Com a popularização dos smartphones e dos jogos casuais, esse tipo de player

simples de jogos 2D reapareceu com muita força. O nome atribuído a esses objetos

20

Casa do Código

Capítulo 2. Protótipo de um jogo

é Sprite, que nada mais são que imagens, normalmente retangulares ou mesmo

quadradas, com fundos transparentes.

Você pode encontrar Sprites de diversos jogos clássicos na internet. Procure

no Google por sprites mais o nome de um jogo que você goste. Comece a imaginar

como esse jogo funciona com o que falamos

até aqui.

Figura 2.8: Sprites do famoso Mario Bros.

Utilizando iOS UIView e CGContext

Para desenhar elementos na tela do jogo no iPhone, temos algumas opções. Po-

deríamos criar os objeto pelo próprio Xib ou StoryBoard do Xcode. Porém, para que possamos entender como funciona o desenho dos objetos de um game, realizaremos

todo o desenho através de códigos.

Quando desenhamos na vida real, precisamos de ferramentas como pincéis e um

lugar para utilizá-las, como papel ou telas. O elemento UIView no iOS representa

essa tela, na qual podemos desenhar diversas formas ou mesmo Sprites. Para ter

acesso a esse elemento, podemos declarar nossa classe como sendo uma tela, por

meio da UIView.

21

2.3. Desenhando o objeto principal

Casa do Código

Ao utilizar uma UIView, temos um tipo de View especializado em exibir dese-

nhos na tela. O principal propósito da UIView é fornecer o que precisamos para

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

0
Шрифт
Фон

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