Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Apertar mesmo botão várias vezes para cumular valores.

Gostaria de fazer uma desafio no meu projeto, na qual o usuário clica em um dos 4 botoes, Cima, Baixo, Esquerda, Direita e esses valores ficam guardados e com esses valores, quando eu apertar o botão "Pronto", Um objeto vai fazer o caminho que foi armazenado nos botoes dentro de um grid

Exemplo: Apresta "Cima", "Esquerda", "Esquerda", "Esquerda" e "Cima"

Quando eu apertar "Pronto", quero que o objeto ande essas posições dentro do Grid, quero que esse objeto vá 1 quadrado para cima, 3 para a esquerda e mais 1 para cima..

Minha dúvida é saber como o botão "Esquerda" pode armazenar 3 valores e o botão "Cima" pode armazenar 1 valor no começo e 1 no final

Acho que vou ter que usar um Array para guardar os valores, mas como? Se tiver uma forma melhor...

5 respostas

Oi, Iury, tudo bem?

Só pra entender melhor, isso tem que ser na ordem ou em qualquer ordem o aperto dos botões?

Olá Henrique,

Sim, eu quero que seja possível, o acumulo de valores em qualquer ordem que for apertado os botões, como exemplo, apertar o ultimo botão, depois o primeiro, seguir para o ultimo novamente, depois o penúltimo e aí apertar o segundo e assim por diante… O que pode ter também é uma quantidade máxima de valores e seriam guardados como, "Você só pode apertar 5 botões", aí o jogador teria que apertar esses cinco em qualquer ordem

Atenciosamente, Iury França

Então, como você não postou linkado a nenhum curso não sei se você tá pensando em usar Tic, Unity, Cocos, então vou descrever de forma lógica em pseudo código.

Se você quer manter o ordem você pode jogar os valores das teclas apertadas num Array, qualquer linguagem terá alguma forma de você capturar o código da tecla que foi apertado.

Então você pode aleatorizar 5 valores de tecla pré definidas por exemplo e ter um Array [Seta esquerda, Seta direita, Seta esquerda, Seta cima, Seta baixo] e aí você pode criar uma variável que cresce o valor a cada tecla apertada.

Apertou tecla -> index++

Então você verifica a posição do index no Array e vê se a tecla apertada é igual a tecla guardada naquela casa.

A segunda forma seria usar por exemplo um Hashtable ou um Array de Arrays.

Pode você teria como chave o código da tecla e quantidade que você quer, exemplo:

["Seta cima": 3, "Seta baixo": 4]

Aí quando a pessoa aperta a Seta cima você tiraria 1 da quantidade para verificar quantas teclas desse tipo a pessoa ainda pode apertar.

Deu pra pegar a lógica?

Ok, acho que peguei…

Desculpa não falar a plataforma, eu estou usando a Unity, para criar um desafio em um jogo, no desafio, vai haver um caminho e um objeto, onde a criança (Não sabe de lógica), vai apertar as teclas que elas acha que o objeto vai fazer o caminho..

Exemplo: O caminho certo é o objeto andar dois blocos para cima, 3 para a esquerda e 4 para baixo

A criança deve apertar: Cima, Cima, Esquerda, Esquerda, Esquerda, Baixa, Baixo, Baixo, Baixo e depois apertar "Play".

Se a criança colocar mais um "Baixo" por exemplo, o objeto vai passar da linha de chegada quando por dado o "Play"

Os valores Cima, Baixo, Esquerda e Direita são botões da Interface do jogo a principio.

Deu para entender a ideia geral agora?

Migrando a lógica que você me deu para o C# da Unity, eu teria que usar "Arrays", Estruturas de repetição e "Ifs"?

solução!

Pra ambos os casos você pode usar Array, mas se quiser de qualquer forma mesmo que fora de ordem eu recomendo usar um dicionário onde a chave é o KeyCode da tecla na Unity e o valor é o número de vezes que pode apertar.

Assim você vai tirando números e verificando os valores com ifs