Discuss Scratch

Fupicat
Scratcher
1000+ posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Variáveis Nuvem são variáveis do Scratch que são atualizadas para todos os usuários. Ou seja, o valor que você colocar na variável será o mesmo em todos os computadores que estiverem vendo seu projeto. Isso permite uma variedade de usos, como jogos online e tabelas de high score.

No entanto, elas podem ser muito confusas para iniciantes por conterem muitas restrições e limitações. Nesse tópico vou explicá-las e também te mostrar alguns exemplos onde você pode usá-las.

Como criar uma variável na nuvem?

Desça para a seção “Variáveis” da paleta de blocos e clique para criar um novo bloco. Selecione a opção “variável na nuvem (armazenada no servidor)” e clique em OK!



As limitações

Para fazer qualquer coisa com variáveis na nuvem, você precisa saber que elas são muito limitadas. Aqui está uma lista de todas as limitações:

  • Só podem ser usadas por usuários com rank Scratcher (novos usuários precisam esperar).
  • Cada projeto só pode ter até 10 variáveis nuvem.
  • Variáveis nuvem só suportam números.
  • Variáveis nuvem só podem ter até 256 dígitos.
  • Cada variável nuvem atualiza apenas 10 vezes por segundo e elas não são sincronizadas.

Tudo isso significa que jogos online no Scratch podem ser complicados de se fazer. Por enquanto, vamos ver uns exemplos simples.

Exemplos

Mecânica de high score

Salva a pontuação mais alta obtida por qualquer usuário em uma variável nuvem:



Explicação: Se a pontuação do jogador for maior que a pontuação mais alta mundial, significa que ele bateu o recorde. Então é só mudar a variável “high score” para a pontuação, como qualquer outra variável.

Mecânica de votação

Use duas variáveis nuvem para guardar quantos votos cada opção tem!



Lista nuvem

O Scratch não disponibiliza listas nuvem, porém ainda é possível fazê-las usando apenas variáveis nuvem comuns! Aqui tem um exemplo que eu fiz, que adiciona seu nome de usuário a uma lista global. Como variáveis nuvem só aceitam números, precisamos transformar as letras em números, mas isso não é tão simples quanto parece.

A primeira solução que lhe vem à cabeça é provavelmente só usar a posição de cada letra no alfabeto, como 1 = a, 2 = b, 3 = c, etc. Mas isso não leva em conta que nós precisaremos des-transformar as letras depois. Por exemplo, considerando cada número como sua posição no alfabeto, as palavras “rua” e “ahbaa” são iguais, porque as duas viram o código “18211”. Só olhando pra esse número não é possível saber onde cada letra começa e termina.

Ao invés disso, vamos fazer com que cada letra tenha um valor acima de 10, para que cada caractere tenha exatamente 2 dígitos. Assim a gente sabe que a cada 2 dígitos termina um caractere e começa o próximo! O jeito mais fácil de fazer isso é usando uma lista:



É só começar a inserir valores na lista depois do item 10, então podemos usar o bloco "item # de () em “ para converter de letra para número, e o bloco ”item () de " para converter de número para letra. A minha lista tem 40 caracteres diferentes para suportar todos os caracteres possíveis em nomes de usuário do Scratch. Se você quiser usá-la, baixe esse arquivo de texto e, após criar a sua lista (sugiro usar o nome CÓDIGO), clique com o botão direito nela, clique em “Importar” e selecione o arquivo que você baixou.

Usar uma lista nuvem requer muitas conversões e blocos, então para facilitar o processo vou usar blocos customizados. Se você não sabe criar um bloco, vá para a categoria “Meus Blocos” e clique em “Criar um bloco”. Vai aparecer essa janela onde você pode escolher que tipos de parâmetros o seu bloco vai ter. Para esse tutorial, lembre-se sempre de ativar a opção “Executar sem atualização de tela”, para que o bloco todo seja executado em um único frame e não haja delay no programa.



Agora vamos criar os blocos que vão nos deixar realmente usar variáveis como listas. Você vai precisar desses variáveis (não precisam ter nenhum valor por enquanto):



Você também precisará, é claro, de uma lista para mostrar pro jogador. Como eu vou criar um projeto que mostra todos os usuários que o acessaram, vou chamar a minha lista de “usuários”.

O primeiro bloco que você precisa criar é o codificador:



Tudo que esse bloco todo faz é transformar o seu texto em números usando a lista CÓDIGO que criamos e adicionar o texto codificado à variável “codificado”.

Os próximos blocos servem para decodificar:



O primeiro bloco apenas reseta o decodificador. Você precisa resetá-lo cada vez que quiser decodificar uma variável. O segundo bloco muda a variável “valor” para ser igual ao próximo valor codificado na variável nuvem. Basicamente o bloco vai lendo os números de 2 em 2 dígitos até chegar no número 00. Aí ele sabe que o valor acabou e converte pra você poder usar.

Com esses blocos feitos, vamos ver um exemplo de como usá-los:



Isso é um exemplo simples de uma lista onde o usuário pode adicionar seu nome de usuário a ela.

Quando a bandeira é clicada o projeto espera um tempo antes de atualizar a lista por causa do delay que as variáveis nuvem têm, senão a lista não terá acesso ao variável nuvem ainda para decodificá-lo e a lista ficará vazia.

Quando o jogador apertar 0, primeiro resetamos o variável “codificado” para deixá-lo vazio e pronto para aceitar novos valores. Então codificamos o nome de usuário do jogador. Aí fazemos uma checagem para ver se o nome de usuário já não está na lista. Se não estiver, adicionamos a variável codificada ao final da lista nuvem e atualizamos a lista para mostrar os valores.

Para atualizar a lista, primeiro apagamos todos os itens dela (isso apaga apenas os itens da lista que o jogador pode ver, não apaga nenhum item da variável nuvem em si onde os valores estão). Aí começamos a decodificar a nossa lista nuvem, e lemos o primeiro item que ela contem. Se o valor for vazio, significa que não tem nenhum nome na lista, então não fazemos nada. Se o valor não for vazio, nós vamos ir adicionando itens à lista local “usuários” e pegando o próximo valor da variável até ele estiver vazio, ou seja, até que não haja mais nomes.

Se você conseguiu seguir até aqui, parabéns! Você acabou de criar uma lista nuvem onde qualquer um que entrar pode adicionar seu nome. Porém, lembre-se do limite de 255 caracteres para cada variável. Se a sua variável exceder um certo número de nomes não vai mais caber nenhum na sua lista. Se você quiser ter um jeito de avisar o jogador que a lista está cheia, você pode adicionar uma checagem assim:



Traduzindo: se o número de dígitos (tamanho) da variável “lista” e da variável “codificado” juntos for maior que 255, pare o script e avise o jogador.

Conclusão

Enfim! Eu sei que isso é muita coisa para compreender de uma vez só, mas não se preocupe. Isso é algo que levei muitos anos para entender completamente e ainda há muito mais a ser descoberto! Se você entende inglês, recomendo a série no YouTube do usuário griffpatch sobre como criar jogos online multiplayer no Scratch! Foi com ele que eu aprendi a fazer esses scripts e como a nuvem funciona em geral, então recomendo demais para quem quer se aprofundar mais não só no Scratch, mas também em como pensa um programador.

Se você tiver quaisquer perguntas, deixe como resposta a esse tópico ou pergunte no meu perfil!

Last edited by Fupicat (June 13, 2021 01:22:09)




AdrielCrafter
Scratcher
500+ posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Obrigado! Faz muito tempo que tento fazer listas na nuvem!

Olá!
Sou o AdrielCrafter, Desenvolvedor de Add-Ons para o simulador OpenBVE, e Scratcher (as vezes)
Selecione qualquer palavra na assinatura e pressione Shift + Seta para Baixo e veja a assinatura completa.

Os fóruns em Português é como uma grande wiki, com uma variedade de tópicos feitos por usuários, para lhe ajudar com o Scratch!
Dá uma olhada!

Algumas coisas sobre o fórum:
Sobre o Scratch
Word_Games
New to Scratch
10 posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Muito bom! Brasileiros cada vez mais avançando!
Simocas240_Ofical
Scratcher
1 post

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Eu não sei fazer bem isso

Last edited by Simocas240_Ofical (June 26, 2021 10:20:17)

henrick9
Scratcher
1000+ posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Simocas240_Ofical wrote:

Eu não sei fazer bem isso
É só ir apreendendo usando os tutoriais do Scratch e do YT
EBX2
Scratcher
40 posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Fupicat wrote:

Variáveis Nuvem são variáveis do Scratch que são atualizadas para todos os usuários. Ou seja, o valor que você colocar na variável será o mesmo em todos os computadores que estiverem vendo seu projeto. Isso permite uma variedade de usos, como jogos online e tabelas de high score.

No entanto, elas podem ser muito confusas para iniciantes por conterem muitas restrições e limitações. Nesse tópico vou explicá-las e também te mostrar alguns exemplos onde você pode usá-las.

Como criar uma variável na nuvem?

Desça para a seção “Variáveis” da paleta de blocos e clique para criar um novo bloco. Selecione a opção “variável na nuvem (armazenada no servidor)” e clique em OK!



As limitações

Para fazer qualquer coisa com variáveis na nuvem, você precisa saber que elas são muito limitadas. Aqui está uma lista de todas as limitações:

  • Só podem ser usadas por usuários com rank Scratcher (novos usuários precisam esperar).
  • Cada projeto só pode ter até 10 variáveis nuvem.
  • Variáveis nuvem só suportam números.
  • Variáveis nuvem só podem ter até 256 dígitos.
  • Cada variável nuvem atualiza apenas 10 vezes por segundo e elas não são sincronizadas.

Tudo isso significa que jogos online no Scratch podem ser complicados de se fazer. Por enquanto, vamos ver uns exemplos simples.

Exemplos

Mecânica de high score

Salva a pontuação mais alta obtida por qualquer usuário em uma variável nuvem:



Explicação: Se a pontuação do jogador for maior que a pontuação mais alta mundial, significa que ele bateu o recorde. Então é só mudar a variável “high score” para a pontuação, como qualquer outra variável.

Mecânica de votação

Use duas variáveis nuvem para guardar quantos votos cada opção tem!



Lista nuvem

O Scratch não disponibiliza listas nuvem, porém ainda é possível fazê-las usando apenas variáveis nuvem comuns! Aqui tem um exemplo que eu fiz, que adiciona seu nome de usuário a uma lista global. Como variáveis nuvem só aceitam números, precisamos transformar as letras em números, mas isso não é tão simples quanto parece.

A primeira solução que lhe vem à cabeça é provavelmente só usar a posição de cada letra no alfabeto, como 1 = a, 2 = b, 3 = c, etc. Mas isso não leva em conta que nós precisaremos des-transformar as letras depois. Por exemplo, considerando cada número como sua posição no alfabeto, as palavras “rua” e “ahbaa” são iguais, porque as duas viram o código “18211”. Só olhando pra esse número não é possível saber onde cada letra começa e termina.

Ao invés disso, vamos fazer com que cada letra tenha um valor acima de 10, para que cada caractere tenha exatamente 2 dígitos. Assim a gente sabe que a cada 2 dígitos termina um caractere e começa o próximo! O jeito mais fácil de fazer isso é usando uma lista:



É só começar a inserir valores na lista depois do item 10, então podemos usar o bloco "item # de () em “ para converter de letra para número, e o bloco ”item () de " para converter de número para letra. A minha lista tem 40 caracteres diferentes para suportar todos os caracteres possíveis em nomes de usuário do Scratch. Se você quiser usá-la, baixe esse arquivo de texto e, após criar a sua lista (sugiro usar o nome CÓDIGO), clique com o botão direito nela, clique em “Importar” e selecione o arquivo que você baixou.

Usar uma lista nuvem requer muitas conversões e blocos, então para facilitar o processo vou usar blocos customizados. Se você não sabe criar um bloco, vá para a categoria “Meus Blocos” e clique em “Criar um bloco”. Vai aparecer essa janela onde você pode escolher que tipos de parâmetros o seu bloco vai ter. Para esse tutorial, lembre-se sempre de ativar a opção “Executar sem atualização de tela”, para que o bloco todo seja executado em um único frame e não haja delay no programa.



Agora vamos criar os blocos que vão nos deixar realmente usar variáveis como listas. Você vai precisar desses variáveis (não precisam ter nenhum valor por enquanto):



Você também precisará, é claro, de uma lista para mostrar pro jogador. Como eu vou criar um projeto que mostra todos os usuários que o acessaram, vou chamar a minha lista de “usuários”.

O primeiro bloco que você precisa criar é o codificador:



Tudo que esse bloco todo faz é transformar o seu texto em números usando a lista CÓDIGO que criamos e adicionar o texto codificado à variável “codificado”.

Os próximos blocos servem para decodificar:



O primeiro bloco apenas reseta o decodificador. Você precisa resetá-lo cada vez que quiser decodificar uma variável. O segundo bloco muda a variável “valor” para ser igual ao próximo valor codificado na variável nuvem. Basicamente o bloco vai lendo os números de 2 em 2 dígitos até chegar no número 00. Aí ele sabe que o valor acabou e converte pra você poder usar.

Com esses blocos feitos, vamos ver um exemplo de como usá-los:



Isso é um exemplo simples de uma lista onde o usuário pode adicionar seu nome de usuário a ela.

Quando a bandeira é clicada o projeto espera um tempo antes de atualizar a lista por causa do delay que as variáveis nuvem têm, senão a lista não terá acesso ao variável nuvem ainda para decodificá-lo e a lista ficará vazia.

Quando o jogador apertar 0, primeiro resetamos o variável “codificado” para deixá-lo vazio e pronto para aceitar novos valores. Então codificamos o nome de usuário do jogador. Aí fazemos uma checagem para ver se o nome de usuário já não está na lista. Se não estiver, adicionamos a variável codificada ao final da lista nuvem e atualizamos a lista para mostrar os valores.

Para atualizar a lista, primeiro apagamos todos os itens dela (isso apaga apenas os itens da lista que o jogador pode ver, não apaga nenhum item da variável nuvem em si onde os valores estão). Aí começamos a decodificar a nossa lista nuvem, e lemos o primeiro item que ela contem. Se o valor for vazio, significa que não tem nenhum nome na lista, então não fazemos nada. Se o valor não for vazio, nós vamos ir adicionando itens à lista local “usuários” e pegando o próximo valor da variável até ele estiver vazio, ou seja, até que não haja mais nomes.

Se você conseguiu seguir até aqui, parabéns! Você acabou de criar uma lista nuvem onde qualquer um que entrar pode adicionar seu nome. Porém, lembre-se do limite de 255 caracteres para cada variável. Se a sua variável exceder um certo número de nomes não vai mais caber nenhum na sua lista. Se você quiser ter um jeito de avisar o jogador que a lista está cheia, você pode adicionar uma checagem assim:



Traduzindo: se o número de dígitos (tamanho) da variável “lista” e da variável “codificado” juntos for maior que 255, pare o script e avise o jogador.

Conclusão

Enfim! Eu sei que isso é muita coisa para compreender de uma vez só, mas não se preocupe. Isso é algo que levei muitos anos para entender completamente e ainda há muito mais a ser descoberto! Se você entende inglês, recomendo a série no YouTube do usuário griffpatch sobre como criar jogos online multiplayer no Scratch! Foi com ele que eu aprendi a fazer esses scripts e como a nuvem funciona em geral, então recomendo demais para quem quer se aprofundar mais não só no Scratch, mas também em como pensa um programador.

Se você tiver quaisquer perguntas, deixe como resposta a esse tópico ou pergunte no meu perfil!
a parte da votação n inclui um sistema pra evitar voto múltiplo… já tentei fazer um sistema assim mas acho q apageui o projeto
Edição: não apaguei, mas como não quero publicar veja em https://turbowarp.org/416930153/editor

Last edited by EBX2 (Aug. 19, 2021 18:14:21)


You just read a post by EBX2
—————————————————————————————————————————————————————————————————–
Since December 2019 making trash cool projects
Fupicat
Scratcher
1000+ posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

EBX2 wrote:

a parte da votação n inclui um sistema pra evitar voto múltiplo… já tentei fazer um sistema assim mas acho q apageui o projeto
Edição: não apaguei, mas como não quero publicar veja em https://turbowarp.org/416930153/editor
O seu sistema não funciona porque listas não são salvas na nuvem. A solução para isso seria criar uma lista nuvem de usuários, usando o método que eu mostrei nesse post, e guardar os nomes de quem já votou nela.



Natynaty2008
Scratcher
1 post

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Muito boa a explicação

Last edited by Natynaty2008 (Dec. 24, 2021 22:28:24)

AdrielCrafter
Scratcher
500+ posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Natynaty2008 wrote:

Vejam meus jogos e comentem…
Se quer que as pessoas vejam seus projetos, pode anunciá-los no fórum Show and Tell, ou pode criar um tópico do projeto nesse fórum, já que é melhor para falantes de Português.

Olá!
Sou o AdrielCrafter, Desenvolvedor de Add-Ons para o simulador OpenBVE, e Scratcher (as vezes)
Selecione qualquer palavra na assinatura e pressione Shift + Seta para Baixo e veja a assinatura completa.

Os fóruns em Português é como uma grande wiki, com uma variedade de tópicos feitos por usuários, para lhe ajudar com o Scratch!
Dá uma olhada!

Algumas coisas sobre o fórum:
Sobre o Scratch
abreumarcelo
Scratcher
2 posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

.

Last edited by abreumarcelo (Feb. 20, 2022 13:52:38)

PLAYER_H360
Scratcher
100+ posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

abreumarcelo wrote:

Alguém saberia explicar esse projeto .

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

Achei muito interessante mas não tenho a mínima ideia de como ele o fez.
Para olhar os blocos que ele usou no projeto, acesse este link: https://scratch.mit.edu/projects/134243691/editor/

Para olhar a função dos blocos que ele usou, acesse este link: https://en.scratch-wiki.info/wiki/Blocks

Pode me chamar de Hiwkei.
Sthefhany111
Scratcher
1 post

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Olá como eu posso fazer uma variável na nuvem para meu jogo de ping pong é requerido isso e não sei como fazer
PLAYER_H360
Scratcher
100+ posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Sthefhany111 wrote:

Olá como eu posso fazer uma variável na nuvem para meu jogo de ping pong é requerido isso e não sei como fazer
Para criar uma variável nuvem, no editor de projeto do Scratch, desça para a seção “Variáveis” da paleta de blocos, clique em “Criar uma Variável”, clique na caixa “Variável na nuvem (armazenada no servidor)” e clique em “OK”. As variáveis de nuvem são habilitadas para todos os sprites.







Variáveis de nuvem não podem ser usados por New Scratchers, no caso, você é rotulada como New Scratcher. O Scratch Team não quer que pessoas novas no Scratch usem indevidamente as variáveis da nuvem, pois isso pode colocar uma grande carga no sistema que não pode controlar, muito provavelmente fazendo com que o recurso não funcione. Para poder usar as variáveis de nuvem, tem que ser rotulada como Scratcher e para isso, tem que:
  • Ter um endereço de e-mail verificado.
  • Ter 2 projetos compartilhados, no mínimo.
  • Estar no Scratch por um certo tempo (pelo menos 2 semanas, mas geralmente, 1 mês).
  • Ser ativo no site. Esta é uma grande parte de se tornar um Scratcher. Compartilhar projetos regularmente pode ser uma maneira.
  • Tenha comentários e/ou postagens no fórum (isso não é necessário, mas ajuda).
  • Marcar coração e estrela em projetos do Scratch.

Last edited by PLAYER_H360 (Nov. 26, 2021 18:07:59)


Pode me chamar de Hiwkei.
PN_Scratching
Scratcher
78 posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Simplesmente incrível! Igual ao do griffpatch, mas só traduzido pro brasileiro! Que bom que eu vi isso pra facilitar o meu aprendizado, ksks.
TheToonCoder
Scratcher
21 posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

Eu vou ultilizar o tutorial do online pois deu errado quando eu tentei fazer


sophia_monteiro
Scratcher
1 post

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

mas como tira a variavel da thumb? eu criei uma thumb pro meu jogo mais a variavel fica aparecendo
Fupicat
Scratcher
1000+ posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

sophia_monteiro wrote:

mas como tira a variavel da thumb? eu criei uma thumb pro meu jogo mais a variavel fica aparecendo
Variáveis não aparecem na foto de thumbnail, então não precisa fazer nada.



Davihenriquepaiva
New to Scratch
7 posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

isso é realmente interesante
cayo1233
Scratcher
2 posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

no meu nao esta assim
VOUJOUN
Scratcher
100+ posts

Ajuda para Iniciantes + Avançada: Básico das Variáveis na Nuvem

cayo1233 wrote:

no meu nao esta assim
Você não é scracher

Powered by DjangoBB