INTRODUÇÃO A JOGOS
Aula 05 - Pontuação
(Atualizado 08/02/2015)
Hoje vamos aprender a fazer uma pontuação para nosso jogo. Usaremos a variável global score para contar nossa pontuação.
Usaremos uma engine pronta, e estudaremos seus códigos:
[GM:S] DOWNLOAD DA ENGINE
[GM8] DOWNLOAD DA ENGINE
Execute ela, veja que os objetos de pontuação são as bolinhas amarelas (dots). Veja também que temos dois marcadores, um marca a pontuação e o outro marca o número de dots coletados.
Agora vamos ao obj_controle no evento Game Start:
[GAME MAKER 8]
Código: Selecionar todos
//score inicial 0
score=0
//dots coletados são 0
global.dotss=0
//mostrar informação do jogo
show_info()
Código: Selecionar todos
//score inicial 0
score=0
//dots coletados são 0
global.dotss=0
//Não mostra highscore
global.show_hg = -1;
Pronto, agora já sabemos que toda vez que o jogo começar ou ser reiniciado a pontuação e o número de dots será zero.
Vamos ao objeto principal de pontuação, o obj_dot. No evento Collision com o obj_player:
Código: Selecionar todos
//destrói o objeto
instance_destroy()
Código: Selecionar todos
//adicionando mais 15 pontos
score+=15
//adicionando mais 1 dot
global.dotss+=1
Bom, agora que já sabemos adicionar pontos, vamos aprender a desenhá-los na tela. Vá ao evento draw do obj_controle:
[GAME MAKER 8]
Código: Selecionar todos
//Seta cor branca
draw_set_color(c_red)
//Transparencia
draw_set_alpha(0.7)
//Pontos
draw_text(10,10,"Pontos: "+string(score))
//Dots
draw_text(320,10,"Dots: "+string(global.dotss))
/*Legenda:
-draw_set_color(c_red): cor vermelha
-draw_set_alpha(0.7): opacidade do texto
-draw_text(10,10,"Pontos: "+string(score))
10: posição x do texto
10: posição y do texto
"Pontos: ": é uma palavra, e quando desenhamos uma palavra, frase ou texto devem vir sempre entre apóstrofos.
+: este sinal indica que adicionaremos mais um texto ao texto anterior.
string(score): este é o texto que juntamos com "pontos: ", mas como score só guarda números, convertemos ele para
texto usando string().
Para quem tem o GM: Studio é mais complicado mostrar a tabela de highscore. Isso porque suas funções ficaram obsoletas, então eu coloquei para que quando você aperte ENTER a lista seja desenhada na tela com o script show_highscore:
Código: Selecionar todos
//Texto
draw_set_font(font_arial)
//Scores
draw_text_color(10,10,"Pontos: "+string(score),c_white,c_white,c_white,c_white,0.7)
//Dots
draw_text_color(320,10,"Dots: "+string(global.dotss),c_white,c_white,c_white,c_white,0.7)
//Se teclar a tecla <ENTER> aparece o Highscore
if keyboard_check_pressed(vk_enter)
{
//valor será -valor (Ou seja, se for 1 será -1 e se for -1 será 1)
global.show_hg = -global.show_hg
}
if global.show_hg == 1
{
show_highscore()
}
/*Legenda:
10: poisição x do texto
10: posição y do texto
"Pontos: ": é uma palavra, e quando desenhamos uma palavra, frase ou texto devem vir sempre entre apóstrofos.
+: este sinal indica que adicionaremos mais um texto ao texto anterior.
string(score): este é o texto que juntamos com "pontos: ", mas como score só guarda números, convertemos ele para
texto usando string().
HIGHSCORES:
Em quase todos os jogos temos o highscores (Pontuações máximas), que são as melhores pontuações feitas em um jogo. Agora vamos entender como é feito o sistema de highscores em nosso jogo.
O jogo é finalizado quando o player colidi com um inimigo ou coleta todas as dots.
Primeiro vamos ao evento Collision do player com o inimigo:
[GAME MAKER 8]
Código: Selecionar todos
//mostra quem fez mais pontos. E se você acabou de bater o recorde pode digitar seu nome
highscore_show(score)
//resetando o jogo
game_restart()
[GAMEMAKER: STUDIO]
Código: Selecionar todos
//Se você acabou de bater o recorde pode digitar seu nome
highscore_get_score()
//resetando o jogo
game_restart()
[GAME MAKER 8]
Código: Selecionar todos
//se o múmero de dosts for 0
if instance_number(obj_dot)=0
{
//mostra uma mensagem com o texto "Parabéns. Você venceu!"
show_message("Parabéns. Você venceu!")
//adiciona mais 100 pontos
score+=100
//mostra quem fez mais ponto. E se você acabou de bater o recorde pode digitar seu nome
highscore_show(score)
//resetando o jogo
game_restart()
}
Código: Selecionar todos
//se o número de dosts for 0
if instance_number(obj_dot)=0
{
//mostra uma mensagem com o texto "Parabéns. Você venceu!"
show_message("Parabéns. Você venceu!")
//adiciona mais 100 pontos
score+=100
//Se você acabou de bater o recorde pode digitar seu nome
highscore_get_score()
//resetando o jogo
game_restart()
}
Chegamos ao fim de mais uma aula, até a próxima!
Próxima aula: A definir
FLWS!