Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Tarefa III - interação com coordenadas
- 05/03/2018 - 09/03/2018
- Dificuldade:
- ★★★★☆ (+20 / -5 pontos de glória)
- Descrição:
- Crie um código que gere uma textArea a cada novo mapa em uma coordenada x,y aleatória, mas com altura (100px) e largura (300px) fixas. Ela possui as seguintes propriedades:
- - Objetos de shaman não podem permanecer dentro da área da textArea, sendo removidos imediatamente;
- - Ratos sem queijo são lançados para fora dela;
- - Ratos com queijo recebem toca automáticamente ao entrar na área da textArea.
- ]]--
- -- Vamos começar criando uma tabela para armazenar as coordenadas atuais da textArea:
- local coordenadas = {
- x = 0,
- y = 0
- }
- -- Ao iniciar um novo mapa, vamos definir as novas posições da textArea, pra isso utilizamos a função eventNewGame
- function eventNewGame()
- -- a função math.random gera um número aleatório baseado em dois argumentos: mínimo e máximo
- coordenadas.x = math.random(0, 800)
- coordenadas.y = math.random(0, 400)
- -- Agora mostramos a textArea com as novas coordenadas
- ui.addTextArea(0, '', nil, coordenadas.x, coordenadas.y, 300, 100, 0xFF2F2D, 0xFF2F2D, 1, false)
- --0x324650,0x324650
- end
- -- Precisamos checar as condições dadas na tarefa semanal, então usamos a função eventLoop, uma função que é chamada a cada 0.5s e permite trabalhar com as coordenadas em quase tempo real.
- function eventLoop()
- -- Definimos uma tabela chamada ids, ela irá armazenar os ids dos objetos que deverão ser removidos
- local ids = {}
- -- Vamos checar se existe algum objeto dentro da textArea, utilizando a tabela tfm.get.room.objectList
- for index, objeto in pairs(tfm.get.room.objectList) do
- -- vamos checar se objeto.x está dentro das coordenadas horizontais da textArea, não esquecendo de adicionar a largura da textArea:
- if (coordenadas.x <= objeto.x and objeto.x <= coordenadas.x+300) then
- -- Agora basta checar se objeto.y também está dentro das coordenadas verticais da textArea:
- if (coordenadas.y <= objeto.y and objeto.y <= coordenadas.y+100) then
- -- Se está, adicionamos o objeto a tabela ids
- table.insert(ids, objeto.id)
- end
- end
- end
- -- Agora removemos todos os ids adicionados a tabela
- for _, objeto in pairs(ids) do
- tfm.exec.removeObject(objeto)
- end
- -- Para os ratinhos, vamos utilizar o mesmo código de coordenadas, mas utilizando tfm.get.room.objectList
- for jogador, dados_jogador in pairs(tfm.get.room.playerList) do
- if (coordenadas.x <= dados_jogador.x and dados_jogador.x <= coordenadas.x+300) then
- if (coordenadas.y <= dados_jogador.y and dados_jogador.y <= coordenadas.y+100) then
- -- Se o jogador está dentro da textArea, mas NÃO possui queijo, ele deve ser lançado pra fora dela, caso ele possua, o rato entra na toca:
- if (dados_jogador.hasCheese) then
- tfm.exec.playerVictory(jogador)
- else
- tfm.exec.movePlayer(jogador, 0, 0, false, math.random(-1, 1)*100, -100, true)
- end
- end
- end
- end
- end
- -- Agora chamamos um novo mapa:
- tfm.exec.newGame()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement