Você está na página 1de 56

Assine o DeepL Pro para traduzir arquivos maiores.

Mais informações em www.DeepL.com/pro.

GameMaker
prático:
Estúdio
Projetos de idiomas
-
Ben Tyers
GameMaker prático:
Estúdio
Projetos de idiomas

Ben Tyers
GameMaker prático: Estúdio
Ben Tyers
Worthing, West Sussex, Reino Unido
ISBN-13 (pbk): 978-1-4842-2372-7ISBN-13 (electronic):
978-1-4842-2373-4 DOI 10.1007/978-1-4842-2373-4
Número de controle da Biblioteca do Congresso:
2016962191 Direitos autorais © 2016 por Ben Tyers
Esta obra está sujeita a direitos autorais. Todos os direitos são reservados pela Editora, quer se trate do todo
ou de parte do material, especificamente os direitos de tradução, reimpressão, reutilização de ilustrações,
recitação, transmissão, reprodução em microfilmes ou de qualquer outra forma física e transmissão ou
armazenamento e recuperação de informações, adaptação eletrônica, software de computador ou por
metodologia semelhante ou diferente, agora conhecida ou desenvolvida no futuro.
Nomes, logotipos e imagens de marcas registradas podem aparecer neste livro. Em vez de usar um símbolo
de marca registrada em cada ocorrência de um nome, logotipo ou imagem de marca registrada, usamos os
nomes, logotipos e imagens apenas de forma editorial e em benefício do proprietário da marca registrada, sem
intenção de violar a marca registrada.
O uso nesta publicação de nomes comerciais, marcas registradas, marcas de serviço e termos
semelhantes, mesmo que não sejam identificados como tal, não deve ser considerado como uma
expressão de opinião sobre o fato de estarem ou não sujeitos a direitos de propriedade.
Embora se acredite que as recomendações e informações contidas neste livro sejam verdadeiras e precisas
na data da publicação, nem os autores, nem os editores, nem a editora podem aceitar qualquer
responsabilidade legal por quaisquer erros ou omissões que possam ser cometidos. A editora não oferece
nenhuma garantia, expressa ou implícita, com relação ao material aqui contido.
Diretor administrativo: Welmoed
Spahr Editor-chefe: Steve Anglin
Revisor técnico: Dickson Law
Conselho Editorial: Steve Anglin, Pramila Balan, Laura Berendson, Aaron Black, Louise Corrigan,
Jonathan Gennick, Robert Hutchinson, Celestin Suresh John, Nikhil Karkal, James Markham,
Susan McDermott, Matthew Moodie, Natalie Pao, Gwenan Spearing
Editor coordenador: Mark Powers
Editor de cópias: Karen Jameson
Compositor: SPi Global
Indexador: SPi
Global Artist: SPi
Global
Distribuído para o comércio de livros em todo o mundo pela Springer Science+Business Media New York,
233 Spring Street, 6th Floor, Nova York, NY 10013. Telefone 1-800-SPRINGER, fax (201) 348-4505, e-mail
orders-ny@springer-sbm.com ou acesse www.springer.com. A Apress Media, LLC é uma LLC da
Califórnia e o único membro (proprietário) é a Springer Science + Business Media Finance Inc (SSBM
Finance Inc). A SSBM Finance Inc é uma empresa de Delaware.
Para obter informações sobre traduções, envie um e-mail para rights@apress.com ou acesse www.apress.com.
Os livros da Apress e dos amigos da ED podem ser comprados em grandes quantidades para uso
acadêmico, corporativo ou promocional. Versões e licenças de eBooks também estão disponíveis para a
maioria dos títulos. Para obter mais informações, consulte nossa página da Web Special Bulk Sales-
eBook Licensing (Vendas especiais a granel e licenciamento de livros eletrônicos) em
www.apress.com/bulk-sales.
Qualquer código-fonte ou outros materiais suplementares mencionados pelo autor neste texto estão
disponíveis para os leitores em www.apress.com. Para obter informações detalhadas sobre como localizar
o código-fonte de seu livro, acesse www.apress.com/source-code/. Os leitores também podem acessar o
código-fonte no SpringerLink, na seção Material suplementar de cada capítulo.
Impresso em papel sem ácido
Visão geral do conteúdo

Sobre o autor ...................................................................................................xiii


Sobre o revisor técnico ......................................................................................xv
Agradecimentos ..........................................................................................xvii
Introdução .....................................................................................................xix

■ Capítulo 1: Variáveis .........................................................................................1


■ Capítulo 2: Condicionais....................................................................................9
■ Capítulo 3: Desenho........................................................................................15
■ Capítulo 4: Continuação do desenho ................................................................25
■ Capítulo 5: Entrada pelo teclado e movimento simples.......................................35
■ Capítulo 6: Objetos e eventos ..........................................................................39
■ Capítulo 7: Sprites ..........................................................................................47
■ Capítulo 8: Saúde, vidas e pontuação ...............................................................55
■ Capítulo 9: Mouse ...........................................................................................63
■ Capítulo 10: Alarmes.......................................................................................69
■ Capítulo 11: Colisões ......................................................................................75
■ Capítulo 12: Salas ...........................................................................................85
■ Capítulo 13: Antecedentes ...............................................................................93
■ Capítulo 14: Sons e música..............................................................................99
■ Capítulo 15: Telas de abertura e menu.............................................................105
■ Capítulo 16: Aleatório ....................................................................................113
■ Capítulo 17: Mais movimento (IA básica).........................................................117

iii
■ VISÃO GERAL DO CONTEÚDO

■ Capítulo 18: Arquivos INI ...............................................................................125


■ Capítulo 19: Efeitos.......................................................................................129
■ Capítulo 20: Loops........................................................................................133
■ Capítulo 21: Matrizes.....................................................................................137
■ Capítulo 22: ds_lists......................................................................................147
■ Capítulo 23: Caminhos ..................................................................................153
■ Capítulo 24: Scripts.......................................................................................159
■ Capítulo 25: Dicas e sugestões.......................................................................165
■ Capítulo 26: Criação de um jogo - esboço .......................................................171
■ Capítulo 27: Criação de um jogo - Sprites........................................................173
■ Capítulo 28: Criação de um jogo - sons...........................................................179
■ Capítulo 29: Criando um jogo - Planos de fundo ..............................................181
■ Capítulo 30: Criação de um jogo - Caminhos ...................................................183
■ Capítulo 31: Criação de um jogo - Fontes........................................................185
■ Capítulo 32: Criação de um jogo - Scripts........................................................187
■ Capítulo 33: Criando um jogo - Objetos pai .....................................................193
■ Capítulo 34: Criação de um jogo - Objetos.......................................................199
■ Capítulo 35: Criando um jogo - Salas ..............................................................277
■ Capítulo 36: Criando um jogo - Planilha de progresso ......................................285
■ Capítulo 37: Criação de um jogo - Guia de marcação........................................287
■ Capítulo 38: Criando um jogo - Atribuições de fim de projeto ............................289
■ Capítulo 39: Teste de fim de projeto ................................................................295
■ Capítulo 40: Resumo .....................................................................................307
Índice ...........................................................................................................309

iv
Conteúdo

Sobre o autor ...................................................................................................xiii


Sobre o revisor técnico ......................................................................................xv
Agradecimentos...........................................................................................xvii
Introdução ......................................................................................................xix

■ Capítulo 1: Variáveis .........................................................................................1


Planilha - Variáveis .............................................................................................4
Planilha - Variáveis - Folha de respostas ................................................................6
Projetos básicos ...............................................................................................7
Projeto avançado ...............................................................................................7
Variáveis de fim de jogo do livro...............................................................................8
■ Capítulo 2: Condicionais ...................................................................................9
Planilha - Condicionais.......................................................................................11
Planilha - Condicionais - Folha de respostas..........................................................12
Projetos básicos..............................................................................................12
Projetos avançados ..........................................................................................13
Condicionais do jogo de fim de livro ........................................................................13
■ Capítulo 3: Desenho........................................................................................15
Planilha - Desenho............................................................................................19
Planilha - Desenho - Folha de respostas ...............................................................20
Projetos básicos..............................................................................................21
Projeto avançado .............................................................................................21
Sorteio do jogo de fim de livro................................................................................23

v
■ Capítulo 4: Continuação do desenho ................................................................25
Planilha - Desenho Continuação..........................................................................30
Planilha - Continuação do desenho - Folha de respostas .........................................31
Projetos básicos..............................................................................................32
Projetos avançados ..........................................................................................32
Continuação do sorteio do jogo de fim de livro ........................................................33
■ Capítulo 5: Entrada pelo teclado e movimento simples.......................................35
Planilha - Pressões de tecla e movimento simples ..................................................37
Planilha - Pressionamento de teclas e movimento simples - Folha de respostas ..........37
Projetos básicos..............................................................................................38
Projeto avançado .............................................................................................38
Fim do jogo do livro Pressões de teclas e movimentos simples ......................................38
■ Capítulo 6: Objetos e eventos ..........................................................................39
Planilha - Objetos .............................................................................................43
Planilha - Objetos - Folha de respostas.................................................................44
Projetos básicos..............................................................................................45
Projeto avançado .............................................................................................45
Objetos do jogo de fim de livro...............................................................................45
■ Capítulo 7: Sprites ..........................................................................................47
Planilha - Sprites ..............................................................................................51
Planilha - Sprites - Folha de respostas..................................................................52
Projetos básicos..............................................................................................52
Projeto Avançado.............................................................................................53
Sprites do jogo de fim de livro................................................................................53
■ Capítulo 8: Saúde, vidas e pontuação ...............................................................55
Planilha - Vidas, saúde e pontuação ....................................................................59
Planilha - Lives, Health, Lives, & Score - Folha de respostas ....................................60

Projetos básicos..............................................................................................60
Projetos avançados ..........................................................................................61
Fim do jogo do livro Health, Lives, & Score (Saúde, vidas e pontuação) ...........................61

vi
■ Capítulo 9: Mouse ...........................................................................................63
Planilha - Movimento do mouse...........................................................................66
Planilha - Movimento do mouse - Folha de respostas..............................................66
Projetos básicos..............................................................................................67
Projetos avançados ..........................................................................................67
Fim do jogo do livro Movimento do mouse ................................................................67
■ Capítulo 10: Alarmes.......................................................................................69
Planilha - Alarmes.............................................................................................71
Planilha - Alarmes - Folha de respostas ................................................................71
Projetos básicos..............................................................................................72
Projetos avançados ..........................................................................................73
Fim do jogo do livro - Dez alarmes..........................................................................73
■ Capítulo 11: Colisões ......................................................................................75
Planilha - Eventos de colisão ..............................................................................81
Planilha - Eventos de colisão - Folha de respostas .................................................82
Projetos básicos..............................................................................................82
Projetos avançados ..........................................................................................83
Colisões no final do jogo do livro ............................................................................83
■ Capítulo 12: Salas ...........................................................................................85
Planilha - Salas ................................................................................................90
Planilha - Salas - Folha de respostas ...................................................................90
Projetos básicos..............................................................................................91
Projeto avançado .............................................................................................91
Fim do livro Salas de jogos...................................................................................92

■ Capítulo 13: Antecedentes ...............................................................................93


Planilha - Planos de fundo .................................................................................96
Planilha - Planos de fundo - Folha de respostas .....................................................96
Projetos básicos..............................................................................................97
Projetos avançados ..........................................................................................97
Fundos de jogos de fim de livro .............................................................................97

vii
■ Capítulo 14: Sons e música..............................................................................99
Planilha - Sons e música ..................................................................................102
Planilha - Sons e música - Folha de respostas .....................................................102
Projetos básicos ............................................................................................103
Projetos avançados ........................................................................................103
Sons e músicas do jogo de fim de livro...................................................................103
■ Capítulo 15: Telas de abertura e menu.............................................................105
Planilha - Telas de abertura e menu ...................................................................109
Planilha - Telas de abertura e menu - Folha de respostas ......................................110
Projetos básicos ............................................................................................111
Projeto avançado............................................................................................112
Telas e menu de fim de jogo do livro......................................................................112
■ Capítulo 16: Aleatório ....................................................................................113
Planilha - Aleatório ..........................................................................................114
Planilha - Aleatório - Folha de respostas .............................................................115
Projetos básicos ............................................................................................116
Projeto avançado............................................................................................116
Jogo de fim de livro aleatório ...............................................................................116
■ Capítulo 17: Mais movimento (IA básica).........................................................117
Planilha - Mais movimento ................................................................................122
Planilha - Mais movimento - Folha de respostas ...................................................123

Projetos básicos ............................................................................................124


Projetos avançados ........................................................................................124
Jogo de fim de livro .........................................................................................124
■ Capítulo 18: Arquivos INI ...............................................................................125
Planilha - Arquivos INI .....................................................................................126
Planilha - Arquivos INI - Folha de respostas .........................................................127
Projetos básicos ............................................................................................127
Projeto avançado............................................................................................128
Arquivos INI do fim do jogo do livro .......................................................................128

vii
i
■ Capítulo 19: Efeitos .......................................................................................129
Planilha - Efeitos.............................................................................................130
Planilha - Efeitos - Folha de respostas ................................................................131
Projetos básicos ............................................................................................132
Projetos avançados ........................................................................................132
Efeitos do jogo de fim de livro ..............................................................................132
■ Capítulo 20: Loops ........................................................................................133
Planilha - Loops..............................................................................................134
Planilha - Loops - Folha de respostas .................................................................134
Projetos básicos ............................................................................................135
Projetos avançados ........................................................................................135
Loops do jogo de fim de livro...............................................................................136
■ Capítulo 21: Matrizes .....................................................................................137
Planilha - Matriz..............................................................................................142
Planilha - Matriz - Folha de respostas .................................................................142
Projetos básicos ............................................................................................145
Projetos avançados ........................................................................................145
Matrizes de jogos no final do livro .........................................................................145

■ Capítulo 22: ds_lists .....................................................................................147


Planilha - ds_lists ...........................................................................................150
Planilha - ds_lists - Folha de respostas ...............................................................150
Projetos básicos ............................................................................................151
Projeto avançado............................................................................................151
Fim do jogo do livro ds_list .................................................................................152
■ Capítulo 23: Caminhos...................................................................................153
Planilha - Caminhos ........................................................................................156
Planilha - Caminhos - Folha de respostas............................................................157
Projetos básicos ............................................................................................157
Projetos avançados ........................................................................................157
Caminhos de jogo no final do livro ........................................................................157

ix
■ Capítulo 24: Scripts.......................................................................................159
Planilha - Scripts.............................................................................................161
Planilha - Scripts - Folha de respostas ................................................................162
Projetos básicos ............................................................................................163
Projetos avançados ........................................................................................163
Scripts de jogos de fim de livro ............................................................................163
■ Capítulo 25: Dicas e sugestões .......................................................................165
Scripts Truques.............................................................................................165
Testes ........................................................................................................167
Manuseio de ativos ........................................................................................167
Projetos ......................................................................................................169
■ Capítulo 26: Criação de um jogo - esboço........................................................171
■ Capítulo 27: Criação de um jogo - Sprites ........................................................173
■ Capítulo 28: Criação de um jogo - sons ...........................................................179
■ Capítulo 29: Criando um jogo - Planos de fundo...............................................181
■ Capítulo 30: Criação de um jogo - Caminhos....................................................183

■ Capítulo 31: Criação de um jogo - Fontes ........................................................185


■ Capítulo 32: Criação de um jogo - Scripts ........................................................187
■ Capítulo 33: Criando um jogo - Objetos pai......................................................193
■ Capítulo 34: Criação de um jogo - Objetos .......................................................199
■ Capítulo 35: Criando um jogo - Salas ..............................................................277
■ Capítulo 36: Criando um jogo - Planilha de progresso.......................................285
■ Capítulo 37: Criação de um jogo - Guia de marcação ........................................287
■ Capítulo 38: Criando um jogo - Atribuições de fim de projeto ............................289
Endless Runner..............................................................................................289
Atire nos patos ................................................................................................290
Pontoon......................................................................................................291
Jogo de tiro com rolagem lateral ........................................................................292
Guia de marcação de fim de projeto ...................................................................293
■ Capítulo 39: Teste de fim de projeto ................................................................295
Respostas do papel de teste ...............................................................................299
■ Capítulo 40: Resumo.....................................................................................307

x
Índice............................................................................................................309

xi
Sobre o autor

Ben Tyers é programador freelancer e escritor técnico durante o dia e escritor de romances de ficção
científica e terror à noite. Ele criou seu primeiro jogo de computador em 1984, em um computador ZX
Spectrum 48K, quando tinha oito anos de idade. Sua paixão pela criação continua desde então. Ele possui
várias qualificações relacionadas a computadores. Quando está relaxando, Ben tem uma paixão por filmes
antigos de terror e ficção científica, especialmente filmes B dos anos 1960.

xiii
Sobre o revisor técnico do site

Dickson Law é um hobbista, comentarista e desenvolvedor de extensões do GameMaker com seis anos de
experiência na comunidade. Em seu tempo livre, ele gosta de escrever bibliotecas de uso geral, ferramentas e
artigos sobre técnicas básicas para o GameMaker: Studio. Como programador da Web durante o dia, suas
principais áreas de interesse incluem integração com scripts do lado do servidor e design de API. Ele mora em
Toronto, Canadá.

xv
Agradecimentos

Yellow Afterlife - Obrigado por sua ajuda


Obrigado a todos pelo apoio:
Nathan Brown
Loukas Bozikis
Alesia Buonomo
Kehran Carr
Arik Chadima
Rom Haviv
Zachary Helm
Crédito também para os seguintes pela permissão de
reutilização de seus ativos: Kenney.nl - Sprites de cartas de
baralho http://millionthvector.blogspot.de - Sprites de
naves espaciais Napoleão - Sprite de míssil
New_Regime por Nuclear_Spring - Música de
apoio JM.Atencia - Sprite de nave espacial
inimiga
Arte da capa:
Phaelax - Asteroide
JM.Atencia - Nave inimiga
Napoleon - Sprite de míssil
KennyLand - Explosão

xvii
Introdução

Este livro serve como uma introdução ao uso da GML (GameMaker Language) para a criação de jogos
usando o popular software GameMaker: Studio. O GameMaker: Studio é um pacote de software criado pela
YoYo Games que permite a criação de software para diferentes plataformas, incluindo Windows, HTML5,
Android, iOS e Mac OS X. O software permite a criação rápida de protótipos de jogos. Seu IDE permite a
criação de jogos usando o sistema D&D (Drag & Drop), que permite a criação de jogos com experiência
mínima em programação, e a linguagem de script mais versátil, GML. Ele permite a exportação para várias
plataformas com apenas pequenas alterações no código. De acordo com o site, o software permite
codificação mais rápida do que as linguagens nativas e prototipagem rápida.
Com este livro, você aprenderá 24 elementos de programação que são importantes na criação de um
jogo. Cada seção inclui uma introdução a um novo elemento de programação, alguns exemplos, uma
planilha com chave de respostas, miniprojetos para aplicar seus novos conhecimentos (com um arquivo de
projeto GMZ de exemplo para cada um) e, após cada elemento, há informações sobre como esse código
aprendido será aplicado em um jogo final do livro. Após concluir todas as seções, você colocará em prática
o que aprendeu para criar um jogo de tiro no estilo arcade.
Em seguida, há uma série de tarefas, das quais você pode escolher, para criar um projeto final. Se estiver
lecionando em escolas, poderá incluir isso como parte do trabalho de curso de seus alunos.
Este livro é adequado para estudo em casa ou em uma
sala de aula. O código GML é fornecido no seguinte
estilo:

Código GML nesse


estilo.
Comentários nesse
estilo.

Os ativos na árvore de recursos estão nesse


estilo. Saúde, vidas, pontuação, estão nesse
estilo.
Os eventos estão nesse estilo. Os elementos da interface do usuário (por exemplo, botões) também
são mostrados nesse estilo.
Por exemplo:

draw_self(); //desenha o sprite atribuído a esse


objeto draw_set_font(font_hud); //define a fonte
draw_text(100,100, "Hello World"); //desenha o texto

Este livro pressupõe algum conhecimento básico sobre o uso do GameMaker: Studio. Esta introdução
abrange os fundamentos necessários para realizar os exercícios deste livro. Se estiver usando este livro em
uma escola, é recomendável que você o leia primeiro ou fotocopie-o e entregue-o antes da primeira aula.

xix
■ INTRODUÇÃO

Ao seguir esta introdução, você criará um jogo básico de clicar no objeto. Você aprenderá o básico
sobre como configurar e usar o seguinte:

Fontes Objetos Desenh


Rooms sonoro o de
s Sprites
GUI Alarmes Arquivos INI
Randomização Criar eventos Eventos do mouse
Eventos da etapa

Todos os itens acima serão apresentados quando você criar um jogo simples de clicar no objeto.
Haverá um objeto que aparecerá em posições aleatórias e o objetivo do jogo é clicar nele antes que o
cronômetro se esgote. Cada vez que você clicar no objeto com sucesso, o cronômetro ficará mais rápido. Se
você não clicar no objeto antes que o tempo acabe, o jogo termina.
Recursos
Os recursos deste livro podem ser baixados por meio do link Download Source Code (Baixar código-
fonte) em http://www.apress.com/us/book/9781484223727. Eles incluem todos os recursos divididos por
capítulo, todo o GML do livro e todos os recursos e GML do jogo final. Também há exemplos de respostas
para cada projeto
incluído. Os recursos para essa introdução estão na pasta: Project Assets & GMZ Files ➤ Assets Used In
Main Chapters ➤ Introduction. Há um arquivo de projeto para essa introdução.

Sprites
Sprites são imagens que serão usadas em seu jogo. Você os usará para exibir o jogador, o inimigo e outros
gráficos em seu jogo. Eles estão na pasta de recursos para download: Assets Used In Book ➤ Introduction
(Ativos usados no livro ➤ Introdução). Os sprites serão desenhados fazendo referência ou atribuindo-os a
objetos. Em seguida, carregue os sprites para este jogo.
Há cinco deles: spr_logo, spr_start_game, spr_target, spr_exit e spr_lives.
Você pode criar um novo sprite clicando no botão Criar um sprite, conforme mostrado na Figura i-1:

Figura i-1. Criar botão de sprite

Nomeie o sprite como spr_logo e clique em Load Sprite (Carregar sprite), selecione o arquivo
mostrado abaixo e, em seguida, Open (Abrir), defina a Origin (Origem)
para o centro e clique em OK. Esse processo é mostrado na Figura i-2:

xx
■ INTRODUÇÃO

Figura i-2. Nomeando e carregando um sprite - etapa 1

Repita isso para os sprites restantes, nomeando-os como spr_exit, spr_health, spr_start e
spr_target. Defina a origem de todos os sprites como centro. A origem é o ponto no sprite onde ele será
posicionado na sala.
Mais informações são fornecidas na seção de sprite. Por exemplo, usando o sprite da Figura i-2, a
origem é 112,112.
Se você seguiu corretamente até agora, sua árvore de recursos terá a aparência da Figura i-3.

Figura i-3. A seção do sprite terá a seguinte aparência

Quartos
As salas são onde a ação ocorre e onde você coloca os objetos. Você usará esses objetos para exibir gráficos,
processar a entrada do usuário, reproduzir sons e fazer outras coisas acontecerem.
Criaremos duas salas. A primeira será uma tela inicial que mostrará algumas informações sobre o jogo,
enquanto a segunda sala será onde a jogabilidade real ocorrerá. Primeiro, crie duas salas; nomeie-as
room_menu e room_game. Defina o tamanho da sala para cada uma como 800 por 400.

xxi
■ INTRODUÇÃO

Você pode fazer isso clicando no botão Create a room (Criar uma sala), conforme mostrado no círculo da
Figura i-4:

Figura i-4. Botão Criar sala

Siga estas ações para criar uma nova sala:


1. Clique no botão Criar uma sala, conforme mostrado na Figura i-4.
2. Nomeie a sala e defina as dimensões conforme mostrado na Figura i-5.
3. Salve a sala clicando na marca verde no canto superior esquerdo, como na Figura i-5.

xxii
■ INTRODUÇÃO
Figura i-5. Nomear a sala e definir as dimensões - etapa 2

xxiii
■ INTRODUÇÃO

Agora que você criou uma sala, você tem um local para adicionar objetos.
Repita esse processo para room_game, definindo novamente as dimensões para
800 por 400.

Sons
Os sons podem ser músicas ou efeitos sonoros. Você nomeia cada um deles e usa o código posteriormente
para reproduzir o som quando quiser ouvi-lo. Nós os carregaremos agora para que possamos
simplesmente consultá-los mais tarde.
O exemplo usa dois sons: snd_yeah e snd_you_are_dead.
Você pode fazer isso clicando no botão Criar um som, conforme mostrado na Figura i-6:

Figura i-6. Criar um novo som

Em seguida, navegue até o local onde o arquivo de recurso está armazenado. Dê um nome ao som -
snd_yeah - você pode usar as configurações padrão e, em seguida, clique em OK. Essa etapa é mostrada na
Figura i-7:

xxiv
■ INTRODUÇÃO

Figura i-7. Dê um nome a um som e carregue-o da pasta de recursos - etapa 3

xxv
■ INTRODUÇÃO

Selecione o som apropriado na pasta de recursos, conforme mostrado na Figura i-8:

Figura i-8. Escolha de um arquivo de som para carregar

Repita isso com o arquivo de som snd_you_are_dead.

Fontes
Se quiser exibir texto ou variáveis na tela do seu jogo, será necessário definir e nomear algumas fontes.
Em seguida, você pode definir o desenho para essa fonte quando quiser que ele seja exibido. Uma fonte
pode ser criada clicando no botão Criar uma fonte, conforme mostrado na Figura i-9:

Figura i-9. Criação de uma fonte

Defina o nome da fonte como font_hud e o tamanho como 20 Arial, conforme mostrado na Figura i-10:

Figura i-10. Nomeação e configuração de uma fonte - etapa 4

xxvi
■ INTRODUÇÃO

Objetos
Os objetos são o sangue vital do GameMaker: Studio. Os objetos serão usados para exibir sprites, reproduzir
sons, desenhar texto, detectar movimentos, processar funções, realizar cálculos matemáticos e muito mais.
Em seguida, criaremos os objetos. Há cinco deles: obj_logo, obj_start_game, obj_target, obj_exit e
obj_hud.
Primeiro, crie o objeto obj_logo e atribua o sprite a ele.
Isso pode ser feito clicando no botão Create Object (Criar objeto) mostrado na Figura i-11:

Figura i-11. Criação de um novo objeto

Em seguida, atribua um sprite a esse objeto, atribua o sprite spr_logo, conforme mostrado na Figura i-
12:

Figura i-12. Atribuição de um sprite a um objeto - etapa 5

Em seguida, clique em ok.


Em seguida, crie um novo objeto, obj_start_game, e atribua o sprite spr_start_game.
A próxima etapa é programar alguns eventos. Eventos são coisas que acontecem. Os eventos que
você mais usará são o Create Event (Evento de criação), Step Event (Evento de etapa), Alarm Event
(Evento de alarme) e Draw Event (Evento de desenho). Eles podem ser configurados usando a GUI
integrada do GameMaker: Studio.

xxvii
■ INTRODUÇÃO

Para isso, clique em Add Event e depois em Create Event, conforme mostrado na Figura i-13:

Figura i-13. Criando um evento de criação

Clique na guia de controle, clique e arraste Execute Code (Executar código) para a janela de
ações, mostrada abaixo na Figura i-14:

Figura i-14. Adição de uma ação de código - etapa 5

xxviii
■ INTRODUÇÃO

Na janela aberta, digite o seguinte código:

//verificar se o arquivo ini existe e carregar a pontuação salva


ini-open("savedata.ini"); //abre o arquivo savedata.ini
global.highscore = ini-read_real("score", "highscore", 0); //definir global.highscore como
valor ou definir como 0 se nenhum valor estiver presente
ini-close(); //fechar o arquivo ini - sempre faça isso depois de carregar ou salvar dados
//definir valores iniciais para o jogo:
pontuaçã
o=0;
vidas=5;

Esse código carregará qualquer pontuação alta de uma jogada anterior do jogo para a variável
global.highscore, definirá a pontuação atual como 0 e a vida como 5. Não é importante, neste estágio,
entender esse código. O objetivo deste exercício é aprender como adicionar código GML a um evento.
Quando você tiver adicionado o código, a janela aberta terá a aparência mostrada na Figura i-15.

Figura i-15. Adição de código à ação - etapa 6

xxix
■ INTRODUÇÃO

Em seguida, crie um novo evento, um evento de liberação do botão esquerdo do mouse, conforme
mostrado na Figura i-16:

Figura i-16. Criação de um evento de liberação do botão esquerdo do mouse - etapa 7

Arraste novamente sobre a ação Executar código e adicione o seguinte código, conforme
mostrado na Figura i-17, a essa ação:

room_goto(room_game); //goto a sala room_game

Em seguida, adicione um Draw Event clicando em Add Event, seguido de Draw Event e, depois,
arraste pelo Execute Code. Adicione o seguinte GML a ele:

draw_self(); //desenha o sprite atribuído a esse objeto


draw_set_font(font_hud); //define a fonte
draw_set_halign(fa_center); /define o alinhamento horizontal para o texto
desenhado draw_set_colour(c_black); /define a cor do desenho como preto
draw_text(250,280, "Highscore: "+ string(global.highscore)); //desenha Highscore: mais o
valor de global.highscore

xxx
■ INTRODUÇÃO

Figura i-17. Adição de código ao evento de liberação do botão esquerdo do mouse - etapa 8

Um Draw Event é onde você coloca seu código, ou D&D, para colocar texto e imagens na tela. As
funções de desenho, como draw_text e draw_self, devem ser colocadas no Draw Event. A Figura i-18
mostra essa configuração com o código adicionado.

xxxi
■ INTRODUÇÃO

Figura i-18. Adição de código a um evento de sorteio - etapa 9

Clique em OK para salvar todas as


alterações. Explicação do código
acima:

draw_text(250,280, "Highscore: "+ string(global.highscore)); //desenha Highscore: mais o


valor de global.highscore

Isso desenha o texto na posição 250 na tela e 280 abaixo, em pixels.


global.highscore tem um valor numérico. Como o estamos desenhando com uma string,
"Highscore: ", precisamos convertê-lo também em uma string. O código string(global.highscore)
faz essa conversão. Uma explicação mais a p r o f u n d a d a dos tipos de variáveis é fornecida no
Capítulo 1.
Em seguida, crie um novo objeto obj_exit e atribua o sprite
spr_exit. Crie um evento de liberação do botão esquerdo do
mouse e adicione este código:

game_end(); //fecha o jogo e retorna ao Windows

Isso é tudo para este objeto. Agora você deve conhecer alguns dos conceitos básicos do uso de
Objetos, como a criação de um novo objeto e a definição de um sprite.
Crie um novo objeto obj_target e defina o sprite spr_target.
xxxii
■ INTRODUÇÃO
Em seguida, usaremos um Create Event para configurar algumas variáveis iniciais. Um Create Event é
executado apenas uma vez quando o objeto é criado ou quando uma sala é iniciada, caso o objeto já tenha
sido colocado nela.

xxxiii
■ INTRODUÇÃO

Usaremos esse evento para criar em uma posição aleatória na tela, X, e para baixo na tela, Y, entre 100 e
700.
Em seguida, iniciaremos um Alarme com um valor de 100 menos a pontuação. Isso torna o alarme mais
rápido à medida que a pontuação aumenta, fazendo com que seja cada vez mais difícil clicar a tempo.
Em um Create Event, coloque este código, que escolherá um número inteiro entre 100 e 700, definirá
o cronômetro para 100 menos a pontuação, com um valor mínimo de 5, e definirá um alarme com o
cronômetro:

x=irandom_range(100,700); //define a posição x de forma aleatória


entre 100 e 700 y=irandom_range(100,300); //define a posição y de forma
aleatória entre 100 e 300 timer=100-score; //define o timer como 100
menos a pontuação - para que fique mais rápido
if timer<=5 timer=5; //verifica se é menor que 5, define como
5 se for alarm[0]=timer;

Em seguida, crie um Alarm Event0, conforme mostrado na Figura i-19. Ele será ativado se o jogador não
tiver clicado no objeto a tempo. O GML reproduzirá um som primeiro, reduzirá a vida do jogador em 1 e
criará um novo objeto, depois se destruirá.

Figura i-19. Criação de um evento de alarme para alarm[0] - etapa 10

Arraste para Execute Code e adicione o seguinte código:

audio_play_sound(snd_you_are_dead,1,false);//exibe um som
lives-=1; //reduzir vidas
instance_create(50,50,obj_target); //criar um alvo
instance_destroy(); //destruir a si mesmo

xxxiv
■ INTRODUÇÃO

Crie um evento de liberação do botão esquerdo do mouse no mesmo objeto, obj_target, e coloque o
seguinte código nele:

score+=1; //adicione 1 à pontuação


audio_play_sound(snd_yeah,1,false); //reproduza o som
yeah instance_create(50,50,obj_target); //crie um novo
crânio instance_destroy(); //remova a si mesmo da tela

Em um evento de desenho de obj_target, coloque:

draw_self(); // desenha o sprite atribuído


draw_set_colour(c_red); /define a cor do desenho
draw_rectangle(x-(alarm[0]/2), y-30, x+(alarm[0]/2), y-25,0); //desenha um retângulo que
reduz o tamanho com base no valor de alarm[0]

O código acima desenhará o sprite para o objeto, definirá a cor do desenho como vermelho e, em
seguida, desenhará um retângulo com base no valor atual do alarme - isso servirá como visual para que o
jogador saiba quanto tempo falta para clicar no objeto. Salve esse objeto clicando em OK. Você aprenderá
mais sobre como desenhar formas geométricas na seção 3.
Em seguida, crie um objeto obj_hud. Não há um sprite para esse objeto. Esse objeto será usado como
um objeto de controle que será usado para desenhar um HUD das vidas e da pontuação do jogador. Ele
também monitorará quantas vidas o jogador tem e, se o jogador tiver perdido todas as suas vidas, atualizará
a pontuação máxima se o jogador tiver uma nova pontuação máxima e, em seguida, reiniciará o jogo. Não é
necessário criar esse arquivo; ele será criado automaticamente ao ser salvo, caso ainda não exista. Clique
em Add Event e, em seguida, em Step Event. Adicione o seguinte código ao Step Event:

Se (vidas<0)
{
Se (pontuação>global.highscore)
{
ini-open("savedata.ini");
ini-write_real( "score", "highscore", score);
ini-close(); //fecha o arquivo ini
}
game_restart(); //inicia o jogo
}

Isso é mostrado na Figura i-20. Esse código atualizará o valor salvo no arquivo INI se o valor atual
é maior do que global.highscore.

xxxv
■ INTRODUÇÃO

Figura i-20. Código de evento de etapa para obj_hud - etapa 11

Crie um evento Draw GUI, na guia draw. Esse código configura a fonte, o alinhamento e a cor do
desenho. Em seguida, ele desenha a pontuação e como uma pontuação alta se for maior do que a
anterior global.highscore.

draw_set_font(font_hud); /define a fonte


draw_set_halign(fa_left); /define o alinhamento
draw_set_colour(c_blue); /define a cor do desenho
draw_text(25, 25, "Score: "+string(score)); //desenha a pontuação: + score
if (score <= global.highscore) { draw_set_colour(c_red);} draw_text(300, 25, "
(Highscore: " + string(global.highscore));

Isso faz uso de um evento Draw GUI. Esse tipo de evento será desenhado acima de qualquer outro
objeto na sala e é independente de qualquer visualização. Esse tipo de evento é normalmente usado para
exibir estatísticas de saúde, pontuações, informações sobre o jogador, informações sobre armas etc.
Em seguida, desenhe as vidas como imagens. Há uma ação de arrastar e soltar para isso na seção
Pontuação. Arraste-a e defina-a para desenhar em 500,25 usando o sprite spr_lives, conforme
mostrado na Figura i-21:

xxxvi
■ INTRODUÇÃO

Figura i-21. Desenho de vidas na tela como imagens - etapa 12

Clique em OK duas vezes para fechar as janelas abertas.


Abra o room room_menu para edição clicando nele na árvore de recursos.
Use a guia object para selecionar objetos e, em seguida, coloque um de cada obj_logo, obj_start e obj_exit.
Selecione o objeto e clique na sala para posicioná-lo. Essa etapa é mostrada na Figura i-22:

xxxvii
■ INTRODUÇÃO

Figura i-22. Colocação de objetos na sala - etapa 13

Clique na marca verde no canto superior esquerdo da janela para salvar


essas configurações. Em seguida, abra room_game.
Coloque uma instância de obj_target e uma de obj_hud na sala. Não importa onde você os coloca.
Clique na marca verde no canto superior esquerdo para aplicar as alterações.
Agora, clique em File (Arquivo) e Save As (Salvar como). Dê um nome ao seu jogo e salve-o.
Clique no triângulo verde, mostrado na Figura i-23, no canto superior esquerdo para jogar o jogo.

Figura i-23. Testando o jogo - etapa 14

Comentários
Embora um código bem formatado com ativos nomeados adequadamente possa ser fácil de ler, sempre
vale a pena adicionar comentários a qualquer código. Quando você voltar ou compartilhar o código com
alguém, não precisará perder tempo tentando descobrir ou explicar o que um determinado código faz.
No GameMaker: Studio, há três tipos de comentários que você pode usar. O primeiro tipo é o
uso do double //

xxxviii
■ INTRODUÇÃO

Um exemplo em código seria o seguinte:

/Este é o meu comentário

Em seu jogo, isso teria a seguinte aparência, conforme mostrado na Figura i-24. Qualquer coisa
escrita após o // é comentada e não será processada. Isso pode ser uma linha isolada ou após o código.
A Figura i-24 mostra ambos sendo usados.

Figura i-24. Exibição de um comentário

O próximo tipo usa a tripla ///. Quando colocada na parte superior do bloco de código, ela altera o
padrão Executar um trecho de código para o comentário. Isso também pode ser usado no início de um
trecho de script para que ele apareça no Auto-Complete.
Um exemplo desse código seria:

///Detectar o movimento do mouse

xxxix
■ INTRODUÇÃO

No jogo, isso seria parecido com o mostrado na Figura i-25. Essa é uma ótima maneira de controlar os
blocos de código, especialmente se você os dividir em seções menores.

Figura i-25. Nomeação de um bloco de código

xl
■ INTRODUÇÃO

Você também pode usar blocos de código separados juntos enquanto usa a tripla ///, por
exemplo, como mostrado na Figura i-26.

Figura i-26. Uso de vários blocos de código nomeados

O terceiro tipo permite que você comente várias linhas. As linhas comentadas não serão executadas
quando o jogo for executado.
Esta seção começa com /* e termina com */ .
Por exemplo:

/*
//arma 2
ini-open("save.ini");
global.cash=ini-read_real("main", "cash", 10000);
health=ini-read_real("main", "health", 100);
lives=ini-read_real("main", "lives", 8);
global.hits=ini-read_real("main", "hits", 0);
global.shots=ini-read_real("main", "shots", 0);
global.level=ini-read_real("main", "level", 1);global.weapon_info[3,2]=ini-read_
real("weapon2", "bullets", 10000);
global.weapon_info[6,2]=ini-read_real("weapon2", "shots", 0);
ini-close();
*/

xli
■ INTRODUÇÃO

Isso seria parecido com o mostrado na Figura i-27:

Figura i-27. Comentário de várias linhas

Como antes, qualquer código comentado não será executado.


Agora você deve estar ciente dos elementos básicos que compõem um jogo e de como adicionar GML.

xlii
■ INTRODUÇÃO
CAPÍTULO 1

Variáveis

Esta seção trata dos dois principais tipos de variáveis: strings e números (também conhecidos como valores
reais). Você precisa aprender os diferentes tipos, o que pode fazer com eles, como combiná-los e como
desenhá-los na tela.
As variáveis são uma parte importante de todo jogo. Você pode usar variáveis para coisas como as
seguintes:
• Manter o controle da pontuação, da saúde e da vida
• Processamento de dados
• Execução de funções matemáticas
• Objetos móveis
• Desenho de dados/texto na tela
• Acompanhamento do progresso de um jogador
• Tornar um jogo mais fácil/difícil

■ Observação Há vários tipos de variáveis. Os tipos enfocados neste livro são built-in, instance e global.

As variáveis incorporadas incluem saúde, pontuação e vidas. Elas são automaticamente globais por
natureza e podem ser acessadas por qualquer outro objeto. As variáveis globais definidas pelo usuário
começam com global: por exemplo, global.weapon, que também pode ser acessada por qualquer outro
objeto. Você aprenderá mais sobre variáveis de instância e globais e como usá-las ao longo deste livro.
As variáveis de instância estão relacionadas apenas à instância que a utiliza: por exemplo, x e y e
tamanho.
O código básico para desenhar texto é:

draw_text(x_position, y_position, text);

Um exemplo seria:
Para desenhar texto:

draw_text(100, 100, "Hello World");

Material eletrônico suplementar A versão on-line deste capítulo (doi:10.1007/978-1-4842-2373-4_1) contém


material suplementar, que está disponível para usuários autorizados.

© Ben Tyers 2016 xliii 1


B. Tyers, Practical GameMaker: Studio, DOI 10.1007/978-1-4842-2373-4_1
CAPÍTULO 1 ■ VARIÁVEIS

Para desenhar uma variável com um número (valor real), por exemplo:

weight=250;
draw_text(100, 120, weight);

Crie um objeto, obj_example_1, adicione um Create Event clicando em Add Event, seguido de Create Event.
Adicione o seguinte GML ao Create Event e arraste-o para a ação Execute Code (Executar
código), inserindo o seguinte nome:

example_text="My Name Is Ben" (Meu nome é Ben);

Crie um evento de desenho e adicione o seguinte código. Para isso, selecione o evento de desenho,
depois desenhe e arraste a ação Executar código.

draw_text(200,200,example_text);

Clique no botão OK no canto inferior esquerdo para aplicar as alterações. Isso desenhará o valor de
example_text na posição 200,200 da tela, com 0,0 no canto superior esquerdo. Um exemplo é mostrado na
Figura 1-1:

Figura 1-1. Mostrando vários locais em uma sala

Crie uma sala e coloque uma instância desse objeto na sala. Para isso, clique no b o t ã o Criar uma
sala na parte superior da tela. No editor de salas, na guia Configurações, defina o nome como room_1,
clique na guia Objeto e, em seguida, clique na sala para criar uma instância. Feche a sala, clique em File e
Save As e, em seguida, dê ao projeto o nome de exemplo 1.
Os números reais podem ser inteiros: por exemplo, 20; ou incluir decimais, por exemplo, 3,14.

2
CAPÍTULO 1 ■ VARIÁVEIS

Clique duas vezes em obj_example_1 na árvore de recursos. Em Create Event, clique duas vezes no ícone
de código e adicione o seguinte código na próxima página até a parte inferior e, em seguida, clique na marca
verde no canto superior esquerdo:

my_age=21;

Em seguida, adicione o seguinte ao Draw Event:

draw_text(100, 120, my_age);

Salvar e testar.
Você pode adicionar cadeias de caracteres usando a concatenação:

first_name="Samuel";
last_name="Raven";
my_name=first_name+""+last_name;

Você pode somar cadeias de caracteres, como no exemplo


acima. Você pode fazer operações matemáticas em
números:

bolos=8;
custo=5;
total_cost=cakes*cost;

Você pode realizar cálculos matemáticos em números reais, por exemplo, +, -, * e /. O


GameMaker também permite o uso de outros operadores, como mod e div.
Por exemplo:

a=20;
b=7;

Onde:
c=a mod b; definiria c como 6; (b entra em a duas vezes com um resto de 6).
c=a div b; definiria c como 2 (b entra em c 2 vezes).

Você pode gerar números aleatórios usando várias funções:

number=irandom(20);

O exemplo acima forneceria um número inteiro entre 0 e 20 inclusive (qualquer número no


intervalo fornecido pode ser usado).
Para facilitar o teste, o GameMaker: Studio criará a mesma sequência de números. Você pode substituir
essa configuração usando o seguinte código:

randomize();

Isso só precisa ser feito uma vez, por exemplo, no código de criação da sala.

Não é possível somar números e cadeias de caracteres diretamente. Por exemplo, isso criaria um erro:

example_text="Minha idade é:";


my_age=17;
3
CAPÍTULO 1 ■ VARIÁVEIS
name_and_age=example_text+my_age; //Esta linha cria um erro

4
CAPÍTULO 1 ■ VARIÁVEIS

Você pode converter um número em uma string usando isso:

name_and_age=example_text+string(my_age);

Isso funciona, pois converte o número em uma string e o adiciona à outra string.

draw_text(50,50,name_and_age);
"Minha idade é: 17" na posição 50,50.

Da mesma forma, você pode alterar uma cadeia de caracteres para uma variável; no entanto, isso
causará um erro somente quando não corresponder a um número. Por exemplo, "-5" e "2,45" consistem em
mais do que apenas números, mas real() pode processá-los sem problemas.

a="3.14 ben";
b=real(a);

Definiria um b como 3,14.


Código útil extra:
Com isso, você pode fazer com que o usuário digite um número inteiro ou uma string:

age=get_integer("Age? ", 1);


name=get_string("Name? ", "Enter Your Name Here");

■ Observação Essas funções acima devem ser usadas apenas para fins de teste e são adequadas para
iniciantes. À medida que você avança, deve usar get_integer_async e get_string_async. Há um exemplo para
cada uma delas no manual.

As variáveis também podem ser definidas como true ou false (que também retornam como 1 ou 0,
respectivamente, mas você deve sempre tentar usar as constantes incorporadas, true e false).
Há também constantes incorporadas e você também pode definir suas próprias constantes como macros.
Agora você deve estar ciente dos dois principais tipos de variáveis: primeiro, números, como estes:

idade=10;
pay_per_hour=2,17;
bônus=5000;

E segundo, cordas, como estas:

name="Ben";
level_name="Dungeon";
food="Cheese";
date="Twentieth";

5
CAPÍTULO 1 ■ VARIÁVEIS

Planilha - Variables
1. Circule as definições corretas dessas cadeias de caracteres e números:
"Ben" string / número
"thirty-two" string /
número 32 string / número
"56.5" string / número
39,4 string / número
"Ben is 21" string /
number "London" string /
number "First" string /
number
"nine plus 4" string / número
Usando os seguintes valores:

a=5;
b=10;
c=20;

Elabore as respostas para as perguntas a seguir e, em seguida, verifique-as no GameMaker.

a+b+c
c div a
(a*b)+c
b mod a
(b+c) div a

2. Dadas as seguintes variáveis:

age=21;
month="April";
year="2006";
money=2716;
place="London";
time="2:30";
book="Harry Potter";
dollars=98.55;
day="Tuesday";

Qual das opções a seguir é permitida? Escreva o código correto se estiver errado.

details=book+" is "+string(age);
location=place+" at "+time;
date=year+month;
cash=idade+dinheiro;
pagamento=dia+dólares;
aniversário=dia+""+mês+""+ano;
celebrate_at=place+" "+string(age);
something=real(year)+money;

6
CAPÍTULO 1 ■ VARIÁVEIS
total=age*(money/real(year));

7
CAPÍTULO 1 ■ VARIÁVEIS

Planilha - Variáveis - Resposta Sheet


1. Circule as definições corretas dessas cadeias de caracteres e números:
"Ben" string
"thirty-two"
string 32 number
"56.5" string
39,4 número
"Ben is 21" string
"London" string
"First" string
"Cadeia de caracteres "nove mais 4

Usando os seguintes valores:

a=5;
b=10;
c=20;

Elabore as respostas para as perguntas a seguir e, em seguida, verifique-as no GameMaker.


a+b+c 35
c div a 4
(a*b)+c 70
b mod a 0
(b+c) div a 6
2. Dadas as seguintes variáveis:

age=21;
month="April";
year="2006";
money=2716;
place="London";
time="2:30";
book="Harry Potter";
dollars=98.55;
day="Tuesday";

Qual das opções a seguir é permitida? Escreva o código correto se estiver errado.

8
CAPÍTULO 1 ■ VARIÁVEIS

■ Observação Em alguns casos, mais de uma resposta é possível; por exemplo, você pode transformar
uma cadeia de caracteres em um real e adicionar a um real, ou converter o real em uma cadeia de caracteres e
adicionar a uma cadeia de caracteres.

details=book+" is "+string(age); correct


location=place+" at "+time; correct
date=year+month; correct
cash=idade+dinheiro; correto
payment=day+dollars; incorreto - day+string(dollars);
birthday=day+""+month+""+year; correto
celebrate_at=place+""+string(age); correto
something=real(year)+money; correto
total=age*(money/real(year)); correto

9
CAPÍTULO 1 ■ VARIÁVEIS

Projetos básicos do site


• A) Crie um programa que receba o nome, a idade e a data de nascimento e os
exiba na tela.
1 ponto por tentar responder a esta pergunta - 1 ponto por criar um
exemplo funcional 1 ponto por usar bons nomes de variáveis e formatação
GML organizada

• B) Crie um programa que receba cinco números e calcule a média.


1 ponto por tentar responder a esta pergunta - 1 ponto por usar boas descrições de variáveis

Projeto avançado
• C) Criar um programa em que você insira a data e o programa exiba a etiqueta
correta, como 1º ou 23º.

1 ponto por responder a esta pergunta


1 ponto por boa formatação
2 pontos por usar seu próprio sistema de entrada de dados - 1 ponto por exibir a
saída de forma agradável na tela

NOTAS DE
PROJETOS

Se (número mod 2==0)


{
// desenhará se o número for par
draw_text(50, 50, string(number)+ " is even");
}
Se (idade==20)
{
// desenhará "You Are Twenty" se a idade for igual a 20
draw_text(50,50, "You Are Twenty");
}

As instruções condicionais são usadas para verificar e comparar variáveis (e outros valores, como IDs de

instância, se os sons estão sendo reproduzidos, pressionamentos de teclas, posição do mouse e


outros).

1
0
CAPÍTULO 1 ■ VARIÁVEIS

Fim do jogo do livro Variáveis


O jogo que você criará no final do livro usará uma quantidade razoável de variáveis globais e de instância.
Serão variáveis globais para itens como nível atual, pontuação, dinheiro, vidas, saúde e arma atual; e
para informações sobre a arma, como o nome da arma, seu poder, custo e quantidade atual.
Os asteroides e os inimigos terão sua própria saúde personalizada que será reduzida quando atingidos
por uma bala do jogador.
O jogador controlará uma nave e poderá usar um pressionamento de tecla para disparar a arma
selecionada no momento, se essa arma tiver munição disponível. Se houver, ela criará uma bala e reduzirá a
contagem de armas.
Os asteroides terão variáveis de instância para seu hp, velocidade e direção.
Quando o jogo for iniciado, ele procurará os dados salvos da última vez em que foi jogado. Se houver
dados a serem lidos, o jogo carregará todas as variáveis na memória para serem usadas.
Ao executar o jogo, o jogador verá brevemente uma tela inicial de carregamento e, em seguida, será
levado à tela de seleção de nível. Haverá vários botões para jogar os níveis 1 a 4. Cada botão verificará qual é
o valor atual do nível global para permitir que o jogador jogue apenas os níveis que foram desbloqueados.
Quando o jogador executar o jogo pela primeira vez, somente o nível 1 será desbloqueado, o nível 2 só será
desbloqueado quando o jogador tiver concluído com êxito o nível 1, e assim por diante com os níveis 3 e 4.
Quando um jogador concluir um nível com êxito, todas as variáveis relacionadas ao jogador e às armas serão
salvas, portanto, ao executar o jogo novamente, o jogador poderá continuar de onde parou.
Um objeto de controle exibirá as variáveis vitais na parte superior da tela, usando uma combinação de
gráficos e texto. Ele também monitorará os valores de saúde e vidas; se o jogador ficar sem saúde, por ter
colidido com muitos asteroides, ele perderá uma vida. Se o jogador perder todas as vidas, o jogo termina.
Pense nas variáveis que serão necessárias para realizar isso. Pense em nomes adequados para as
variáveis e se elas devem ser variáveis de instância ou globais.

1
1
CAPÍTULO 2

Condicionais

As instruções condicionais são usadas para verificar e comparar variáveis (e outros valores, como IDs de
instância, se os sons estão sendo reproduzidos, pressionamentos de teclas, funções, posição do mouse e
muito mais).
Portanto, as declarações condicionais serão usadas com frequência. É muito importante ter um bom
entendimento delas. As condicionais podem se combinar com outras funções. As condicionais, ou
combinações delas, podem ser usadas para fazer com que as coisas aconteçam (ou não aconteçam). Por
exemplo:
• Faça uma bola quicar quando ela atingir uma parede
• Faça com que um inimigo dispare uma bala se puder ver o jogador
• Reproduzir efeitos sonoros quando um objeto perde parte de sua saúde
• Desbloquear um nível se uma pontuação for atingida
• Faça um jogador se mover se um botão ou tecla do mouse for pressionado
• Detecte o botão do meio do mouse para mudar uma arma
• Veja se um jogador tem dinheiro suficiente para comprar um upgrade
• Verificar se um jogador está pulando ou não
• Crie um efeito se uma arma for disparada, etc.
Explicadas no sentido mais básico, as condicionais avaliam expressões e executam e realizam ações de
acordo com elas. Por exemplo, considerando os seguintes valores:

a=3;
b=2;
c=5;

Os resultados seriam os
seguintes: (a+b)==c
retorna verdadeiro.
(a==b) retorna falso.

■ Observação Use == ao usar condicionais, em vez de

um único =. O código real será parecido com este:

se (a+b)==c
{

© Ben Tyers 2016 11


B. Tyers, Practical GameMaker: Studio, DOI 10.1007/978-1-4842-2373-4_2
CAPÍTULO 2 ■ CONDICIONAIS

//faça algo se for verdadeiro


show_message("true");
}
mais
{
// faça algo se for falso
show_message("false");
}

Você pode adicionar !, que significa não. Portanto, ! é uma expressão que nega uma sentença lógica.
Assim, uma sentença verdadeira se transforma em uma sentença falsa, e uma sentença falsa se transforma
em uma sentença verdadeira:
!(a==b) retorna verdadeiro se a não for igual a b.
Você pode testar se um som está sendo reproduzido ou não:

se audio_is_playing(snd_background_music)
{
//fazer algo
}

É possível testar o pressionamento de um botão do mouse:

Se (mouse_check_button_pressed(mb_left))
{
//fazer algo
}

Você também pode verificar se há pressionamentos de teclado, por exemplo:

if keyboard_check_pressed(ord('Q'))
{
/Faça algo aqui
}

ord é uma função que identifica um pressionamento de tecla de letras e números de uma forma que o
GameMaker: Studio possa entender. Isso é conhecido como códigos de teclas virtuais e também inclui uma série
de constantes que começam com vk_.
As variáveis também podem ser definidas como verdadeiras ou falsas:

answer=true;
alive=false;

12
CAPÍTULO 2 ■ CONDICIONAIS

Assim:

se (resposta)
{
//Fazer algo
}

executaria qualquer código entre { e }.

se (vivo)
{
//fazer algo na primeira parte
}
mais
{
//fazer algo na segunda parte
}

não executaria a primeira parte, mas executaria a segunda parte.


Você também pode usar operandos e comparações matemáticas ao verificar uma condicional:

a=3;
b=2;
c=5;

(a < b) retorna falso, (c > b) retorna verdadeiro.


Você também pode usar <= para verificar se um valor é igual ou menor que, e >= para verificar se um
valor é igual ou maior que.
Você pode usar os seguintes operadores lógicos, && e and para and, || e or para or. Por exemplo, o
seguinte código será executado se A e a seta para a direita forem pressionados:

Se (keyboard_check(ord('A'))&& keyboard_check(vk_right))
{
//fazer algo se A e a seta para a direita forem pressionados
}

O seguinte verificará qualquer um deles, portanto, executará qualquer código se A for pressionado ou se
a seta para a direita for pressionada ou se ambos forem pressionados:

if (keyboard_check(ord('A'))|| keyboard_check(vk_right))
{
//fazer algo se a seta A ou a seta para a direita for pressionada (ou ambas)
}

13
CAPÍTULO 2 ■ CONDICIONAIS

Planilha - Conditionals
Dadas as seguintes variáveis:

first_name="Bob";
age=24;
city="London";
surname="Scott";
distance=48
seconds=50;
friend=true;
enemy=false;
time=7;
full_name="Bob Scott";
xx=50;

Determine se as afirmações a seguir são verdadeiras ou falsas:

(idade>20) verdadeiro / falso


!(primeiro_nome=="Bob") true / false
(distância<tempo) verdadeiro / falso
(!amigo) verdadeiro / falso
(inimigo) verdadeiro / falso
((first_name+" "+surname)==fulfulname) true / false
(cidade=="Paris") true / false
(time<seconds) verdadeiro / falso

14
CAPÍTULO 2 ■ CONDICIONAIS

Planilha - Condicionais - Resposta Sheet


Dadas as seguintes variáveis:

first_name="Bob";
age=24;
city="London";
surname="Scott";
distance=48
seconds=50;
friend=true;
enemy=false;
time=7;
full_name="Bob Scott";
xx=5;

Determine se as afirmações a seguir são verdadeiras ou falsas:

(idade>20) verdadeiro
!(primeiro_nome=="Bob") false
(distância<tempo) falso
(!amigo) falso
(inimigo) falso
((first_name+" "+surname)==fulfulname) true
(cidade=="Paris") false
(time<seconds) verdadeiro

15

Você também pode gostar