Projeto 10 - Escape Room
Neste projeto, vamos desenvolver um pequeno jogo de fuga, no estilo escape room, em que devemos tentar interagir com os objetos da sala para encontrar uma maneira de sair e completar o jogo. A versão será composta por diversos atores, em que o ator principal terá que interagir com os demais para conseguir progredir nas fases. Para isso, utilizaremos algo que na programação é chamado de variável booleana, que é um tipo de variável que só pode armazenar dois valores: verdadeiro (true) ou falso (false), ou no nosso caso, 0 (falso) e 1 (verdadeiro). Essas variáveis serão usadas para registrar se algo já aconteceu ou não, por exemplo se a variável "abriu porta?" for igual a 0 significa que a porta ainda não está aberta.
Aprenderemos também a usar dois novos blocos, o bloco Mude Cenário que é utilizado para mudar o cenário de fundo do jogo e o bloco Quando Mudar que inicia um conjunto de códigos quando um cenário específico aparece. Para esse jogo teremos 4 cenários: cenário 1 é uma tela de início, cenário 2 é a parte de dentro da casa, cenário 3 a parte de fora da casa e o cenário 4 é a tela de fim de jogo.
Por se tratar de um dos últimos jogos deste material, as explicações serão menos detalhadas e focaremos mais no funcionamento geral de cada personagem.
Blocos Utilizados
O Ator Principal
Começaremos com o código das informações iniciais do ator, usando os blocos Defina Tamanho, Vá Para, Organize para ficar na frente de todos e o bloco Incline para Mover. Usaremos então um bloco Quando Play para colocar o cenário 1, esperar um tempo e mudar para o cenário 2, usando também um bloco Quando Play para criar 3 variáveis booleanas e defini-las como 0, além de esconder todas com o bloco Mostre Variável e, por fim, incluímos os comandos para que o personagem seja controlado pela inclinação do celular.
Agora vamos controlar onde o ator aparece quando trocamos de cenário, utilizando então 3 blocos Quando Mudar: no cenário 2, se o ator já saiu da casa, quando ele voltar aparecerá nessa posição; no cenário 3 irá aparecer naquela posição e no cenário 4 (fim do jogo) ele irá esconder.
O Ator Porta
No ator Porta também teremos 3 tipos diferentes de blocos.
Os blocos Quando Mudar para controlar o comportamento da porta quando trocarmos de cenário, o bloco Quando Play para criar a variável "onde" (0 se estiver dentro da casa e 1 se estiver fora) e esconder a porta na tela inicial e o bloco Quando Encostar que controla a interação do ator principal com a porta. O bloco Quando Play é bem simples, já nos blocos Quando Mudar, iremos definir o tamanho da porta e definir sempre a variável "onde" como 0 ou 1, sendo 0 no cenário 2 e 1 no cenário 3, também esconderemos a porta na tela de fim de jogo (cenário 4). Agora, o principal é a interação do ator Principal com a porta, o objetivo é que quando o ator principal encostar na porta a variável "conferiu porta?" recebe 1 (verdadeiro) e se ele estiver com a chave ("pegou chave" = 1) transmitiremos "sair" para todos atores; se o personagem estiver dentro (onde = 0) muda o cenário para fora e vice-versa, por fim, se a chave ainda não foi pega ("pegou chave" = 0) apenas fala que a porta esta trancada.
O Ator Sentado
O ator Sentado é o ator que dará a chave para o ator Principal quando o mesmo entregar para ele o frango. Então faremos os mesmos 3 tipos de blocos: o bloco Quando Play que irá esconder o ator na tela de início de jogo, o bloco Quando Mudar que irá definir o tamanho do ator, colocar ele na posição certa e mostrá-lo se o ator principal não saiu de casa (visto que quando o ator Principal sair o Sentado não precisa mais aparecer). Por último, teremos o bloco Quando Encostar que irá controlar a interação do Sentado com o ator Principal; quando eles se encostarem e o Principal não estiver com o Frango (Pegou Frango? = 0), o ator apenas falará que está com fome, caso contrário, se Pegou Frango? = 1, o ator irá agradecer, transmitir "comeu" para todos os atores e desaperecer.
O Ator Frango
Em relação ao ator Frango, também teremos os mesmos 3 tipos de blocos, o bloco Quando Play que irá esconder o ator na tela de início de jogo, o bloco Quando Mudar que irá definir o tamanho do ator, colocando ele na posição certa com o bloco Vá Para e mostrando ele se o ator principal ainda não tiver pegado o frango. Além disso, um bloco Quando Encostar no ator Sentado, para que ele desapareça, e um bloco Quando Encostar no principal que irá verificar se ele já conferiu a porta e se o ator sentado está com fome; se isso tiver acontecido então ele "pega" o frango, mudando a variável "pegou frango?" para 1, colocando o frango na frente com o bloco Organize e fazendo ele se mover junto com o principal com o bloco Sempre e Vá Para (Ator).
O Ator Chave
Em relação ao ator Chave, teremos 4 tipos de blocos. Vamos começar com os dois mais simples: o bloco Quando Play que irá esconder o ator na tela de início de jogo e iniciar a variável pegou chave?; o bloco Quando Mudar que irá definir o tamanho do ator, colocando ele na posição certa com o bloco Vá Para e mostrando ele se o ator principal ainda não tiver saído (visto que quando o ator sair a chave irá desaparecer até o fim do jogo). Logo após, teremos um bloco Quando Encostar no principal, que irá verificar se ele já conferiu a porta e conferiu se o ator sentado está com fome; se isso tiver acontecido então ele "pega" a chave, mudando a variável "pegou chave?" para 1, colocando a chave na frente com o bloco Organize e fazendo ela se mover junto com o principal com o bloco Sempre e Vá Para (Ator). Por fim, teremos dois blocos Quando Receber que irão receber os sinais "abriu" e "comeu" que criamos anteriormente, quando receber "abriu" não precisaremos mais da chave e quando receber "comeu" se não tiver pego a chave ainda, irá mostrar a chave.
O Ator Osso
Em relação ao ator Osso, começaremos pelos dois conjuntos de comandos mais simples: o bloco Quando Play que irá esconder o ator na tela de início de jogo e iniciar as variáveis saiu e pegou osso?; os blocos Quando Mudar serão dividios em cenário 2 e cenário 3, no cenário 2 (dentro) iremos definir o tamanho do ator, colocando ele na posição certa com o bloco Vá Para e o bloco gire, mas não mostraremos ele ainda (somente com o bloco Quando Receber comeu), caso já tenhamos pego o osso, iremos esconde-lo também, já no cenário 3 será o contrário, se não tivermos pego o osso (pegou osso? = 0) iremos esconder ele, também esconderemos o osso na tela do final do jogo (cenário 4). Logo após, teremos um bloco Quando Encostar no principal, que irá verificar se ele já saiu, se isso tiver acontecido então ele "pega" a osso, mudando a variável "pegou osso?" para 1, colocando o osso na frente com o bloco Organize e fazendo ele se mover junto com o principal com o bloco Sempre e Vá Para (Ator). Teremos também um bloco Quando Encostar no cachorro, que irá fazer o osso desaparecer e parar os outros blocos. Por fim, teremos um bloco Quando Receber que irá receber "comeu", que criamos anteriormente, mostrando então o osso se não tiver pegado ele ainda (pegou osso? = 0).
O Ator Cachorro
Temos que o código do ator Cachorro é muito simples, visto que ele só aparece no cenário 3, então teremos vários blocos seguidos de um bloco Esconda para esconde-lo nos outros 3 cenários. Para finalizar o jogo, teremos que entregar o osso para o cachorro, então teremos um bloco Quando Encostar em que o cachorro irá fazer cara de triste se não tivermos o osso e irá tocar um som e dizer algo caso estivermos com o osso, mudando então para o cenário 4 (Fim do jogo).
Os Atores Texto
Os atores Texto irão apenas aparecer no cenário 1 e no cenário 4, o texto que aparecerá no cenário 1 é "Objetivo: Saia de Casa", podemos então definir seu tamanho e coloca-lo no centro da tela, esperamos 1 segundo e fazemos ele desaparecer até o fim do jogo. Já o texto que aparecerá no cenário 4 é "Parabéns! Você concluiu o Jogo" que irá aparecer somente quando mudarmos para o cenário 4, então mostraremos o texto e encerraremos o jogo com o bloco Pare tudo.
Para o Futuro
- Implemente sons quando o ator pegar objetos ou abrir portas. (Toque o Som)
- Faça um limite de tempo para completar o jogo.
- Adicione novos obstáculos/fases.