domingo, 9 de novembro de 2008

[RGSS] Episódio #02 – Classes: Que se faça uma classe! O poder (não tão) oculto da herança!”

[QUICK CALL (termo meu), o programa a seguir não é recomendável para quem não leu a última aula, heheheh] Olá á todos! Espero que gostem de mais um dos pequenos capítulos da minha vida numa Linguagem de Scripts, o RGSS! Como eu já disse ma aula anterior, preparem-se para ler um pouco mais, se bem que dessa vez eu vou pegar leve no texto e vou até colocar umas ilustrações. Caso não entendam qualquer coisa por favor deixem-me saber, para que eu possa fazer lições melhores, nesse caso vocês podem deixar mensagem no blog ou enviar algum e-mail, e podem ás vezes me encontrar por aí, na ReinoRPG (aceito PM’s) e no chat da Rpg Maker Brasil (o link você pega em www.rpgmakerbrasil.com), já que o portal, o fórum e o link do Blog do Falco continuam fora do ar... Agora vamos prosseguir com a história!

INTRO:Assim que dei uma rápida espiada nos scripts que já vinham no VX, obviamente deu para reparar que eles estavam muito mais bem organizados do que no RPG Maker XP (que infelizmente não usei muito, pulei a era dele...- Se era mais fácil ou mais difícil escrever scripts parra ele eu estava por descobrir, mas na hora meu deu vontade de aprender pelo menos alguns comandos básicos, assim que cheguei as classes afinal. E assim tentei escrever o meu primeiro script, que era uma janela que mostrava um nome na tela do Jogo, não era nada muito difícil. Além disso eu já tinha dado uma espiada em algumas poucas apostilas sobre isso, obviamente com rgss1, do XP, que não difere muito. E é isso que vamos ver agora...


[OPENING, música de abertura da série]
E é isso que vamos ver agora, vamos criar uma classe que mostre dessa vez uma caixa de mensagem do Windows, toda vez que você falar com um NPC, não vai ser grande coisa, mas você vai aprender uma coisa que estava me passando para trás até m dia desses; inclusive decidi postar esse blog para ensinar à voc~es para que não caiam em armadilhas pequenas dessas e acabem desistindo - Lembra dos switchs?? E quando você não sabia usar eles? Sempre vejo muitos novatos pedindo pra resolver problemas que são resolvidos com switchs... Mas voltemos aos scripts.

Abra o Editor de Scripts, para isso você pode proceder de três maneiras:

1. Simplesmente tecle F11, simples e funcional, meu atalho favorito!
OU
2. Tecle no ícone do livrinho com o lápis verde, na barra de ferramentas principal
OU ENTÃO
3. Clique no menu 'Projeto' e aponte e clique em 'Editor de Scripts"



Agora você está enfim no “assustador” Editor de Sscripts. Não precisamos dizer por enquanto nada das seções que tem por qui, com o tempo você irá entender... Procure uma seção em branco, descendo a “lista” dos scripts você vai encontrar alguns espaços em branco, agora tem que ser sempre acima da seção ‘Main’, isso é necessário para funcionar tudo, apesar de que - aqui na minha versão, a traduzida pelo Deset Eagle, tem escrito ("insira scripts aqui"); modifique o nome para algo legal, tipo “Meu Primeiro Script” e limpe toda aquela coisa verde, aqueles comentários. Agora vamos criar a classe, escreva assim:

class Primeira_Classe

end


Veja bem isso. A primeira linha define uma classe com nome de ‘Primeira_Classe’, e ‘end’ significa que a classe acaba. Agora preste ATENÇÃO: TODAS AS ESTRUTURAS SEMPRE TERMINAM SEMPRE EM ‘end’, E SEMPRE ESCREVA EM MINÚSCULAS, JÀ QUE O RUBY É ‘SENSÍVEL’ EM RELAÇÃO AOS NOMES... Só em poucos casos que as letras aparecerão em maiúsculas ou começando por maiúsculas. Esse “sensível” do RGSS é característica do Ruby, também é chamado de ‘Sensitive Case’, aos poucos vão aparecer utilizações pras maiúsculas. Se você for esperto já reparou que o nome da classe é iniciado por uma maiúscula, e vamos manter assim por questões de padronização.(Agora aí vem a brincadeira! A palavra-chave tem 7 letras e umas das letras é um ‘C’! Duvido você adivinhar a palavra! Dúvidas leia os dois posts de introduão e aguarde as próximas postagens!!)

Acho que já é hora de mandar essa classe fazer alguma coisa, né? Entre as duas linhas, coloque os seguintes comandos:

def initialize
imprime_mensagem
end

def imprime_mensagem
print “Olá Mundo! Essa é a minha primeira mensagem feita em RGSS!”

end

Agora você irá “imprimir” uma mensagem, no caso, tudo o que estiver entre as aspas apareçerá em uma caixa de mensagens comum do Windows! Repare que criamos agora dois procedimentos, para ser necessário, duas rotinas (se você viu a aula anterior, então entende), como podem ver não é nada difícil, basta usar um ‘def’, aqui os procedimentos são sempre em minúculas. No primeiro procedimento, que serve para inicialização, a única coisa que ele faz é remeter para a rotina que escrevemos abaixo, que por fim mostra uma caixa de mensagens padrão do Windows XP na tela.
Para testar, veja a screen e descubra o que você terá de escrever. Caso não entenda, tudo bem, a gente revisa daqui a pouco.


Agora que vocês viram mais de que em detalhes como criar e iniciar uma classe, vou introduzir um dos, senão o mais impotante componentes é a...(continua aí em baixo, chame de parte 2 se preferir...)

[EYE CATCH, aquele trecho que vem quando um seriado volta do intervalo comercial... Hahaha, tratem de decorar o termo, não vou explicar pra sempre!] herança. como a aula já se prolonga, vou dizer m poucas palavras o que seria isso. Quando você cria uma claase no RGSS, você vai poder modifcá-la enquanto utiliza o software, afinal, isso é um objeto, e o Ruby dá essa moleza de você adaptar qualquer procedimetno (e eu disse QUALQUER) à medida que você quiser ou precisar usar. A palavra-chave para ue se possa modificar m procedimen to sem destruí-lo é a herança. Repare que caso você crie uma classe com o msmo nome de ma classe já existinte e com o mesmo nome de procedimentos eles serão automaticamente substituúidos, e agora que vamos desenvolver uma maneira de mostrar uma mensagem de texto a cada 10 segundos no mapa, autmaticamente, sem intervenã de nenhum NPC, portanto, basta zerar o projeto, apagando o script que fizemos e o evento também, ou então crie um novo para ter menos trabalho (-_-').

Repare nisso aqui, vamos tomar emprestado o esquelto da Scene_Map - Scene é o em geral qualquer conjunto de figuras e janelas (as azuis, que nem a do texto, que tem o nome de window), no RPG Maker uma cena (scene) pode ser qualquer uma dessas coisas: a tela de título do jogo (a Scene_title), a batalha (Scene_Battle), o menu do jogo (Scene_Menu), o mapa (scene_map, o que vamos usar por aqui...) e até a tela de Game Over´(Scene_GameOver) são exemplos e cenas dierentes. Agora olhar toda aquela lista enorme de scripts "já prontos" não é mais tão dificil já que você á sabe identificar ma cena e uma janela (window). Sem enrolar, faça a estrtura da classe:

class Scene_Map <> #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# "O que é isso aqui??" R: Um comentário... dãããaaa!

# Repare, a cor é verde? Tudo depois desse sinal

# aqui é comentário, não influi em nada.

# "Mas então? E esse '<>
# declaração da cena?" R: Tenha calma e você verá!
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def initialize

# Procedimento que SEMPRE é chamado quando você cria uma nova classe

# Caso ele peça algum parâmetro, sempre use eles quando for usar 'classe.new'


end


def update

# Toda vez que há uma atualização de um quadro na tela,

# (Olha que são 60 vezes por segundo!) isso aqui deve ser chamado.

end

def terminate
# Tudo que tem começo tem fim fim!

# Você precisar desocupar todos os recursos que utilizou ,
# se não quiser que tudo fique lento!
end

end

# Fim da classe. Caso esqueça de colocar algum 'end', ou

# colocar mais que o necessário, dará 'syntax error',
# aí você terá que checar um por um!


Fim da transmissão! Depois não reclama do tamanho, véio. Acho bm revisar o que você viu hoje:

class Primeira_Classe # Inicia a classe

def initialize # Procedimento chamado sempre que é criada nova classe;
imprime_mensagem # Chama a rotina criada abaixo;
end # "Fecha" esse procedimento.

def imprime_mensagem #Procedimento/Rotina customizado
print “Olá Mundo! Essa é a minha primeira mensagem feita em RGSS!”
end # "Fecha" esse procedimento.

end # "Fecha" a classe.

def update #Toda santa vez que mudar 1 frame...
end

def terminate # Fim da linha aqui...
end

end # Fim da classe

Para chamar, tentem isso no ‘Chamar Script’ dum evento qualquer , olha só:

usar_classe = class.new # Cria um novo objeto da classe, usa comandos do initialize;
usar_classe.procedimento # Chama o procedimento (rotina/função) da classe.

[ENDING, tema de encerramento]
[NO PRÓXIMO EPISÓDIO, ou seja, as próximas aulas]

Vamos enfim revelar todos os detalhes da herança, escrever os códigos dela e digo mais: vamos aprender variáveis e fazer aparecer algo real na tela de uma cena à escolha! O próximo episódio de ‘Minha vida, agora com RGSS’ será:

Episódio #03 – “Classes & Imagens: O começo de qualquer coisa” Não percam!!



Um comentário:

  1. ei mano eu li de pouco em puquinho ate por q ja sei^^ mais axo q si vc quiser fazer q os leitores apredem o RGSS2 é melhor começar com o 1 Exemplos:variaceis,invariaveis td isso q eu axo q vc sabe^^ espero respostas e continue sim com o seu blog si quiser conversar comigo melhor entre no forum http://equipedw.forumeiros.com^^ colocarei seu blog nos meus favoritos t+

    ResponderExcluir