sexta-feira, 2 de janeiro de 2009

Muitas coisas

Feliz ano novo! Quanto tempo sem atualizações, não? Trago boas notícias, na verdade, 3. A primeira é que eu consertei meu teclado, era um vírus que impedia eu usar acentos, instalei um antivirus e deu certo (por quê eu não fiz isso antes?!), a segunda é que lançamos a edição 8 da revista RMEvo, aconselho vocês a olharem no site. E a última é que fiz uma aulinha para revisar e reforçar o conteúdo, espero que gostem. Irei tentar atualizar o blog assim que trouxer coisas novas.
Até mais.

Por quê progamar? O que é isso?
Bom, progamar é necessário para que você saiba o que está fazendo, ou seja, pra montar um script, é necessário que você saiba o que quer fazer com ele do início ao fim, ter seu esqueleto progamado em sua mente. Basicamente, não é difícil, apenas basta saber que tipo de script será. Por exemplo, para saber RGSS, não é só saber a sintaxe da linguagem, você deve saber também as variáveis e métodos de cada script. Este é o problema, muitos não conseguem dominar o que cada script faz. Muitos só sabem fazer uma janela, que é só criar e colocar um texto qualquer... até aí tudo bem, não tem complicação, eu até sugiro começar assim e ir exercitando. Mas pense um pouco, assim você não vai sair do lugar, vai ficar sempre na mesma, para aprender RGSS e dominá-lo, devemos nos esforçar para aprender o máximo possível, e eu digo, não é difícil aprender as suas bases, se você as aprende, então fica tudo mais fácil. Vou começar com as variáveis, coisa ESSENCIAL para os scripts.

Como usá-las? Para quê usá-las?
Simples, tudo que é objeto, pode ser posto dentro de uma variável, por exemplo, o título do jogo é a classe Scene_Title, ou seja, a classe é um objeto, portanto, podemos considerá-la como uma variável, não? @tit = Scene_Title.new
Ok, mas pra quê eu vou usar o título? Para nada, pois ele já é um script pronto, não temos que incluí-lo em outro script. Vou tentar simplificar as coisas, variáveis servem para armazenar um valor ou objeto o qual você pode fazer modificações. Se queremos criar uma window e colocá-la em uma cena, como a janela de dinheiro no menu, basta criar uma variável e declará-la como a janela. Com uma simples linha: @gold = Window_Gold.new | Certo... Entendi. Mas eu quero mexê-la, tipo, mudar a opacidade, posição X e Y, etc. Bom, aqui vem uma consideração importante. Cada classe tem seus métodos (vou explicar mais a frente), ou seja, cada uma é diferente da outra. O que interscede elas é a herança. Herança é herdar algo de alguma coisa, certo? Então no RGSS, a classe herda métodos de uma outra! Mas pra quer herdar? Simples, veja o caso da Window_Base, o próprio nome fala que ela é a base, se você reparar, na primeira linha tem assim: | class Window_Base < Window | O sinal < indica herança nesse caso, ou seja, a window base ganha os métodos da classe window (que está implícita no progama) e daí cria métodos para toda window criada a sua base. Enfim, a window_base ganha todos os métodos da classe window e ainda cria os seus. Imagina se nós tivéssemos que escrever todos os métodos em cada janela?! A herança que faz com que isso seja simplificado, apenas pega os métodos da "Mãe" e herda. Então, cada classe tem seus métodos, você pode consultá-los no arquivo de ajuda do RPG Maker VX (aconselho muito!). Uma window tem vários métodos, como citei na aula passada, por exemplo, draw_actor_graphic, draw_actor_name, draw_actor_sp, etc. Além dos métodos que servem para Sprites, como X, Y, opacity, height, width. Tudo isso você deve aprender para ser um scripter. As variáveis cuidam disso para você, usando os métodos, podemos fazer com que o objeto fique/faça o que desejarmos.

Tá, vamos falar sobre métodos. Eles são a essência da progamação, eu diria que são livros, cada um fala de algo, ou diz o que deve ser feito. Dentro de uma livraria (uma classe) eles formam um conjunto que trabalham em equipe. Os métodos começam com def e acabam em end, sempre. Assim como as classes. O end serve para dar fim a um procedimento, por exemplo, se não houvesse end, uma condição poderia se extender ao invés de cumprir apenas uma coisa.

if a > b
print "a maior que b"
# aqui vai o end para fechar a condição
# resto do script

Se o end não estivesse lá, o script todo seria a condição, entende? Não? Pense mais um pouco, estude os scripts, veja cada método deles e veja o end de cada um. Geralmente as palavras reservadas tem ends, como if, class, def, for....
Os métodos, enfim, dizem um procedimento a se fazer, vamos ver um caso no menu. No def main, vemos a inicialização dos objetos, a janela de comandos, a janela de gold, dos personagens, etc. Viu uma coisa em comum? As variáveis! | @playtime_window = Window_PlayTime.new | Por exemplo, elas aqui, criam o objeto Window_PlayTime que é a janela de tempo. Em seguida, vem os métodos:

@playtime_window.x = 0
@playtime_window.y = 224

Os métodos, neste caso, estão sendo chamados, é inserido um ponto "." após a variável e em seguida o método. Que neste caso é X e Y, para determinar a posição X e Y da janela. Mais abaixo, vemos o seguinte:

@playtime_window.dispose

Isto indica mais um método para a janela, certo? O método dispose apaga o objeto. Então concluímos que o objeto será apgado. No def update, ele será atualizado com o método .update | agora, vamos trocar de variável.

@command_window.active = true/false

1º Porque o método active funciona com a janela de comandos e não com a janela de tempo? 2 Porque tem esse negócio de true e false e não número? Bom, aqui vai uma grande e útil explicação. Como eu falei antes, cada classe tem seus métodos, a janela de tempo e de comando ambas são herdeiras da window_base, porém não há motivos para vermos se uma janela que apresenta textos ter algo ativo, ou há? Já na janela de comando, se ela estiver ativa, faz grande diferença, por isso podemos "ligar e desligá-la" com o comando true e false (on/off). Se quisermos mexer nela, o comando active deve estar true, caso queira desabilitá-la, use o false. Por natureza, este comando já vem como true (a janela criada já fica ativa). A questão de números não se aplicaria a isso, não acha? A respost é a mesma se perguntarmos porque não podemos colocar true e false nos métodos X e y. Porque eles precisam de orientação. Cada método tem sua diferença e utilidade.

Resumindo, progamar não é difícil, apenas temos que conhecer o que queremos fazer e como faremos. É essencial conhecer cada método das classes, pois podemos usá-los.
Eu fiz esta aula pra demonstrar que tanto variáveis como métodos são importantíssimos em um script. Espero que tenha esclarecido alguma coisa.

0 comentários: