Templo RPG Maker
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

Fetelk13

Fetelk13
Membro Honorário I
Membro Honorário I
Eu tenho recebido vários pedidos sobre como fazer animações de introdução, e principalmente como alterar janelas ou scripts de menu. Eu posso até fazer isso, e mandar, mas se você tem interesse em saber como funciona, tenha paciência, eu não posso postar uma aula por dia, e mesmo se pudesse, já recebi inúmeras PMs de pessoas que lêem a 3º aula, e me perguntam o que são Vars... (Obviamente ele não leu a 1º aula, por achar que era desnecessário.)

Mais uma vez eu digo. Tenha paciência. Tudo que você precisa saber sobre RGSS para seu próprios games você aprenderá aqui.

Hoje eu falarei de algo muito importante na programação, que faz com que as coisas "Funcionem" nos games, as Estruturas de repetição.
Este nome é usado exatamente porque é o que elas fazem, repetem e repetem e repetem, até que seja necessário parar. Você com certeza já se deparou com um código assim:

Código:
for i in 0...$game_party.actors.size
x = 64
y = i * 116
actor = $game_party.actors[i]
draw_actor_graphic(actor, x - 40, y + 80)
end

ou assim:

Código:
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end

Eu pretendo demonstrar apenas as principais estruturas usadas pelo RGSS, pois existem várias.

Estrutura FOR

A Estrutura for é o que chamamos de estrutura programada. Nela, sabemos que quando o valor descrito como inicial chegar no valor descrito como final, a repetição termina. Podemos ter dois tipos de for:

1º - for numérico:
for var in ...



end

Exemplo:

Código:
for i in 0...$game_party.actors.size
x = 64
y = i * 116
actor = $game_party.actors[i]
draw_actor_graphic(actor, x - 40, y + 80)
end

2º - for quantitativo:
for in



end

Exemplo:

Código:
for i in @map.events.keys
@events[i] = Game_Event.new(@map_id, @map.events[i])
end

Note que nos dois tipos de for ele possui um valor final, o que faz com que ele seja uma estrutura programada ou, prevista, que significa que sabemos quando ela vai finalizar.

O primeiro exemplo da estrutura numérica foi retirada da classe Window_MenuStatus, onde calculando a quantidade de heróis presentes na Game_Party, ele desenha o char do herói. Note que a var y é uma operação matemática, que faz com que, a cada vez que i seja diferente, o desenho do char mude de lugar. Como o i também significa o index do herói na var, também é mudado o char que vai ser desenhado.

O segundo exemplo foi retirado da Classe Game_Map, onde através da quantidade de eventos do mapa, ele instâncía uma nova classe Game_Event, dispensando saber se há um, ou nenhum evento.

Por enquanto ainda não faremos exercícios, pois nosso grande exercício ainda está por vir...

Estrutura WHILE

A Estrutura while ("faça enquanto") é exatamente o que sua tradução sugere. É uma estrutura simples, que pode ou não ser completada com a RW not para inverter a condição, e as RWs and e or, para complementar a condição. Veja os exemplos:

Código:
while $scene != nil
$scene.main
end

Código:
while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
@level += 1
for j in $data_classes[@class_id].learnings
if j.level == @level
learn_skill(j.skill_id)
end
end
end

No 1º, A estrutura Main se obriga a executar o $scene.main toda vez que a var $scene não for vazia.
No 2º, Retirado da Classe Game_Actor, Ele condiciona o ganho de skills para os heróis, de acordo com as suas classes e, de acordo com a experiência ganha.

Estrutura loop - do

Esta é uma estrutura interessante, porque loop do significa refaça, ou seja, ela é uma estrutura já condicionada a nunca terminar. E ela é assim, só existe uma forma de parar um loop do, que é usando a RW break dentro da estrutura. Observe o código abaixo:

Código:
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end

Todos os Scenes do seu game possuem esta estrutura, exatamente por fazer o que é necessário.

1º - Graphics.update - Atualiza os gráficos.
2º - Input.update - Atualiza as entradas de teclas
3º - update - Executa o procedimento update da classe.
Aqui há um if, que verifica se ainda é o mesmo $scene.
4º - if $scene != self
Se a condição for falsa(ainda é o mesmo) ele repete tudo, desde o início, mas se for verdadeira(mudou a Scene) há um break e o encerramento da estrutura.

Como vamos nos aprofundar mais nisto na próxima aula, você vai ver que, de dentro do procedimento update de uma scene, tudo que faz seu game funcionar parte dali.

Não há muito o que dizer sobre as estruturas de repetição, a não ser pelo fato de que tudo que foi aprendido até agora(Variáveis,Classes,Condições) foram apenas alicerces de algo bem maior que está por vir e que, tudo se interliga, da mesma forma que podemos ter uma "cascata" de condições, podemos ter uma cascata de fors, e de whiles, onde o while é o mais parecido com o if, pois aceita vários condicionamentos.

CONCLUSÃO:

Hoje vimos apenas o básico do básico sobre Estruturas de repetição. Estou me preparando mental e físicamente para entrar no assunto mais importante da programação em RGSS, as Scenes. Eu peço a você que se prepare também, para sorver o máximo que puder a partir daqui, pois você verá que descobriu a "Origem do Game" quando começar a entender esta que é a classe mais importante do RGSS.

Aos que me pediram como fazer animações, e outras coisas, apenas depois de aprendermos sobre Scenes eu poderei postar algo aqui. Eu já tenho até os exemplos prontos, com uma animação de apresentação bem legal feita. Mas eu não posso passar o carro na frente dos bois então...

Até a próxima !! ;D

http://elementosrpgmakerbr.forumeiros.com/forum

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos