Escolar Documentos
Profissional Documentos
Cultura Documentos
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
iii
■ VISÃO GERAL DO CONTEÚDO
iv
Conteúdo
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
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
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
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
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
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:
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:
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:
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
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.
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:
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:
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
xxv
■ INTRODUÇÃO
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:
Defina o nome da fonte como font_hud e o tamanho como 20 Arial, conforme mostrado na Figura i-10:
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:
Em seguida, atribua um sprite a esse objeto, atribua o sprite spr_logo, conforme mostrado na Figura i-
12:
xxvii
■ INTRODUÇÃO
Para isso, clique em Add Event e depois em Create Event, conforme mostrado na Figura i-13:
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:
xxviii
■ INTRODUÇÃO
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.
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:
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:
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:
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
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:
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á.
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:
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
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.
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
xxxvii
■ INTRODUÇÃO
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
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.
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:
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.
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.
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
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 é:
Um exemplo seria:
Para desenhar texto:
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:
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:
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;
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;
bolos=8;
custo=5;
total_cost=cakes*cost;
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).
number=irandom(20);
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:
4
CAPÍTULO 1 ■ VARIÁVEIS
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);
■ 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;
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;
a+b+c
c div a
(a*b)+c
b mod a
(b+c) div a
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
a=5;
b=10;
c=20;
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.
9
CAPÍTULO 1 ■ 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º.
NOTAS DE
PROJETOS
As instruções condicionais são usadas para verificar e comparar variáveis (e outros valores, como IDs de
1
0
CAPÍTULO 1 ■ VARIÁVEIS
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.
se (a+b)==c
{
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
}
Se (mouse_check_button_pressed(mb_left))
{
//fazer algo
}
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
}
se (vivo)
{
//fazer algo na primeira parte
}
mais
{
//fazer algo na segunda parte
}
a=3;
b=2;
c=5;
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;
14
CAPÍTULO 2 ■ CONDICIONAIS
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;
(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