Lógica do RGSS
Nesse tutorial vou explicar o basico e necessario da programação com classes e objetos em RGSS. vai servir pra você que não sabe programar nada em RGSS ou que quer aprender mais sobre como funcionam as coisas nos scripts e na lógica da programação orientada a objetos.
Se você não sabe sobre nada de programação em RGSS: nesse tutorial você vai começar a aprender, mas lembre-se, o trabalho de ficar bom em RGSS é seu, todos os tutorial só te explicam os passos pra você praticar mais sem depender de ninguem.
Se você sabe programar: esse tutorial vai ser bem fácil.
Nos proximos tutoriais que vou me especializar em criação de scripts para o RPG Maker VX, aqui estou mostrando um começo para facilitar aos proximos tutoriais.
Lição 1 - Entenda os termosClasse: a classe representa um conjunto de objetos e define o comportamento desses através de métodos.
Objeto: um objeto é capaz de reagir e enviar "mensagens" de acordo com a necessidade a qual foi programado.
Métodos: é por onde o objetos reagem as mensagens, os métodos são todas as opções de programação que a linguagem oferece.
Herança: é por onde uma classe pode se estender a outra, tendo acesso a suas funções (sua super-classe) (exemplo: Window_Selectable que herda as caracteristicas da Window_Base). Também existem a Herança multipla, que é quando uma classe possui mais de uma super-classe (exemplo: Window_Command).
Interface: é o contato da classe com o mundo externo (exemplo: Scenes).
String: é o termo usado para dizer que uma variável é formada de texto.
Int: é o termo usado para dizer que uma variável é formada por números.
Lição 2 - Estrutura de uma classeVariáveis de classe: são variáveis que podem ser acessadas tanto dentro quanto fora da classe, com ou sem herança, por isso não importante. São as variáveis que começam com um attr loog abaixo do nome das classes (veja isso nos scripts Game_). Existem 3 tipos: accessor, writer e reader. no attr_accessor você tem a capacidade de ler e modificar as informações da variáveis, na attr_writer você pode somente atribuir um valor sem poder altera-lo (ou seja, completamente inútil) e na attr_reader você somente não pode alterar o valor atribuido inicialmente. Os valores iniciais dessas variáveis são atribuidos na primeira função de classe a ser lida, initialize (vamos ver isso mais abaixo).
Funções: as funções no RGSS são os defs, são dentro deles que a classe "ganha vida". No RGSS existem defs que são lidos assim que a classe é chamada, eles são o initialize, main e start (o initialize lê primeiro) (no VX agora é mais usado start que main, que é consequencia das "coisas prontas" que vieram). E agora temos o terminate que é uma novidade que veio com o VX, ele é a função que é lída quando a variável $scene é alterada (vamos ver isso em outro tutorial).
O initialize é a função operada assim que o script é criado, então é por ele que se define os valores das variáveis de classe.
O main (não mais utilizado no VX, somente utilizado no Scene_Base (também novo script do VX)) é operado assim que a função é chamada, por isso que os valores das variáveis devem er postar no initialize. É pelo main que antigamente nós acessavamos outras funções da classe/super-classe.
O start é o novo main do VX utilizado nas Scenes (scripts de interface), é por ele que as scenes ganham vida o que irei explicar como fazer em outro tutorial e também como ela funciona.
Não é obrigatório uma classe possuir a função initialize.
Lição 3 - Acessando funçõesAs funções criadas nas classes podem ser acessadas dentro das próprias funções da classe (utilizado no start dos scenes) e por variáveis que iniciação a classe (assim que acessamos as funções dos Game_s).
Acessando as funções pela própria classe basta chamar pelo seu nome. Acessar as funções por variáveis, é necessario ter o nome da variável que a classe foi atribuida, um ponto e o nome da função.
Lição 4 - PráticaAqui um simples exemplo de extrutura de classe, função e acessando classes:
- Código:
-
class Script_Test
#criando variável de classe
attr_accessor :nome
#acessando a variável de classe
def initialize
#nome dado a variável
@nome = "Firewords"
end
#função para acessar a outra função
#é totalmente disnecessario isso, poderia ir direto,
#mas aqui é só um exemplo
def alterar_nome
mudando
end
#função para modificar a variável
def mudando
@nome = "Leonardo" #alterando variável de classe
end
end
@classe = Script_Test.new
print @classe.nome
@classe.alterar_nome
print @classe.nome
Lição 5 - Praticando maisAgora que você já sabe o basico, nós vamos utilizar uma classe com herança para você entender melhor alguns métodos. E vai aprender também o método de retorno que é indispensável para criação de scripts.
- Código:
-
class Soma
attr_accessor :soma
def initialize
@soma = 0
end
def somar(v1, v2)
return v1 + v2
end
end
class Teste < Soma
def Valor
var1 = rand(10) #valor aleatorio de 0 a 10
var2 = rand(10)
@valor = somar(var1, var2)
print @valor
end
end
O return serve basicamente para retornar valores. Você manda informações para uma função e seus métodos executam ela do jeito que você programou e então acontece o retorno do resultado. Uma função que tem retorno deve sempre estar sempre igualada a uma variável (como mostra no exemplo) ou a uma condição.
Créditos: Firewords