Recapitulando
Isso meio que conclui a primeira parte do tutorial - exceto que vamos fazer mais uma coisa pra tornar o jogo mais fácil de jogar:
Eu acho que você percebeu que se o Tim não consegue cair numa plataforma, ele continua em queda livre (esse é outro comportamento que você recebe junto com o behavior Platform). Se não houver um chão pra impedir a queda, ele vai continuar caindo até sair completamente da área do jogo. Pra evitar que seja preciso executar novamente o layout por conta disso, podemos trazê-lo de volta pra o topo (claro que às custas de um pouco da vida dele, se estivermos trabalhando com pontuação). Fazemos assim:
Condição: Player -> Is outside layout (na seção 'Size & Position')
Ação: Player -> Set position -> X: 370, Y: 100
Isso é suficiente pra que quando ele cair pra fora do jogo, ele seja transportado de volta pra o piso mais abaixo - mas a menos que a gente também mude a animação do PlayerImages, ele vai parecer que está caindo mesmo depois de ter sido transportado pra o chão de novo. Então, vamos mudar a animação para 'Standing' - só que também precisaremos cobrir a situação em que o Tim caia enquanto a seta do teclado ainda está sendo pressionada, assim ele vai cair correndo.
Isso significa que a animação resultante da condição 'Platform On landed' vai depender de outra condição: se o Player está se movendo ou não. Dois sub-events 'either/or' são necessários:
Primeiro, adicione o event principal:
Condição: Player ->Platform On landed
Depois clique com o botão direito na seta verde no canto mais esquerdo do evento no menu drop-down que aparece, escolha 'Add', depois no sub-menu, escolha 'Add sub-event':
Condição: Player-> Platform: Is moving
Ação: PlayerImages -> Set animation -> "Running"
Agora adicione outro sub-event com a mesma condição:
Condição: Player-> Platform: Is moving -> invert it
Ação: PlayerImages -> Set animation -> "Standing"
... de forma que na sua event sheet, o event principal e seus dois sub-events fiquem assim:
Já que estamos mexendo nisso, vamos dar ao Tim uma expressão de susto enquanto ele cai:
Condição: Player -> Platform: On fall
Ação: PlayerImages -> Set animation -> "Falling"
Bem, esse é o fim da primeira parte desse tutorial sobre Platform. A próxima parte cobre problemas específicos de pontuação em jogos de plataforma, onde é preciso saber a diferença entre diferentes andares e ter pontuações diferentes para eventos que acontecem em cada um deles.
Antes de continuar, você pode querer fazer uns testes nas propriedades do behavior Platform do Player e ver quais os efeitos que essas mudanças causam no comportamento do Tim (e ver como isso torna o jogo mais fácil ou difícil):
Uma outra mudança que você pode testar é na velocidade de execução do PlayerImages (na Properties Bar quando você clica em Animations - Edit, essa opção é exibida em 'Speed' como quadros por segundo).
[page="
Parte 2: Pontuação"]
Parte 2: Pontuação
Nos jogos de plataforma, a pontuação geralmente precisa levar em consideração a localização em particular onde um evento acontece. Antes da gente mexer nisso, aqui está o esquema de pontuação que usaremos para esse jogo tutorial:
1. O Tim ganha pontos conforme ele pula de andar para andar:
-- +1 para o primeiro andar (Numeração Britânica de andares, onde o chão que ele está pisando é o térreo e o primeiro andar é o andar acima - assim como arrayz com base zero ;) )
-- +2 para o segundo andar
-- +7 para o andar do topo (refletindo a dificuldade de chegar lá!)
2. É preciso uma pontuação de 25 para ir para o próximo nível (então o Tim vai ter que continuar pulando entre os andares pra ganhar pontos suficientes).
3. Ele só ganha pontos quando ele pula para um andar acima do que ele está, e não para um andar abaixo.
4. Ele tem 3 pontos de vida pra começar e perde 1 cada vez que ele cai para fora do layout.
5. O jogo acaba quando a vida do Tim chega a 0 ou abaixo disso.
Obviamente, vamos precisar de uma forma de saber em que andar o Tim pisou, pra que a gente possa dar os pontos apropriados pra esse andar. E precisamos de uma forma de saber se o Tim subiu ou desceu de andar.
Primeiro, vamos cirar duas variáveis globais para armazenar os valores variáveis da pontuação e da vida do Tim, e dar a elas os valores iniciais necessários:
Adicione uma global variable (variável global): score (deixe o valor padrão como 'Number' e o valor inicial em 0).
Adicione uma global variable: health (deixe o valor padrão como 'Number' e o valor inicial em 3).
(Se você não tem certeza como criar essas variáveis, veja a página 6 do 'Guia para iniciantes ao Construct 2'.)
O valor inicial da variável score precisará ser reiniciado quando o Tim cair para fora do layout e voltar para o primeiro piso e o valor de health precisará ser diminuído em um:
Agora, como vamos saber se o Tim está subindo ou descendo os andares? Bem, se soubermos qual o andar que o Tim está agora e qual o andar que o Tim estava da última vez que verificamos, podemos comparar os valores: se o valor do andar atual for maior que o andar anterior, ele está subindo, e vice-versa.
Então, vamos primeiro precisar gravar o nível de cada andar. Pra fazer isso, nós definimos instance variables (variáveis de instância) para cada instância do object Flooring (em outras palavras, para cada andar no layout). Isso é explicado no Guia para iniciantes ao Construct 2. Na imagem abaixo, cada item numerado se relaciona ao número de passos nas instruções que o seguem:
(1) Vá para a visualização do Layout 1 e clique no sprite do piso térreo. (2) Na Properties Bar, clique em 'Edit variables: Add / edit', e a janela 'Flooring: Instance variables' abrirá. (3) Clique no ícone 'Add' e na caixa de diálogo 'New instance variable', (4) insira 'floor' em 'Name' e clique em 'OK' (deixando os demais campos com os valores padrão). Não feche a janela 'Flooring: Instance variables' - vamos a proveitar a oportunidade para definir os pontos para cada andar.
Clique no ícone 'Add' novamente e adicione uma segunda instance variable chamada 'points'. (deixe os outros campos como estão.)
Você deve estar vendo estas duas variáveis de instância aparecendo na Properties Bar:
That's set the 'floor' and 'points' values for the ground floor. Now we need to do the same for the other floors. Still in the Layout 1 view, click on the first floor sprite. In the Properties Bar, replace each '0' for 'floor' and 'points' with '1':
Clique no sprite do segundo andar e digite '2' em 'floor' e '2' em 'points'. No andar de cima digite '3' em 'floor' e um poderoso '7' para 'point'.