🤔 Para Refletir :
"Mais vale um jogo publicado que um jogo perfeito que não sai do projeto."
- HenriqueGibi

Aula #2: Variáveis

RyanKamos

Coração Valente
Membro
Membro
Juntou-se
01 de Abril de 2015
Postagens
2.540
Bravecoins
22
ubAJxTp.png


Aula #2: Variáveis
~RPG Maker~


Sejam todos bem vindos à Academia de Eventos!
Hoje trago mais uma aula para vocês. Desta vez falaremos de algo essencial para a criação de sistemas, principalmente complexos, as incríveis Variáveis.​

Variável é um objeto que consegue armazenar valores. Com ela podemos gravar qualquer tipo de número, como por exemplo IDs de heróis, IDs de eventos ou valores de parâmetros.
O mais incrível delas é que nos dá infinitas possibilidades de criar sistemas.
Na nossa última aula, nós às utilizamos para armazenar o valor X e Y da tela do herói para criar um popup com o ouro adquirido (caso não tenha feito, crie variáveis para checar). Nesta aula criaremos um sistema onde utilizaremos as variáveis para mostrar valores na tela.
Este sistema pode ser utilizado para mostrar qualquer valor, até mesmo utilizar para um ABS, mostrando o valor do dano.

*Abra o maker e vamos ao trabalho*

Etapa 1
wZbzemX.png
 
yHwtAOV.png
 
kgEkXoR.png
 
kH3PtVa.png
 
bBL7KTA.png
 
DokvLkU.png
 
Ds7vooE.png
 
WviwYFh.png
 
3dAhRv7.png
 
oUqhPF5.png

*Você precisará usar as imagens dos números para serem mostrados na tela*

M8fjf3V.png
Etapa 1

Vamos criar um evento comum para testar se nosso valor aparece no lugar correto.
  Neste evento utilizaremos o que aprendemos na aula passada sobre labels. Faremos um ciclo com elas para
checar a posição X e Y do herói, subtraindo 7 do X e 50 do Y, para a posição do número ficar no lugar correto.
  Você pode modificar estes valores, caso desejar.
  Utilizaremos uma switch (Checar Valor) numa condição para sempre chamar o evento para checar quando deve aparecer o valor.
  Dentro da condição guiaremos para um novo ciclo de labels que mostrará a imagem. Este ciclo pode ser chamado de "Checar". Crie ele abaixo do "chamar begin".
  Nele nós utilizaremos uma variável (Valor Total) que será a base dos valores.
  Crie uma condição para checar se ela é 0 e mostre a imagem do número 0.
Vejamos como fica:

Ht5Kk2V.png

Ativei manualmente a switch para poder visualizar o sistema.

Etapa 2
PNzuCsl.png


Agora nós faremos algo diferente. Criaremos outro evento comum, só que este irá apenas checar a posição do personagem.
  Para isso, basta você pegar os códigos de variáveis que utilizou e colar em um novo evento.
  Porém, antes de colar, crie uma condição checando de a switch que criamos para checar os valores está off. Então, cole dentro e substitua a subtração do valor de X por um somar 12.
  Crie outra variável para armazenar uma segunda posição para X e iguale à variável da posição X do herói. Logo depois subtraia-a em 13.
  Crie outra variável para armazenar uma terceira posição para X e iguale à variável da segunda posição X. Logo depois subtraia-a em 13.
  Crie outra variável para armazenar uma quarta posição para X e iguale à variável da terceira posição X. Logo depois subtraia-a em 13.
  Esta switch servirá para não atrapalhar os valores que adicionaremos posteriormente para criar um evento de popup parecido com o de GOLD da aula anterior.
  Não esqueça de adicionar o wait no começo do evento.

Retorne ao evento comum principal para elaborarmos um pouco mais a variável.

KzAyvga.png


Agora iremos complicar um pouco as coisas.
  Antes de tudo, delete a condição que mostra a imagem.
  Iremos criar 4 variáveis, cada uma irá armazenar o valor, sendo: Unidade, Dezena, Centena e Milhar.
  Na condição da switch "Checar Valores", coloque estas variáveis com o valor 0 antes do "ir para label".
  Isso fará com que elas sempre se resetem quando checar os valores.
  Agora, na label "Checar", iniciaremos uma distribuição de valores da variável principal (Valor Total) para as variáveis de unidades.
  Coloque um wait.
  Crie uma condição checando se a variável Valor Total é maior ou igual à 1000 e marque para ter uma exceção. Dentro desta condição adicione +1 à variável que determina o valor de Milhar e logo depois subtraia 1000 da variável Valor Total. Coloque para retornar à label Checar.
  Na exceção da condição criada acima, crie outra condição checando se a variável Valor Total é maior ou igual à 100 e marque para ter uma exceção. Dentro desta condição adicione +1 à variável que determina o valor de Centena e logo depois subtraia 100 da variável Valor Total. Coloque para retornar à label Checar.
  Na exceção da condição criada acima, crie outra condição checando se a variável Valor Total é maior ou igual à 10 e marque para ter uma exceção. Dentro desta condição adicione +1 à variável que determina o valor de Dezena e logo depois subtraia 10 da variável Valor Total. Coloque para retornar à label Checar.
  Na exceção da condição criada acima, crie outra condição checando se a variável Valor Total é maior ou igual à 1. Dentro desta condição adicione +1 à variável que determina o valor de Unidade e logo depois subtraia 1 da variável Valor Total. Coloque "Ir para label Checar_2".
  Crie esta label abaixo destas condições, antes do "Ir para label Begin".


Etapa 2
CUfMAVs.png


Na nova label que criamos (Checar_2) iremos adicionar as imagens.
  Coloque um wait.
  Agora iremos mostrar as imagens de acordo com a variável. Primeiro colocaremos os valores da variável de Unidade.
  Crie uma condição para checar se a variável está igual à 0 e mostre a imagem (Number_0) com posição X e Y das variáveis que criamos.
  Abaixo da condição que criamos, crie outra para checar se a variável está igual à 1 e mostre a imagem (Number_1) com posição X e Y das variáveis que criamos.
  Faça isso até chegar ao número 9.
  Agora iremos checar a variável de Dezena.
  Crie novamente condições para mostrar as imagens da mesma forma que foi feita antes (até o 9), porém usando a variável de Dezena. Nesta, as imagens devem ter o valor de X da variável do segundo valor de X.
Crie novamente condições para mostrar as imagens da mesma forma que foi feita antes (até o 9), porém usando a variável de Centena. Nesta, as imagens devem ter o valor de X da variável do terceiro valor de X.
  Crie novamente condições para mostrar as imagens da mesma forma que foi feita antes (até o 9), porém usando a variável de Milhar. Nesta, as imagens devem ter o valor de X da variável do quarto valor de X.
  Lembre-se de sempre utilizar números de imagens diferentes para cada variável, ou seja, Imagem 1 para unidade, Imagem 2 para dezena, Imagem 3 para centena e Imagem 4 para milhar.

Etapa 3
1QaAocM.png


Após tudo feito acima, crie uma nova switch (Efeito) para criar o efeito de fade nos números e ative-a.
  Crie uma condição para checar se a switch Checar Valores está off e dentro dela coloque para desativar a switch Effect.
  Coloque "Ir para Label Begin".
Depois da condição, coloque para retornar à label "Checar_2".

6W43WP7.png


No evento comum que checa a posição do herói, no final de tudo, crie uma condição para checar se a switch "Checar Valores" está on.
  Dentro desta condição, crie outra condição para checar se a switch "Effect" está on.
  Dentro desta condição, crie outra condição checando se uma nova variável (Time) é igual à 30. Esta variável será um timer para fazer as imagens sumirem. Marque a caixa de exceção.
  Dentro da condição coloque para desativar a switch "Checar Valores", um wait 5 frames, desative a switch "Effect" e iguale a variável "Timer" à 0.
  Coloque para mover a imagem 4 em suas devidas posições (variáveis) com opacidade 0 e wait 5. Marque a opção de esperar.
  Coloque para mover a imagem 3 em suas devidas posições (variáveis) com opacidade 0 e wait 5. Marque a opção de esperar.
  Coloque para mover a imagem 2 em suas devidas posições (variáveis) com opacidade 0 e wait 5. Marque a opção de esperar.
  Coloque para mover a imagem 1 em suas devidas posições (variáveis) com opacidade 0 e wait 5. Marque a opção de esperar.
  Na exceção deste evento, some 1 à variável timer.

Bom, evento feito pessoal!
Vamos checar como ficou:

Sej8OHR.gif

O que aprendemos?
Aprendemos à utilizar variáveis para criação de distribuição de valores e criação de números por imagens.
Com isso podemos criar qualquer valor que apareça na tela, até mesmo utilizar em ABS.

Para finalizar a aula, estarei deixando alguns desafios para quem quiser treinar um pouco.
Desafios dão Bravecoins e pontos para adquirir conquistas.
Aguardo a participação de todos e um bom feedback aqui.
Quanto mais participações tiver, mais novidades estarei trazendo.

Aqui está o download a Aula #2 em aberto para você checar o sistema e como foi feito:
[descarga]https://www.dropbox.com/s/ofo5tcssegjg2z1/Academia%20de%20Sistemas.exe?dl=0[/descarga]

Publicarei as aulas toda semana entre Quarta/Quinta/Sexta.
Até a próxima aula pessoal \o/​
 
Que belo tutorial, Titio Ryan!
é sempre bom ver esse tipo de tutorial para ajudar os iniciantes,
ou até mesmo os mais antigos que não conhecem muito bem as mecânicas,
ainda mais quando ele é inteiramente bem escrito, detalhado e ilustrado, super recomendado!
 
Isso aí, seguiu a call! há há
Ótima aula Ryan, da um certo trabalhinho fazer porém o resultado fica muito bom. Já que podemos usá-lo como um add-on para ABS, sabe qual é a próxima call né! ho ho  :saintroy:
 
Poxa Ryan, suas aulas estão muito bem feitas e caprichadas, fico no aguardo por mais tutoriais seus - materiais assim  adicionam muito à comunidade maker, mas esse tipo de programação que voce fez aqui a gente fazia no rm2k, po! Eu entendo que o objetivo era mostrar as opções das variáveis, mas hoje em dia ninguém mais deveria programar assim no maker - o codigo ficou grande e trabalhoso demais pra um sistema simples. Igualar uma variável à posição do heroi, por exemplo, pode ser uma tremenda perda de tempo, uma vez que já temos essa informação acessivel atraves de script calls bem simples. Ensinar novatos a dar voltas na programação de seus sistemas é um perigo :XP: Precisamos sempre buscar a maneira mais prática!

Eu tentei resumir esse sistema o maximo que o sono me permitiu aqui, mas ficou de um jeito bem mais rapido e fácil de usar nos projetos, utilizando de um unico script call:
obs: todas as pictures de numeros precisariam estar nomeadas como "Number_x".
Código:
gold = [2,3,5,9]
i = 8 + (gold.size - 1) * 6
p = 1

screen.pictures[1].show("Number_" + gold[0].to_s, 0, $game_player.screen_x - i, 
$game_player.screen_y - 60, 100, 100, 255, 0)
if gold.size >= 2
screen.pictures[2].show("Number_" + gold[1].to_s, 0, $game_player.screen_x - (i - 12), 
$game_player.screen_y - 60, 100, 100, 255, 0)
end
if gold.size >= 3
screen.pictures[3].show("Number_" + gold[2].to_s, 0, $game_player.screen_x - (i - 24), 
$game_player.screen_y - 60, 100, 100, 255, 0)
end
if gold.size >= 4
screen.pictures[4].show("Number_" + gold[3].to_s, 0, $game_player.screen_x - (i - 36), 
$game_player.screen_y - 60, 100, 100, 255, 0)
end
wait(60)
while p < 5 do
$game_map.screen.pictures[p].move(0, $game_map.screen.pictures[p].x,
$game_map.screen.pictures[p].y, 100, 100, 0, 0, 5)
screen.pictures[p].erase 
p += 1
wait(5)
end

Espero que eu não tenha sido muito 'mala' em fazer essa intromissão  :^^': se alguem quiser eu posso explicar melhor o que foi feito ai no codigo; pode parecer complicado pra quem não está acostumado mas é só umas 'show picture'  e uma matematica super basica haha!
Aliás, arrays seria uma boa proxima aula pra voce fazer!
 
[member=59]Driko[/member] : Não, não sei :V UEHEUHEUE (Não vou fazer ABS agora u.u)

[member=191]Musashi[/member] : Opa, fico feliz que gostou man \o/
Então, eu sei que é possível fazer isso de um jeito bem mais simples, eu mesmo não uso esse jeito arcaico. Há códigos que ajudam xD
Porém, alguém que não entende os princípios básicos, jamais aprenderá s criar algo complexo - ninguém fazer um ABS sem saber criar uma HUD, né?
Então, a ideia das aulas é ensinar ao pessoal princípios de programação, mesmo que seja complexo. Assim, mais à frente, qualquer problema enfrentado será resolvido. E também a ideia não é "fazer este sistema" e sim entender como foi criado para você criar outros sem necessidade de ajuda.
Muito obrigado pelo comentário e pelo código, haha. É bom que o pessoal dá uma olhadinha depois xD
Quinta-feira que vem tem mais aula \o
 
Voltar
Topo Inferior