Você está na página 1de 19

Ol pessoal! Sejam bem-vindos ao meu tutorial de RGSS2.

Com o RPG Maker VX a e uma certa "decadncia" da comunidade maker brasileira, decidi criar este tutorial para ensinar RGSS2 de uma forma fcil e compreensiva. Apesar disto, este tutorial ficou bem extenso, pois difcil ensinar bem alguma coisa com poucas palavras, mas eu tentei comprimir ao mximo. De qualquer forma, se voc for preguioso e ter medo de ler mais de 100.000 caracteres, bom nem comear. o_o Boa leitura! Flaepru - flaepru@gmail.com

Agradecimentos
Ao site Ruby-Doc.org, onde pego definies e outras coisas para as aulas.

ndice
Para acessar as aulas, cliquem nos links da lista. Aulas sem links ainda no esto disponveis. Aulas

1. [Ir] Introduo: introduo programao, definio do RGSS2 e 2. 3. 4. 5. 6. 7. 8. 9.


observaes [Ir] Variveis I: o que so, tipos e definies [Ir] Variveis II: arrays e hashes [Ir] Operadores: operadores matemticos (soma, subtrao, etc) [Ir] Mtodos: definio e usos [Ir] Controle de Fluxo I: condicionais (if, case, unless) [Ir] Controle de Fluxo II: repetidores (while, until, loop, for) [Ir] Classes: o que so e usos [Ir] Janelas & Cenas: criando e gerenciando

O que o RGSS2? RGSS a abreviao para Ruby Game Scripting System (Sistema Ruby de Programao de Jogos), uma variante da linguagem Ruby, uma linguagem orientada a objetos muito famosa no oriente. O RGSS2 uma "evoluo" do RGSS e se encontra no RPG Maker VX. Apesar de terem nomes diferentes, basicamente apenas a forma com a qual eles interagem com o maker que muda de um para o outro, a sintaxe a mesma - logo, este tutorial serve mesmo se voc deseja programar para o XP. Se quiser saber mais sobre a definio do RGSS, clique aqui. Programao orientada a objetos? Uma programao orientada a objetos um paradigma de anlise, projeto e programao de sistemas de software baseado na composio e interao entre diversas unidades de software chamadas objetos. Como caractersticas de uma POO, podemos citar o uso de

classes, objetos, atributos, mtodos, herana, abstrao, polimorfismo dentre outros. Ruby no a nica POO existente. Existem vrias outras: Python, C++, Smalltalk, Java, etc. (Obs.: nunca chame uma POO de POO em fruns gringos. :P)
Fonte: Wikipdia

Como programar? O ato de "programar" passar uma srie de instrues para o computador com o intuito de que ele realize alguma tarefa. Por exemplo, para fazer uma conta de adio, voc usaria:
Cdigo:

a = 1 + 2 print a.to_s Basicamente o que voc fez foi: "o valor de a igual soma entre 1 e 2, exiba a transformado em string". No se preocupe se voc no entendeu o cdigo, voc entender posteriormente. O RGSS2: primeiros comandos Ok, est na hora de voc aprender as duas coisas mais bsicas do RGSS2: comentrios e o comando "print". Eis um exemplo:
Cdigo:

# Exibe "Hello World" na tela print "Hello World!" Um cdigo simples e rpido. Cole isso no editor de scripts (em um script novo) ou use o comando "Chamar Script" do editor de eventos. Veja o resultado. Uma caixa de dilogo escrita "Hello World!" apareceu. Simples, no? Esta a funo do print. Voc vai us-lo para verificar dados e notificar erros em caixas de dilogo. Alm do print h o comando p, o qual explicarei mais posteriormente. Mas provavelmente voc pode notar que a primeira linha de cdigo foi ignorada. Por qu? Simplesmente porque ela um comentrio. Linhas de cdigo aps um # so consideradas comentrios. Alm do # para comentrios, podemos utilizar =begin =end. Exemplos:
Cdigo:

# Este um comentrio a = 10 # Comentrio - s o que fica depois do # considerado comentrio =begin Utilize esta funo para comentrios mais longos =end Lembre-se de que comentrios so teis ao decorrer do cdigo para explicar as funes e muito mais. Programadores profissionais usam comentrios antes de vender seus produtos aos seus clientes, lembre-se disso ^_^ Sumrio No final de cada aula, colocarei um sumrio para resumir tudo o que foi aprendido na aula. D uma checada e veja se aprendeu tudo mesmo :P

O que o Ruby Conceito de programao orientada a objetos Programa "Hello World!" Comentrios e comando print

Bem, aqui est a segunda aula do Guia do RGSS2. Aps uma breve introduo ao mundo da programao e ao RGSS2, ensinarei uma das coisas mais importantes em uma linguagem de programao: variveis. O que so variveis? Assim como na programao por eventos, variveis so objetos que armazenam atributos. Entretanto, em programao elas podem tanto armazenar nmeros, quanto letras e/ou sentenas inteiras. Atribuio Para armazenarmos determinados valores em variveis, temos que atribu-los a ela. Para isso, usamos varivel - valor. Entenda melhor os valores e variveis abaixo. Note que voc pode definir uma varivel como tendo o valor igual a outra, deixando uma independente da outra - como se fosse um copiar e colar. Tipo de variveis

Variveis locais: variveis locais so variveis que podem ser acessadas dentro de um bloco de cdigo ou mtodo. Nomenclatura: variveis locais so nomeadas iniciando-se com uma letra minscula e sem espaos ou caracteres especiais. Ex.: variavel_local Variveis de instncia: "instncia" vem do ingls "instance" e significa "exemplo". Essas variveis so utilizadas em classes e podem ser acessadas por quaisquer objetos da classe. Voc aprender a us-las corretamente e anex-las s classes na aula 8. Nomenclatura: a mesma regra das variveis locais, mas o nome deve conter um @ antes. Ex.: @variavel_de_instancia Variveis de classe: so variveis que devem estar em uma classe, e seus valores so compartilhados por todos os mtodos da mesma. Nomenclatura: a mesma regra das variveis locais, mas o nome deve conter dois @ (@@) antes. Ex.: @@variavel_de_classe Variveis globais: variveis que podem ser acessadas por qualquer mtodo ou cdigo no jogo inteiro. Nomenclatura: a mesma regra das variveis locais, mas o nome deve conter um $ antes. Ex.: $variavel_global Constantes: como o prprio nome diz, elas tm um valor constante e que no pode ser modificado. Podem ser acessadas por qualquer classe com o escopo correto. Nomenclatura: variveis constantes devem iniciar com uma letra maiscula, embora a maioria dos programadores as faam inteiras em maisculas. Caracteres especiais e espaos no so permitidos. Ex.: CONSTANTE

Tipo de dados

String: string so os tipos mais comuns, e servem para armazenar textos. Uma string definida por aspas duplas (" ") ao invs de aspas simples (" ") podem conter comandos especiais de cdigo. Definindo uma string: variavel = "String."

Numricos: variveis que armazenam valores numricos. Possuem vrias ramificaes. Definindo um valor numrico: variavel = 10 o Integer: variveis que armazenam nmeros inteiros. dividido em Fixnum e Bignum. Fixnum: um Fixnum armazena valores inteiros que podem ser representados em uma palavra em uma mquina nativa (menos 1 bit). Se qualquer operao Fixnum exceder o alcance, o valor automaticamente convertido para Bignum. Bignum: um Bignum tratado como uma string de bits de tamanho infinita com duas representaes complementares. o Float: o dado "float" (flutuante) equivalente ao conjunto de nmeros reais da matemtica, e armazena valores no-inteiros (fracionrios). Boolean: talvez o mais simples dos valores: pode ser apenas "true" ou "false" (verdadeiro ou falso).

Converses Com o RGSS2, podemos converter os tipos de dados das variveis, juntamente com o seu valor. Como exemplo, para que voc exiba um valor numrico em um print jutamente com strings, ele deve ser convertido para uma string antes disso. Para converter uma varivel, digite variavel.to_x, trocando X pelo tipo. Aqui esto os mtodos:

.to_s: a mais conhecida, converte valores em strings. .to_i: converte valores em integers. O valor automaticamente classificado como Fixnum ou Bignum. .to_f: converte valores em floats. .to_a: o menos conhecido, usado e relativamente difcil de se manusear. Converte os valores em dados de uma array (que aprenderemos na prxima aula).

Exerccios Finalmente, prtica! :D Em toda aula, havero exerccios para que voc coloque em prtica tudo o que aprendeu e, claro, fazer um pouco mais se desejar! Os dessa aula so:

Defina uma varivel local sendo uma string de valor "Hello World!" e exiba-a com o comando print. Defina uma varivel de instncia de valor boleano equivalente a verdadeiro. Defina uma varivel global de valor integer com um valor numrico de sua preferncia, e depois exiba-a com o comando print. Crie uma string com o valor "50" e exiba-a. Aps isso, transforme-a em float, e ento exiba-a como string.

Estes exerccios so meio chatos, mas o que eu consegui criar com esse assunto to simples (que deu um tpico enorme ._.). Entretanto, em breve os exerccios ficaro legais. :D Aqui vai uma resoluo, para conferir:
Cdigo:

# Criao e exibio da primeira varivel hello = "Hello World!" print hello # Criao da segunda varivel @instancia = true # Criao e exibio da terceira varivel $var_global = 59 print $var_global.to_s

# Criao e exibio da quarta varivel valor = "50" print valor valor = valor.to_f print valor.to_s

Sumrio

Definio de varivel Tipos de variveis e funes Tipos de dados Conversores de tipos de dados

Por enquanto s. Prxima aula tem mais. Se tiverem dvidas, no hesitem em perguntar. At, galera! \o

Bem-vindos terceira aula do meu guia de programao para o VX. Aps ter aprendido sobre variveis, vocs aprendero sobre arrays e hashes. Adianto j que elas so potencialmente complexas, mas ajudam muito na hora da programao. Em programao, arrays e hashes so mais conhecidas como containers (e no para menos, parecem-se com gavetas :P). O que so arrays? Arrays so colees indexadas e ordenadas de qualquer objeto. Isso significa que ela servem para armazenar mltiplos valores em apenas uma varivel, de forma que eles sejam acessados pelos indexadores. O primeiro valor contido em uma array corresponde ao indexador "0", o segundo ao "1" e por assim vai. Entretanto, tambm possvel fazer isso de forma inversa: "-1" ir acessar o ltimo valor, "-2" ir acessar o penltimo, e por assim vai. Definindo uma array H dois tipos de arrays: unidimensionais (conhecidas tambm como vetor/lista) e multidimensionais (conhecidas tambm como matriz). Para definir uma array unidimensional, usamos:
Cdigo:

array = ["Valor 1", "Valor 2", "Valor 3"] Para definir uma array multidimensional, usamos:
Cdigo:

array = [["Valor 1", "Valor 2"], ["Valor 3", "Valor 4"]] Percebe a semelhana que as arrays tm com os conjuntos matemticos (S = {1, 2, 3, ...})? No to difcil, afinal. Se fssemos definir nossas duas arrays de exemplo graficamente, seria desta forma:

Percebam os nmeros com contorno verde. Eles so os indexadores, e por eles que acessaremos os dados da array. Perceba tambm a semelhana da array multidimensional com uma tabela - por causa disso, arrays tinham esse nome antigamente, em linguagens como COBOL. Acessando valores em uma array Assim como na definio, para acessar os dados h uma diferena entre as arrays unidimensionais e multidimensionais. Levando em conta as variveis do exemplo anterior, utilizaramos isto para o primeiro caso:
Cdigo:

array = ["Valor 1", "Valor 2", "Valor 3"] print array[0] Coloque este cdigo com o comando "Chamar Script" dos eventos. Vejam o resultado: uma janelinha escrita "Valor 1", no? Exato. O que voc fez, como exemplificado anteriormente, foi acessar o valor (Valor 1) do primeiro indexador (0). Agora, para uma array multidimensional:
Cdigo:

array = [["Valor 1", "Valor 2"], ["Valor 3", "Valor 4"]] print array[0][0] print array[1][0] O que aconteceu aqui? Para definir qual valor acessamos, primeiro precisamos definir qual o "conjunto" em que ele est contido, e colocamos o indexador dela no primeiro colchete. No segundo, definimos qual ser o valor do conjunto a ser exibido, utilizando o indexador. Veja que primeiro ns colocamos 0 e 0, ou seja, abrir o primeiro conjunto e seu primeiro valor. Aps isso, abrimos o segundo conjunto e seu primeiro valor. Outra coisa: quando tentamos acessar um indexador sem valor numa array, seu retorno "nil" (nulo). Assim, terminamos as arrays. O que so hashes? Uma hash uma coleo de pares de valores. similar a uma array em todos os sentidos, exceto pelo fato de que a indexao feita por meio de chaves arbitrrias de qualquer tipo, e no apenas por indexadores inteiros pr-definidos. Definindo uma hash Para definir uma hash, usamos chave => valor. Desta forma:
Cdigo:

hash = {1 => "Um", 2 => "Dois"}

Assim como em arrays, podemos definir uma hash multidimensional:


Cdigo:

hash = {"numerais" => [1,2,3], "escritos" => ["Um", "Dois", "Trs"]} V? Basicamente a mesma coisa que as arrays. Ah, lembrem-se: colocar uma hash com dois valores (ex.: {1, 2}) ir atribuir o segundo valor ao primeiro, que ser a chave. Entretanto, quando voc coloca um nmero mpar de chaves/valores, haver um erro de cdigo. Acessando valores em uma hash Primeiramente, iremos acessar a nossa primeira hash exemplificada, unidimensional:
Cdigo:

hash = {1 => "Um", 2 => "Dois"} print hash[1] print hash[2] Qual foi o resultado? Primeiro, foi exibido "Um" na tela, e depois "Dois", correto? Isso aconteceu porque a chave "1" est ligada ao valor "Um", e quando voc a acessa, seu valor apresentado. O mesmo acontece com a chave "2". Veja outro exemplo:
Cdigo:

hash = {"pesquisa" => "Google", "email" => "Gmail"} print hash["pesquisa"] print hash["email"] Primeiro, o resultado foi "Google" e depois "Gmail". Fizemos a mesma coisa, a diferena era que nesse caso as chaves eram strings (por isso estarem entre aspas, se no seriam consideradas cdigo). Agora, em uma hash multidimensional:
Cdigo:

hash = {"numerais" => [1,2,3], "escritos" => ["Um", "Dois", "Trs"]} print hash["numerais"][1] print hash["escritos"][3] O que apareceu? Primeiro, "2". Por que isso? Ao acessarmos um valor em um conjunto, usamos a indexao automtica igual s variveis, logo, seguimos a regra de iniciar no 0. Depois, apareceu "nil", correto? Significa "nulo". O quarto valor (representado pelo 3) no existe no conjunto "escritos". Observaes Arrays so definidas com colchetes ([]) e hashes com chaves ({}), entretanto quando acessamos o valor de qualquer uma delas usamos os colchetes. Conjuntos de uma hash multidimensional tambm so definidos com colchetes. Exerccios Continuando, irei colocar alguns exerccios aqui para ver se vocs realmente aprenderam sobre o assunto.

Crie uma array unidimensional com 4 valores quaisquer e exiba o ltimo sem usar o mtodo -1. Crie uma array multidimensional com dois conjuntos em trs membros em cada conjunto, e exiba o terceiro valor do segundo conjunto. Crie uma hash unidimensional com dois pares chave/valor, e acesse qualquer um deles.

Crie uma hash multidimensional com dois conjuntos: um dos makers sem RGSS e outro dos makers com RGSS, e exiba qualquer um dos valores.

Resoluo:
Cdigo:

# Array unidimensional array = ["Um", "Dois", "Trs", "Quatro"] print array[3] # Array multidimensional array_m = [["Um", "Dois", "Trs"], ["Quatro", "Cinco", "Seis"]] print array_m[-1][-1] # Hash unidimensional hash = {"rpg" => "D&D", "mmorpg" => "WoW"} print hash["mmorpg"] # Hash multidimensional hash_m = {"sem_rgss" => ["2000", "2003"], "com_rgss" => ["XP", "VX"]} print hash_m["com_rgss"][1]

Sumrio

O que so arrays e hashes Definindo uma array e uma hash Unidimensionalidade e multidimensionalidade Acessando valores em uma array e hash

Sim, eu sei. O tpico ficou realmente grande. Mas espero que vocs tenham entendido tudo certinho o_o At a prxima aula, galera \o/

Ol pessoal! Faz j um certo tempo que eu no adiciono novas aulas, mas finalmente a quarta aula do nosso guia chegou. Aqui, iremos abordar coisas bastante utilizadas em RGSS2: operadores. Vamos l ento! O que so operadores? No RGSS2, os operadores tm praticamente a mesma funo que na matemtica: realizar operaes entre dois ou mais termos, e no apenas nmeros - pelo contrrio, vo muito alm disso. Aqui est uma lista com os operadores do RGSS2 (com a exceo de alguns, que ensinarei nas aulas de controle de fluxo). No se preocupe se eles so muitos e parecem assustadores, vrios deles sero ignorados por voc.

Note que alguns operadores significam a mesma coisa, como o "and" e o "&&", que significam "e". Utilizando operadores Utilize o editor de scripts ou o comando Chamar Script para testar o seguinte cdigo:
Cdigo:

# Definio das variveis a = 4 b = 2 # Operaes print a + b print a - b print b - a print a * b print a ** b print a / b print b.to_f / a.to_f print (a + 1) % 2 # # # # # # # # 6 (a mais b) 2 (a menos b) -2 (b menos a) 8 (a vezes b) 16 (a elevado a b) 2 (a dividido por b) 0.5 (b real dividido por a real) 1 (a mais um - dividir por dois e retornar o resto)

# Usando operadores nas strings print a.to_s + b.to_s # 42 str1 = "Tutorial" str2 = "RGSS2" print str1 + " " + str2 # Tutorial RGSS2 # Verificaes print 1 == 2 print 1 < 2 print str1 == "Tutorial" print 1 != 10 # Atribuies # # # # false (um igual a dois) true (um menor que dois) true (varivel str1 contm "Tutorial" true (um diferente que dez)

var = 10 print var var += 5 print var var -= 3 print var

# # # # # #

Atribuio comum 10 Adicionar cinco ao valor da varivel 15 Subtrair trs do valor da varivel 12

Veja o resultado de cada um deles. auto-explicativo. + soma dois valores numricos ou dois valores strings. - subtrai valores numricos. * multiplica valores numricos. ** eleva um nmero potncia do outro. / divide um nmero por outro. Os outros, basta olhar na tabela para testar seu funcionamento. Observaes Um dos erros mais comuns em programao confundir = com ==. Eles so completamente diferentes. O = significa atribuio, e no igualdade. O operador que representa igualdade o == e o === representa "contm no range" (vero mais posteriormente). Sumrio

O que so operadores Lista de operadores Utilizao de alguns operadores

Bom, galera, isso. Essa aula no tem exerccios, porque sinceramente, esse assunto to simples que foi muito complicado de se explicar e rendeu uma aula curtssima. O mximo que eu colocaria era mandar vocs fazerem contas do primrio De qualquer forma, boa sorte nas prximas aulas. At mais!

Sejam bem-vindos quinta aula do guia do RGSS2. Vejam s, j passamos da metade! Aqui, abordaremos coisas muito teis e que so essenciais no RPG Maker: mtodos. O que so mtodos? Mtodos no so nada mais, nada menos que um bloco de cdigo pr-definido que pode ser acessado vrias vezes, de forma igual ou diferente. Um exemplo de seu uso seria isso: voc tem que realizar uma operao de bskara, por exemplo, que deveras comprida. Ao invs de escrever o cdigo vrias vezes, chamaramos o cdigo j escrito vrias vezes. Uma curiosidade: as classes so feitas apenas por mtodos. Definindo e acessando um mtodo Para definir um mtodo que exibisse um "Hello World" na tela, simplesmente usaramos:
Cdigo:

def Metodo print "Hello World" end E, logo depois, para acess-lo, usaramos:
Cdigo:

Metodo()

Por que temos que utilizar parnteses? Nesse caso, utilizamos parnteses vazios porque no h nenhum valor especfico necessrio para este mtodo. Sem os parnteses, o interpretador viria o comando como uma constante. Agora, teste o seguinte:
Cdigo:

def Metodo(x, y) print x + y end Metodo(1, 3) Metodo(4, 1) Vejam o resultado. "4" e "5". Isso porque o mtodo exige que as variveis locais x e y sejam declaradas, para ento fazer uma operao de adio entre os valores. Imagine isso em processos repetitivos e/ou automticos, o quanto que facilita Uma coisa que comum utilizar variveis de instncia, principalmente quando os mtodos so utilizados em classes:
Cdigo:

def Metodo(x, y) @x = x @y = y print @x + @y end Metodo(1, 2) Redefinio e alias Em n casos voc pode precisar re-escrever o seu mtodo, mudar o cdigo contido nele, ou simplesmente acrescentar. Para isso, h duas maneiras: redefinio e alias. A redefinio simples: basicamente, o mtodo inteiro apagado e o novo cdigo colocado em seu lugar.
Cdigo:

# Definio do mtodo def Metodo(x, y) print x + y end Metodo(1, 2) # 3

def Metodo(z) print "Agora exibe isso e " + z.to_s end Metodo(9) # Agora exibe isso e 9

Agora, o comando que realmente importante o comando alias. Podem parecer um pouco complicados, mas so simples. Alias, em ingls, significa "nome falso", e basicamente isso! Com o mtodo alias, voc renomeia um mtodo, coloca o cdigo existente nele e adiciona o novo ao novo mtodo, com o nome antigo. A sintaxe alias NomeNovo NomeAntigo. Um exemplo prtico:
Cdigo:

# Define um mtodo com o nome "MetodoNormal" def MetodoNormal print "Mostrando o mtodo \"MetodoNormal\"" end

# Exibe o contedo do mtodo "MetodoNormal" MetodoNormal() # Mostrando o mtodo "MetodoNormal" # Fazer o alias # Jogar todo o cdigo existente no mtodo "MetodoNormal" no novo mtodo # "NovoMetodoNormal", e redefinir o mtodo "MetodoNormal" com um cdigo novo. alias NovoMetodoNormal MetodoNormal def MetodoNormal print "Esse o novo \"MetodoNormal\"" end MetodoNormal() NovoMetodoNormal() # Esse o novo "MetodoNormal" # Mostrando o mtodo "MetodoNormal"

E pronto! Acontece o que est descrito nos comentrios. Ah, comum utilizar o alias para redefinies tambm - para isso, voc chama o mtodo de novo nome dentro do mtodo de nome antigo com cdigo novo (vide o VX_SP1, no Editor de Scripts). Curiosidades print, p e loop so alguns dos mtodos que j vm criados no maker. Perceba que eles no tm colorao. Observaes Os mtodos seguem a mesma regra de nomenclatura que as variveis - nada de caracteres especiais, nem espaos. Ah, palavras reservadas (def, begin, etc) so proibidas. Exerccios


Cdigo:

Crie o mtodo X, renomeie-o para Y e coloque um cdigo novo em X, fazendo com que ele chame Y. Crie um mtodo X, ative-o, reescreva-o e ative-o novamente.

Resoluo: # Criao do mtodo X def Metodo print "Hello World!" end Metodo() # Ao de alias alias MetodoA Metodo def Metodo MetodoA() print "Hello World! Bicbico!" end Metodo() # Re-escrever o mtodo "Metodo" def Metodo print "Totalmente re-escrito." end Metodo()

Sumrio

O que so mtodos

Utilizao dos mtodos Redefinio e alias

E aqui terminam a aula sobre os mtodos. Vocs tero uma abordagem com eles novamente na aula sobre classes, pois como disse, elas so formadas apenas de mtodos. Dem sugestes para possveis melhorias nas aulas! At a prxima!

Ol novamente e bem-vindos sexta aula do meu tutorial de RGSS2, que ir ensin-los a controlar o fluxo do programa! Nesta aula, aprenderemos algo muito importante, e talvez at um pouco familiar a vocs: condicionais! O que so condicionais? Uma estrutura condicional uma estrutura que avalia uma certa coisa, e dependendo do que for, exibe um resultado diferente. Condicionais so conhecidas por vocs: elas so praticamente iguais s usadas nos eventos do maker. Os operadores (aprendidos na aula 4) so usados intensivamente aqui. Os tipos de condicionais: if O tipo mais comum de condicionais a que usa a funo "if". Um exemplo de avaliao com um bloco de condio cumprida e outro de exceo, igual ao maker:
Cdigo:

var = 9 if var < 10 then print "O valor menor que 10." else print "O valor no menor que 10." end Lendo o cdigo, teramos: Se o valor da varivel "var" for menor que 10, exiba "O valor menor que 10.", se no, exiba "O valor no menor que 10.". Perceba nesse cdigo o uso do operador que representa " menor que", o <. Em eventos, este bloco de cdigo se pareceria com isso:

Bem, o que voc fez foi criar uma condicional semelhante do RPG Maker, mas agora aprender como criar uma condicional com vrias opes de ocorrncias. Veja o cdigo:
Cdigo:

idade = 14 if idade == 0 print "Voc ainda nem nasceu direito!" elsif idade < 12 print "Voc uma criana!" elsif idade < 18 print "Voc um adolescente!" elsif idade < 120 print "Voc um adulto!" else print "To velho assim?!" end Vejam s: para cada caso, h uma resposta. Mas veja que 14 menor que 18 e que 120, mas a condio aceita a primeira que for cumprida - ou seja, assim que a condio cumprida, o resto do if ignorado, no importa quantas outras opes hajam. Se nenhuma das opes so cumpridas, cai no else. Se no h else, o bloco de cdigo ignorado. Evidentemente, possvel fazer como no RPG Maker e colocar vrios ifs separados para agirem desta forma. Outra forma bastante comum de utilizar o if em conjunto com "and" e/ou "or" para avaliar mais de uma afirmao. Veja os seguintes exemplos:
Cdigo:

var1 = 10 var2 = 15 if var1 and var2 == 10 print "As duas variveis possuem o mesmo valor." else print "Uma varivel tem o valor de " + var1.to_s + " e a outra de " + var2.to_s + "." end if var1 or var2 == 10 print "Alguma das duas variveis possui o valor de 10." else print "Nenhuma das duas variveis possui o valor de 10." end Vejam: no primeiro exemplo, os dois valores devem ser iguais a 10, cada um. J no segundo, apenas um deles deve ser igual a 10 para que a condio seja satisfeita. Ah, perceba que voc pode trocar o "and" por "&&" e o "or" por "||" (vejam a lista de operadores da aula 4). Um outro exemplo utilizando o operador "===", que poucos de vocs conhecem e provavelmente usaro, mas eis o exemplo:
Cdigo:

variavel = 10 print (5..15) === variavel print (15..20) === variavel O operador "===", como eu disse antes, significa "contm no range", e o range, no caso, definido pelo operador "..". Notem que foi preciso colocar o valor entre parnteses pois temos mais de um operando. Os tipos de condicionais: case Quando voc tiver a necessidade de fazer uma condio com vrios valores de uma forma fcil, na melhor do que usar os "cases", ou como so chamados em outras linguagens de

programao, "switches". Ah, notem que no so os switches do maker, uma coisa completamente diferente :P Estudemos o seguinte cdigo para entend-los:
Cdigo:

variavel = 35 case variavel when 10 print "O valor da varivel 10." when 35 print"O valor da varivel 35." when 40..50 print "O valor da varivel est entre 40 e 50." else print "O valor da varivel outro." end Percebem a semelhana com os ifs? O case nada mais do que vrios elsifs juntos, e tambm possui a funo else para quando o valor no encontrado. Notem que aqui ocorre o mesmo que nos ifs, onde quando o valor satisfeito, qualquer condio satisfeita aps aquilo na mesma estrutura ignorada. Os tipos de condicionais: unless O ltimo tipo de condicional, o unless o oposto do if, e significa "a menos que", ou de uma forma mais prtica, "pode ser tudo menos isso". Eles s vezes confundem um pouco mesmo. Estudemos o seguinte cdigo:
Cdigo:

var = 15 unless var == 10 print "A varivel tem um valor diferente de 10." else print "A varivel tem um valor igual a 10." end Leiam o cdigo como o seguinte: "pode ser qualquer coisa, menos 10". No caso, no era 10, ento o respectivo comando foi acessado. Basicamente, isso que vocs tm que saber sobre as condicionais. Observaes Lembrem-se sempre de que o sinal de verificao de igualdade no o =, o ==. Isso j foi dito, mas nunca muito lembrar deste detalhe. = significa "atribuio", enquanto == significa "igualdade". Curiosidades "if", "then" e os outros so operadores, os quais eu no coloquei na aula 4 pois seriam vistos aqui. Vocs tm total liberdade de usar qualquer um dos operadores nas condicionais. Exerccios


Cdigo:

Defina uma varivel com valor qualquer, e crie uma estrutura condicional if verificando o seu valor e mostrando resultados diferentes Faa o mesmo que no exerccio anterior, mas com switches

Resoluo:

var = 90 if var == 50 print "Varivel elsif var == 70 print "Varivel elsif var == 90 print "Varivel else print "Varivel end case var when 50 print when 70 print when 90 print else print end 50." 70." 90." tem outro valor."

"Varivel 50." "Varivel 70." "Varivel 90." "Varivel tem outro valor."

Sumrio

Estrutura condicional "if" Estrutura condicional "case" Estrutura condicional "unless" Uso de operadores no controle do fluxo via condicionais

Bom, essa foi a primeira aula de controle de fluxo, sobre as condicionais. Logo, logo teremos a aula sobre as estruturas repetidoras de fluxo, que so bem interessantes - e s vezes perigosas ^^' At mais!

Depois de um certo tempo grande de espera, trago a vocs a stima aula do meu tutorial de RGSS2, e a segunda de controle de fluxo. Aqui, aprenderemos a utilizar os repetidores! O que so estruturas repetidoras? So estruturas que permitem que voc repita a mesma parte de cdigo por vrias vezes, de acordo com a sua vontade. Os repetidores so utilizados freqentemente os programadores e ajudam na hora de programar, deixando o cdigo mais curto e mais fcil de se escrever. Estrutura repetidora: loop Bem, comecemos pela estrutura de repetio mais bsica: o loop. O loop permite que voc cria um bloco de cdigo que ser repetido eternamente. Veja o exemplo (no cole-o no maker XD):
Cdigo:

var = 1 loop do print var

var += 1 end Se voc utilizar este cdigo no maker, ele simplesmente ficar exibindo janelas eternamente com valores diferentes por um. Mas podemos quebrar o loop a qualquer hora, desta forma:
Cdigo:

var = 1 loop do print var if var == 10 break else var += 1 end end Basicamente, este cdigo ir avaliar toda vez se a varivel possui o valor de 10. Se possuir, ela chama o comando "break" (quebrar), que rompe o loop. Se no, adiciona o valor 1 varivel, e volta tudo ao comeo. Percebam como os loops so semelhantes aos "Ciclos" do RPG Maker Estrutura repetidora: while Uma das estruturas que mais me agrada, o while, que em portugus pode ser traduzida como "enquanto". Lembram-se do segundo cdigo mostrado no loop? Podemos encurt-lo desta forma:
Cdigo:

var = 1 while var <= 10 print var var += 1 end Podemos ler este cdigo como: "enquanto o valor da varivel for menor ou igual a 10, exiba o valor da varivel e adicione 1 ao seu valor". Percebam como til. Podemos utilizar isso para vrias coisas, vai de acordo com a necessidade. Estrutura repetidora: until O until, em portugus, significa "at que". Percebam como aquele mesmo cdigo seria escrito utilizando a estrutura until:
Cdigo:

var = 1 until var == 11 print var var += 1 end Percebam uma diferena: o nmero que eu utilizei como mximo o 11. Mas por qu? Neste caso, ele romper o repetidor quando for igual, e no caso, aps exibirmos o valor 10, a varivel ganhou valor 11 e o until foi quebrado. Vejam este outro exemplo:
Cdigo:

var = 1 until var > 10 print var var += 1

end Este bloco de cdigo segue a mesma lgica. "Realize a repetio at que o valor da varivel seja maior que 10". Estrutura repetidora: for O for uma estrutura repetidora que se diferencia das outras, pois aqui voc define quantas repeties havero de uma forma mais fcil, e na hora de escrever. O mesmo cdigo, aqui, seria escrito assim:
Cdigo:

for i in 1..10 print i end Com esse cdigo dizemos "repita o cdigo enquanto i estiver de 1 a 10", ou, literalmente, "para cada i de 1 a 10". Com isso, dizemos que o valor inicial de i 1 e o cdigo ser quebrado quando este valor atingir 10. Percebam tambm que o valor do i automaticamente atribudo cada vez que o repetidor iniciado. Utilizamos i como varivel, por este ser o padro, mas podemos fazer vrias mudanas neste cdigo:
Cdigo:

x = 5 y = 15 for z in x..y print z end Percebam a flexibilidade do comando. Ele , inclusive, muito utilizado em arrays. Sim, vejam:
Cdigo:

array = ["1 Valor", "2 Valor", "3 Valor", "4 Valor"] for i in 0..array.length - 1 print array[i] end Aqui utilizei uma propriedade provavelmente desconhecida por vocs, o comando "length" da array. Ele retorna o nmero de valores armazenados por ela - entretanto, ele comea a contar do 1, logo, necessrio reduzir 1 do valor para que fique igual aos indexadores, e possamos exibi-los. Exerccios

Crie um loop que exiba o valor da varivel x adicione 1 ao valor desta mesma varivel "por rodada" e rompa-o quando este valor for igual a 15. Crie um while que exiba o valor da varivel y e adicione 1 ao seu valor "por rodada" at que seu valor seja 10. Crie um for que v desde o valor de y at 20, e exiba o valor da varivel "por rodada".

Resoluo:
Cdigo:

# Loop x = 1 loop do

print "x = " + x.to_s if x == 15 break else x += 1 end end # While y = 1 while y <= 10 print "y = " + y.to_s y += 1 end # For for i in y..15 print "i = " + i.to_s end Percebam que no for o valor inicou em 11. Isto acontece porque no ltimo while, o valor foi exibido, a varivel chegou a 11 e por isso no foi exibida, mas o valor foi conservado. Sumrio

Estrutura Estrutura Estrutura Estrutura

repetidora repetidora repetidora repetidora

loop while until for

Bem, aqui termina a segunda aula sobre controle de fluxo. Espero que ela tenha ficado to boa como as outras (como dizem ^^'). Vou tentar lanar a prxima aula ainda neste ms e, quem sabe, a ltima tambm. At mais, pessoal!

Você também pode gostar