para criar um novo projeto. A tela para escolher um template de projeto será aberta.
No menu à esquerda, na seção iOS selecione a opção Application. À direita,
selecione Empty Application e clique em Next.
Figura 2.2: Novo projeto de aplicativo iOS.
Criaremos um projeto chamado Impossible. Por que esse nome? Se você reparou
na lista de funcionalidades, nosso protótipo nunca tem um final feliz!
Coloque o nome do projeto como impossible, no campo Product Name.
Como nosso protótipo será apenas para iPhone, no campo
Device escolha
iPhone. Nos demais campos, deixe as opções conforme a figura:
12
Casa do Código
Capítulo 2. Protótipo de um jogo
Figura 2.3: Criando o projeto.
Clique em Next e escolha o local onde o projeto será gravado.
Nesse momento temos o projeto iniciado. Você já pode executá-lo: selecione
iPhone x.x Simulator em scheme e clique em Run. Ao executá-lo, será aberto o simulador de iPhone com uma tela em branco:
13
2.2. Criando a base do jogo
Casa do Código
Figura 2.4: Simulador com tela em branco.
Como desenvolveremos nosso protótipo para o iPhone de tela retina de 4 po-
legadas, no simulador clique em Hardware, Device e escolha a opção iPhone
(Retina 4-inch). O simulador irá mudar para como se fosse um iPhone retina
de 4 polegadas. Caso o simulador fique muito grande em sua tela, clique em Window,
Scale e escolha um percentual de zoom que seja melhor para que você visualize o
simulador inteiro.
2.2
Criando a base do jogo
Hora de começar! Para esse protótipo tentaremos manter as coisas simples e diretas, sempre pensando em aplicar os conceitos necessários para criar o jogo nos próximos capítulos.
Teremos apenas duas classes: uma UIViewController, na qual trataremos
14
Casa do Código
Capítulo 2. Protótipo de um jogo
as ações do jogador, e uma outra classe que terá a lógica do jogo e será respon-
sável por desenhar os objetos na tela. Além dessas duas classes, teremos ainda a
AppDelegate, criada por padrão em qualquer projeto iOS.
A lógica de um jogo normalmente é dividida em diversas classes. Aqui a ori-
entação a objeto se faz realmente necessária para um boa utilização dos elementos do game. Nesse primeiro capítulo, manteremos as coisas simples, concentrando a
lógica em apenas uma classe. Nos próximos capítulos, quando já tivermos passado
pelos conceitos importantes, definiremos a arquitetura do nosso jogo, assim como
dividiremos as responsabilidades em diversas classes.
Game ViewController
A classe GameViewController começará simples. Essa classe é a porta de
entrada do nosso jogo, então ela será a rootViewController de nosso aplicativo.
Vamos criar esta classe como qualquer UIViewController é criada, clicando em
File, New e selecionando File. Na tela para escolher o tipo de arquivo a ser criado, vamos escolher Cocoa Touch na seção iOS, e selecionar Objective-C Class:
Figura 2.5: Criando nova Classe.
Vamos dar o nome da nossa classe como GameViewController, subclasse de
uma UIViewController:
15
2.2. Criando a base do jogo
Casa do Código
Figura 2.6: Criando a GameViewController.
No nosso arquivo GameViewController.m vamos remover o que o Xcode
gerou de código padrão, com exceção do método viewDidLoad, e deixar a classe
assim:
# import "GameViewController.h"
@implementation GameViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
@end
Agora,
vamos alterar a classe
AppDelegate
para que use nossa
GameViewController como
rootViewController.
Para isto, primeira-
mente devemos importar a GameViewController e depois alterar o método
application:didFinishLaunchingWithOptions:.
Altere
o
arquivo
AppDelegate.m.
# import "GameViewController.h"
16
Casa do Código
Capítulo 2. Protótipo de um jogo
// ...
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:
[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
GameViewController *gameVC = [[GameViewController alloc] init];
self.window.rootViewController = gameVC;
[self.window makeKeyAndVisible];
return YES;
}
A lógica do Impossible: criando um loop infinito
A classe que conterá a lógica se chamará Impossible. Essa classe deve herdar
de UIView. Deixe o header Impossible.h com o código padrão criado pelo
Xcode.
# import <UIKit / UIKit.h>
@interface Impossible : UIView
@end
E limpe todo o código padrão gerado no implementation Impossible.m.
# import "Impossible.h"
@implementation Impossible
@end
No iOS um objeto do tipo UIView permite que desenhos sejam executados
sobre a superfície em vez de trabalhar com um Xib ou StoryBoard.
Agora que já temos a GameViewController, que é a porta de entrada, e a
classe Impossible, que representa a lógica do jogo, vamos criar o link entre elas.
Para isso, na classe GameViewController.h criaremos uma propriedade que ar-
mazenará a Impossible e a chamaremos de impossibleView.