Discuss Scratch

santosvitor
New to Scratch
2 posts

Condiconar a ação de um personagem a outro

E aí, pessoal.
Estou começando aqui e estou tentando fazer um joguinho simples.

Tem 3 personagens

1 bloco amarelo estático
1 bloco verde em movimento horizontal de um lado para o outro
1 bola

Consigo fazer a bola ir pro local que eu quero quando aperto o botão ESPAÇO
Mas quero condicionar ela a fazer isso, só quando apertar o botão ESPAÇO e o bloco verde estiver tocando o amarelo.

Mas não consigo condicionar a ação dela ao fato dos dois se tocarem. Mas só consigo fazer algo entre ela e outro item. Não condicionando aos outros dois.

Espero que tenha conseguido me expressar, hahaha

Já agradeço.
Fupicat
Scratcher
1000+ posts

Condiconar a ação de um personagem a outro

Para isso você pode usar um variável. Selecione a categoria de blocos “Variáveis” e clique em “Criar uma variável”. Dê a ela um nome como “verde tocando amarelo” e clique OK.

Uma variável é basicamente um valor, associado a um nome, que pode ser mudado e comparado no programa. Por exemplo: em um jogo de RPG, a vida e a magia do seu jogador seriam duas variáveis. No seu jogo, vamos usar esta variável para deixar o programa todo saber se o verde está tocando o amarelo.

No bloco verde, coloque este código:

quando a bandeira verde for clicada :: hat events
mude [verde tocando amarelo v] para [nao] :: variables
sempre {
espere até que <tocando [bloco amarelo v] ? :: sensing> :: control
mude [verde tocando amarelo v] para [sim] :: variables
espere até que <não <tocando [bloco amarelo v] ? :: sensing> :: operators> :: control
mude [verde tocando amarelo v] para [nao] :: variables
} :: control

Ao tocar no bloco amarelo, a variável será igual a “sim”. Ao parar de tocar o bloco amarelo, a variável mudará para “nao”.
Então, para conectar isso à ação da bola, coloque este código no ator da bola:

quando a tecla [espaço v] for pressionada :: hat events
se <(verde tocando amarelo) = [nao]> então {
pare [este script v] :: control
} :: control
... // No lugar disso, coloque o código que faz a bola ir aonde você quer.

O que esse código faz é: Se eu pressionar a barra de espaço e o variável for igual a “nao”, então apenas pare de rodar este script e não faça nada. Mas, se eu pressionar a barra de espaço e o variável não for igual a “nao” (não satisfazer a condição), o código de dentro dela que faz o script parar não roda, então o código continua normalmente.

Espero que tenha ficado mais claro. Senão, faça quantas perguntas tiver.



santosvitor
New to Scratch
2 posts

Condiconar a ação de um personagem a outro

Fupicat wrote:

Para isso você pode usar um variável. Selecione a categoria de blocos “Variáveis” e clique em “Criar uma variável”. Dê a ela um nome como “verde tocando amarelo” e clique OK.

Uma variável é basicamente um valor, associado a um nome, que pode ser mudado e comparado no programa. Por exemplo: em um jogo de RPG, a vida e a magia do seu jogador seriam duas variáveis. No seu jogo, vamos usar esta variável para deixar o programa todo saber se o verde está tocando o amarelo.

No bloco verde, coloque este código:

quando a bandeira verde for clicada :: hat events
mude [verde tocando amarelo v] para [nao] :: variables
sempre {
espere até que <tocando [bloco amarelo v] ? :: sensing> :: control
mude [verde tocando amarelo v] para [sim] :: variables
espere até que <não <tocando [bloco amarelo v] ? :: sensing> :: operators> :: control
mude [verde tocando amarelo v] para [nao] :: variables
} :: control

Ao tocar no bloco amarelo, a variável será igual a “sim”. Ao parar de tocar o bloco amarelo, a variável mudará para “nao”.
Então, para conectar isso à ação da bola, coloque este código no ator da bola:

quando a tecla [espaço v] for pressionada :: hat events
se <(verde tocando amarelo) = [nao]> então {
pare [este script v] :: control
} :: control
... // No lugar disso, coloque o código que faz a bola ir aonde você quer.

O que esse código faz é: Se eu pressionar a barra de espaço e o variável for igual a “nao”, então apenas pare de rodar este script e não faça nada. Mas, se eu pressionar a barra de espaço e o variável não for igual a “nao” (não satisfazer a condição), o código de dentro dela que faz o script parar não roda, então o código continua normalmente.

Espero que tenha ficado mais claro. Senão, faça quantas perguntas tiver.

Cara, você me ajudou muito. Como eu comecei a estudar logica na segunda e tentei fazer isso na terça, já dá pra imaginar o quanto eu estava perdido.
Já me ajudou a pensar em outras coisas que eu nem sabia por onde começar.


Segue o link do meu projeto:

https://scratch.mit.edu/projects/397464144/


Valeu!
mlameira
New to Scratch
1 post

Condiconar a ação de um personagem a outro

Olá, pessoal,
Preciso condicionar o movimento de um ator a outro. Se um ator a estiver no local x, o ator b não pode ser enviado para este mesmo lugar. Exemplo: o ator a pode ir para o local 1 ou 3, mas se o 1 estiver ocupado por outro, ele só pode ir para o 3, ou vice-versa.
Alguém sabe como ajudar?
Obrigada!
PLAYER_H360
Scratcher
100+ posts

Condiconar a ação de um personagem a outro

mlameira wrote:

Olá, pessoal,
Preciso condicionar o movimento de um ator a outro. Se um ator a estiver no local x, o ator b não pode ser enviado para este mesmo lugar. Exemplo: o ator a pode ir para o local 1 ou 3, mas se o 1 estiver ocupado por outro, ele só pode ir para o 3, ou vice-versa.
Alguém sabe como ajudar?
Obrigada!
Os scripts que podem serem usados para resolver o problema no exemplo que você deu:

No ator A:

quando @greenFlag for clicado :: hat events
mude [variável v] para (um número aleatório entre (1) e (2) :: operators) :: variables

quando @greenFlag for clicado :: hat events
espere até que <(variável :: variables) = (1) :: operators> :: control
vá para x: () y: () :: motion
Lugar 1

quando @greenFlag for clicado :: hat events
espere até que <(variável :: variables) = (2) :: operators> :: control
vá para x: () y: () :: motion
Lugar 3

No ator B:

quando @greenFlag for clicado :: hat events
espere até que <(variável :: variables) = (1) :: operators> :: control
vá para x: () y: () :: motion
Lugar 3

quando @greenFlag for clicado :: hat events
espere até que <(variável :: variables) = (2) :: operators> :: control
vá para x: () y: () :: motion
Lugar 1

Last edited by PLAYER_H360 (April 2, 2022 00:54:25)


Pode me chamar de Hiwkei.
joaogabriel2804
New to Scratch
1 post

Condiconar a ação de um personagem a outro

EdersonPizolotto
New to Scratch
1 post

Condiconar a ação de um personagem a outro

eai pessoal sou novo no scratch, estou fazedno um jogo de pénaltis, e preciso que quando a bola toque no gol gere uma info de gol, ou que ele errou, ou que deu na trave, pra isso criei dois atores a rede e a trave, e pensei que se eu colocasse o comando tocando em rede, tocando em trave funcionaria mas acabou que el nao esta dando certo. eu nao sei se vou receber notificação de uma resposta daqui, se caso nao, se alguem responder pudesse me (email removed by moderator - please don't share contact information)

Last edited by Paddle2See (May 24, 2024 23:54:50)

Powered by DjangoBB