terça-feira, 9 de dezembro de 2008

[OFF] Volta às Aulas

Olá a todos, depois de um mês sem aulas estou de volta. Este último mês foi muito corrido para mim por causa das provas de vestibular que vim fasendo. Mas agora as provas já acabaram, e todos que ainda estudam estão de férias da escola, então é hora de voltar às aulas de RGSS! ;D
Para todos que acompanham as aulas aconselho que releiam as mais recentes caso ainda tenham alguma dúvida ou não se lembrem bem do assunto, caso ainda tenham dúvidas não tenha vergonha de postar aqui perguntando sobre. Nas próximas aulas começaremos a entrar em prática nos scripts, toda a teoria necessária para a criação de seus próprios scripts já foi dada, somente o que folta é de ensinar a usar todo este conhecimento para que vocês possam criar sosinhos os próprios scripts, então aguardem pois já começarei a escrever hoje mesmo a próxima aula, onde ensinarei como usar os métodos em classes e depois disso já poderemos entrar no assunto Windows.

quinta-feira, 13 de novembro de 2008

[Unit-1 | Lição-12] Métodos

Métodos
Métodos são o que fasem as classes funcionarem, sem eles a programação não seria possível. Basicamente os métodos são como comandos que fasem as classes funcionarem, sem eles as classes seriam inúteis, assim como sem as classes os métodos perderiam grande parte de seu "poder". Cada método tem sua função específica, que pode ter um grande e importante papel no seu jogo, assim como pode também ser algo bem simples. Assim como as variáveis, os métodos precisam ser declarados, geralmente se utilizam métodos dentro das classes, mas também podem ser utilizados fora das classes. Métodos declarados dentro das classes pertencem única e exclusivamente àquela classe, se você deseja utilizar este método a partir de outra classe deverá copiar o método e colar nesta outra classe.
Para declarar um método você deve utilizar a palavra 'def', seguida do nome do método que você está criando, e depois do conteúdo do método um 'end' para definir o fim do método. O nome do método deve ser constituído de apenas letras minúsculas e underlines(_).
Exemplo:
def nome_do_método
end

Para chamar um método já declarado, deve-se chamar simplesmente pelo nome do mesmo, no caso do exemplo acima, para chamar o método declarado deveria ser utilizado a simples expressão "nome_do_método". Quando um método é chamado, ele irá executar todos os comandos que estiverem dentrod ele.
Exemplo de uso de um método: (Você copiar o exemplo abaixo para seu editor e testar o jogo para ver o que acontecerá)
def aumentar_variavel
variavel += 20
end

variavel = 10
aumentar_variavel
p variavel # => 30

No exemplo acima, foi executado o comando 'variavel += 20' quando foi chamado o código 'aumentar_variavel', logo, subentende-se que quando um método é chamado todo o código que estava dentro dele fosse para o local onde o método foi chamado. Métodos também podem chamar outros métodos dentro de seu código, mas nunca podem chamar a si mesmos, neste caso ocorreria um erro.
Exemplo:
def aumentar_variavel
variavel += 20
aumentar_mais_ainda
end
def aumentar_mais_ainda
variavel += 30
end

variavel = 10
aumentar_variavel
aumentar_mais_ainda
p variavel # => 90

Se você não entendeu o porquê de 'variavel' ter o valor de 90 no final do código, vou esplicar mais detalhadamente o que aconteceu:(Se entendeu, pode pular esta parte de verde)

Primeiro, foram declarados os métodos 'aumentar_variavel' e 'aumentar_mais_ainda', 'aumentar_variavel' irá aumentar o valor de 'variavel' em 20 e depois irá chamar o método 'aumentar_mais_ainda' que, por sua vez, aumenta em 30 a 'variavel', logo, o método 'aumentar_variável' terá a função de aumentar 'variavel' em 50. Depois, 'variavel' foi declarado como '10'(Se esta linha não existir, haverá um erro ao chamar um dos métodos, pois 'variável' não estará declarada ainda) Então é chamado o método 'aumentar_variavel', que aumenta o valor de 'variavel' em 50, passando seu valor para 60(porque 'variavel' já tinha o valor de 10, e 10 + 50 = 60.. =P). E em seguida é chamado o método 'aumentar_mais_ainda', que aumenta o valor de 'variavel' em 30, passando seu valor para 90.

Substituição de Métodos
Se você tantar declarar um método já declarado, o método anterior será apagado, e o novo ficará no lugar.
Exemplo:
def aumentar_variavel
variavel += 20
aumentar_mais_ainda
end
def aumentar_mais_ainda
variavel += 30
end

def aumentar_variavel
variavel -= 20
end

variavel = 10
aumentar_variavel
aumentar_mais_ainda
p variavel # => 20

Quebra de Métodos/Retorno
Você pode "quebrar" a execução de um método utilizando o comando "return". Quando "return" for executado, nenhum código que vir depois dele num mesmo método será executado.
Exemplo:
def aumentar_variavel
variavel += 20
if variavel == 30
return
end
variavel += 40
end

variavel = 10
aumentar_variavel
p variavel # => 30

No exemplo acima, o comando "return" que está no método 'aumentar_variavel' será executado se o valor de 'variavel' for igual a 30, como 'variavel' foi declarada como 10 e antes da condição o valor é aumentado em 20, a expressão condicional retornará true e assim a condição será executada, então o comando 'return' fará com que a execução do método seja "quebrada" e assim, o comando 'variavel += 40' não será executado. Se você alterar o valor da declaração de 'variavel', a condição retornará true, e assim, o comando 'return' não será executado, e sim o comando 'variavel += 40'.
O comando "return" não serve somente para quebrar a execução do método, mas também servirá para retornar um determinado valor que for utilizado juntamente com ele. Como você já aprendeu sobre retorno na lição sobre condições, retorno é quando o comando é substituido pelo valor de retorno, no caos dos métodos, o comando de chamar o método será substituido pelo valor de retorno
Exemplo:
def vinte return 20 end variavel = vinte p vatiavel # => 20 p vinte # => 20

É claro que, como o método vinte será substituído por '20', eu poderia utilizá-lo de várias formas, como por exemplo esta:
def vinte
return 20
end

variavel = 50 + vinte

Outro exemplo de retorno:
def metodo1
return "Dark"
end

def metodo2
return "Chocobo"
end

var1 = metodo1 + metodo2
var2 = "Dark" + metodo2
var3 = metodo1 + "Chocobo"
var4 = "Dark" + "Chocobo"
var5 = "DarkChocobo"

Todas as 5 variáveis(var1, var2, var3, var4 e var5) terão um mesmo valor em comum, a string "DarkChocobo".

Eviando Valores aos Métodos
Também é possível enviar determinados valores ao chamar os métodos. Alguns métodos necessitam de alguns valores para serem executados corretamente. Para que um o necessite de um valor você deve, ao declará-lo, declarar também variáveis locais dentro de um parênteses, logo após o nome do método(as para isto apenas nomeie as variáveis separando-as por vírgulas).
Exemplos de métodos que necessitam de um ou mais valores:
def metodo1(valor)
end

def metodo2(valor1, valor2, valor3)
end

OBS: Cada método pode necessitar de quantos valores for necessário.
Para chamar um método que precisa de algum valor, você deve determinar este valor logo após chamar o método(separados por um espaço); você pode usar qualquer tipo de valor. Quando um método necessitar de mais de um valor, você deve usar vírgulas para selará-los.
Exemplos:
metodo1 1
metodo1 "string"
metodo1 [1, "array"]
metodo2(1, 2, 3)
metodo2(0, "texto", ["array"])


OBS: Note que em alguns exemplos foi usado parênteses e em outros não, não é obrigatório o uso de parênteses ao enviar os valores aos métodos, porém, usando-os você deixa o seu script mais organizado, por isto é muito comum encontrá-los em exemplos como este.
Quando um valor é enviado para um método desta forma, o método faz com que as variáveis locais que você declarou tomem o valor dos valores enviados ao método.
Exemplo:
def meu_nome(str)
p str + "Chocobo"
end

meu_nome("Dark")

No exemplo acima, a mensagem que será exibida é "DarkChocobo", pois ao chamar o método 'meu_nome' enviando a string "Dark", você fará com que o método 'meu_nome' seja executado considerando que 'str' seja "Dark", e assim 'str + "Chocobo"' será "DarkChocobo".
Outro exemplo de envio de valores aos métodos:
def juntar_arrays(a, b)
return a + b
end

ary1 = [1, 2, 3, 4]
ary2 = [5, 6, 7, 8]
p juntar_arrays(ary1, ary2) # => [1, 2, 3, 4, 5, 6, 7, 8]

Alias
O comando Alias serve para alterar o nome de um método, para usá-lo simplesmente use a palavra 'alias', seguido do novo nome do método, e por último o nome antigo do método.
Exemplo:
def darkchocobo
print "Você chamou o método \"darkchocobo\"!"
end

alias dc darkchocobo

dc # => Você chamou o método "darkchocobo"!

terça-feira, 28 de outubro de 2008

[Unit-1 | Lição-11] Classes

Antes de começar a aula, aqui vai uma dica para seu melhor aprendizado: Quando for testar os exemplos desta aula em diante, abra o seu editor de scripts e digite você mesmo o código, ao invés de apenas copiar e colar, isto ajuda para que você vá se acostumando com a programação. Lembrando que estes exemplos devem ser utilizados num script totalmente em branco, de preferência acima de todos os outros, para que seja executado primeiro.

O que são Classes?

Como foi dito no início das aulas, Ruby é uma linguagem interpretada por objetos, as Classes são estes Objetos. A função das variáveis é alojar determinados valores, qualquer valor que possa ser representado por uma variável é uma classe.

Definido uma Classe
Classes são na verdade Constantes, variáveis fixas com determinados dados em si, portanto cada classe deve ter seu nome começando com uma letra maiúscula. Assim como as variáveis, as classes também devem ser declaradas, para criar ou alterar uma classe é utilizado o comando 'class' seguido do nome da classe e logo depois das alterações feitas naquela classe utiliza-se um 'end' para definir o fim das alterações feitas naquela classe.
Exemplo:
classe Nova
end

Como não existe nenhuma classe chamada Nova, eu estou declarando-a. Note que se for utilizando o método 'p' em 'Nova' antes de sua declaração(desta forma: 'p Nova') correrá um erro, já que a constante 'Nova' ainda não foi declarada, porém, se for utilizado este mesmo comando após a declaração da classe, o programa irá detectar a constante e irá exibir "Nova" na janelinha, pois o que foi enviado ao método nova foi apenas a constante Nova.
Somente com a classe Nova não iremos conseguir muita coisa, vamos criar uma nova variável logo após a declaração da classe nova, chamarei-a de 'classe_nova', mas você pode nomeá-la como bem entender.
class Nova
end
classe_nova = Nova.new

Utilizando o método 'new' eu fiz com que 'classe_nova' se transformasse em um novo objeto da classe Nova, ou uma outra Nova.
OBS1: Métodos serão vistos ainda nesta aula. OBS2: O método 'new'(assim como alguns outros métodos básicos) é provido à todas as classes automaticamente.
Para que fique mais claro o que eu fiz acima vou dar um exemplo:
ary = [2, 4]
str = "texto"

Acima eu criei duas variáveis, cada um como um novo objeto das classes Array e String; ou seja, eu defini as duas novas variáveis como novas classes Array e String sem alterar as constantes. Foi o mesmo que eu fiz em 'classe_nova = Nova.new'. A única diferença é que Array e String são classes padrões do Ruby e por isso podem ser criadas desta forma mais fácil, porém, agora não à diferença alguma entre Array, String e Nova.
Abaixo, mais um exemplo:
ary = Array.new
str = String.new

Acima eu criei uma nova Array e uma nova String, se você utilizar o método 'p' para verificar os valores de 'ary' e 'str' os retornos serão: '[]' e ' "" '; pois serão uma Array e uma String recém criadas, sem nenhum valor nelas, logo, o exemplo acima seria o mesmo que utilizar o seguinte código:
ary = []
str = ""

OBS: Note que, nestes dois exemplos acima, se você utilizar o método 'print' ao envéz de 'p' não será exibido nada, pois 'print' lê os dados da forma como o programa irá exibir no jogo, e um texto vazio(String vazia, "") e um grupo de valores sem nenhum valor(Array vazia, []) não são nada.
Agora que já expliquei a função do método 'new' e a diferença entre a constante e sua utilização, podemos voltar à nossa nova classe, a 'Nova'. Vou citar novamente o exemplo para recuperarmos a concentração no mesmo:
class Nova
end
classe_nova = Nova.new

Se você utilizar o método 'p' em 'classe_nova' após sua declaração irá obter o seguinte resultado: '#'(ou algum semelhante), isto ocorre porque tudo que nós fisemos até agora foi criar uma nova variável com o valor de Nova, porém, a classe Nova está totalmente vazia, por isto o programa lê a classe desta forma.

sexta-feira, 24 de outubro de 2008

[Unit-1 | Lição-10] Estruturas de Repetição

Apesar de na aula passada eu ter citado que iria começar sobre Classes nesta lição, falarei sobre estruturas de repetição, que é um assunto que ainda não foi visto, e na próxima lição falarei sobre as Classes.

As estruturas de repetição são estruturas que irão executar os comandos determinados repetidamente um determinado número de vezes, ou até você determinar o seu término. Existem vários tipos de estruturas de repetição, cada uma é trabalhada de uma forma diferente, existindo assim uma estrutura diferente para ser usada em cada tipo de situação.

Loop
O comando Loop serve para repetir determinados comandos infinitas veses até que seja executado o comando o comando de quebra de loop. Basicamente, funciona igual ao comando Loop dos eventos do RPGMaker. Para iniciar um loop utilize a palavra 'loop' seguido de 'do' e logo depois os comandos do loop e para feichar o loop utilize um 'end', exatamente como no exemplo a seguir:
Exemplo:
loop do
Graphics.update
Input.update
update
break if $scene != self
end

OBS: O exemplo citado acima é um exemplo de loop bem comum encontrado em todas as classes Scene da programação padrão do RMXP e na Scene_Base do RMVX.
Note que o comando 'break' serve para quebrar o loop, caso não exista um 'break', o loop será executado infinitamente e nunca haverá um fim, logo, pode ocasionar um erro ao jogo.

While
A estrutura de repetição While é muito parecida com Loop, basicamente a única diferença é a forma de trabalhar. No caso de Loop você deve utilizar o comando 'break' para quebrar o loop, no caso de while você deve colcoar uma condição logo após a palavra 'while', utilizada para criar a estrutura, caso esta condição retorne true, o loop será executado, caso seja false, a estrutura será quebrada.
Exemplo de While:
while variavel > 0
variavel -= 1
end

No exemplo acima, o comando 'variavel -= 1' será executado repetidamente até que 'variavel' deiche de ter o valor maior que 0. Note que, se variável já for menor ou igual à 0, o comando não será executado nenhuma vez. Note também que o exemplo acima também poderia ser espressado da seguinte forma:
loop do
break if variavel <= 0
variavel -= 1
end

Apesar das duas formas apresentarem um mesmo resultado, a primeira forma(usando while) é bem mais simples de se usar.

Until
Until é utilizada da mesma forma que while, a única diferença é que enquanto while executa o comando quando a condição retorna true, Until só irá executar o comando enquanto a condição retornar false.
Exemplo:
until variavel <=0
variavel -= 1
end

O exemplo acima tem a mesma função que a dos últimos dois exemplos citados.

For
Como você pôde observar, todas as estruturas esplicadas acima têm, basicamente, uma mesma mesma função em comum; isto não ocorre com For. For irá repetir os comandos de sua estrutura para cada valor em uma determinada range ou array.
Exemplo:
for i in [0, 1, 2, 3]
print i
end

O código acima fará com que apareca quatro janelinhas do windows abram uma após a outra mostrando os valores 0, 1, 2 e 3; já que o comando 'print i' será executado quatro veses, para cada uma destas veses o valor da variável 'i' irá mudar de acordo com os valores da array. É obrigatório declarar uma variável logo após o 'for' e antes do 'in', para que esta variável possa ter seu valor alterado a cada repetição da estrutura de acordo com a Array ou Range depois do 'in'.
Exemplo de For com Range:
for variavel in 0...5
print variavel
end

Neste caso os valores exibidos serão: 0, 1, 2, 3 e 4 já que ranges com tres pontos(...) não cosideram o último(veja a lição 5, "Os possíveis valores das variáveis", para mais detalhes sobre Range)

Break
Eu falei brevemente sobre Break quando espliquei sobre Loop nesta aula, não há muito o que diser sobre este comando. Basicamente, 'break' serve para quebrar as estruturas de repetição, após este comando, o programa pula direto para a linha onde está o fim da estrutura(onde está o 'end') e continua a executar os comandos das próximas linhas normalmente. Break pode ser utilizado normalmente em qualquer uma das quatro tipos de estruturas condicionais esplicadas acima.
Exemplo:
for i in 0...5
break if i == 3
print i
end

No exemplo acima, serão mostrados somente os valores 0, 1 e 2; pois quando i for 3, a estrutura será quebrada e o comando 'print i' não será executado.


Next
Ao contrário do comando 'break', Next irá parar com a execução dos comandos da estrutura e irá recomeçar a executar os comandos a partir do começo da estrutura. Next também pode ser utilizado normalmente em qualquer tipo de estrutura de repetição.
Exemplo:
for i in 0...5
next if i == 3
print i
end

No exemplo acima serão mostrados os valores 0, 1, 2, 4 e 5; porque quando i for 3, next será executado e assim o comando 'print i' não será executado quando i for 3.

segunda-feira, 20 de outubro de 2008

[Quiz] Valores True e False

1) Levando em consideração os dados abaixo, ascinale a alternativa em que a expressão
retorna true.
Dados:
arg1 = 2
arg2 = 10
arg3 = 25
arg4 = -5

a) arg2 / arg1 * arg4 == arg3
b) arg3 * -1 / arg4 * arg1 <= arg2
c) arg4 * arg1 == arg2
d) arg1 * arg3 == arg2 * arg5


2) Tento em mente que a expressão '1 == 1' representra um true, é possível afirmar que
'1 == 1 and 2 == 2' seja o mesmo que 'true and true', logo, o retorno será um 'true'. Tendo
em mente o funcionamento deste esquema, determine a alternativa em que o retorno será
'true'.

a) false and true or false
b) true and false and true
c) (true or false) and false
d) (not false) or (false or true)


3) Determine o retorno final de cada uma das expressões abaixo.(Determinar se o retorno
será 'true' ou 'false')

( ) 5 > 1 or 1 < 5
( ) not true and false
( ) 2 + 2 * 2 * 2 != 3 * 3 + 7
( ) (true or false) and (not false)



O gabarito para este questionário pode ser encontrado aqui.

sábado, 18 de outubro de 2008

[Unit-1 | Lição-9] Outros Tipos de Condições

Antes de mais nada, pesso desculpas pela demora para postar esta aula, eu estava com alguns problemas para postá-la porque o blogspot estava confundindo os códigos de ruby ques estão nos exemplos da aula com os códigos de HTML do post então tive que tirar os exemplos do post e colocar num arquivo de texto. Por isto em alguns exemplos desta aula estarão um link para o exemplo ao invéz do exemplo aqui mesmo.

Como já foi dito anteriormente, existem vários tipos de condicionais além da forma tradicional explicada na lição anterior. Estas formas alternativas são utilizadas com o mesmo conceito das expressões já explicadas(com os valores true e false), porém com algumas alterações.
Existem duas formas de resumir as condições 'if' e 'unless', uma delas é definindo a condição de trás para frente, esta, só pode ser usada quando o resultado da condição for somente um comando.
Exemplo de condição if resumida:
Clique aqui para visualisar este exemplo.

Neste caso, var será igual a 0 se var for menor que 0. Note que desta forma não é necessário o 'end' no final da expressão. Nesta mesma forma, também podem ser utilizados as palavras 'and' e 'or' para melhor definir a condição, assim como os parênteses.

Uma outra forma de se utilizar a condição 'if' é utilizar a palavra 'then' ao invés da "quebra de linha"(enter) para definir o final da condição, e logo depois de 'then' já colocar o comando a ser realizado.
Exemplo:
Clique aqui para visualisar este exemplo.

Esta é apenas uma outra forma de se escrever a condição if, portanto, também podem ser utilizados 'and', 'or' e 'else'.('else' é esplicado logo abaixo)
Exemplo:
Clique aqui para visualisar este exemplo.

Else
Else é uma palavra utilizada para definir o que acontecerá cado a condição especificada não seja concluída.(Tem exatamente a mesma função que a função "adicionar exceção" do comando "condição" dos eventos do RPGMaker.)
Exemplos:
Clique aqui para visualisar os exemplos.

No exemplo acima âmbas as condições tem a mesma função, que é de definir o valor de 'var' como 0(zero) se var for menor que 5 e definir var como 10 se var não for menor que 5.

Exceções Condicionais
Da mesma forma que se pode usar exceções('else') nas condições 'if', também se pode utilizar as exceções condicionais(representadas pela palavra 'elsif') para definir uma condição que será verificada somente se a condição principal não for cumprida. Para criar uma exceção condicional use 'elsif' no final da condição da mesma forma como utiliza 'else'. Logo após 'elsif' é necessário que se defina uma condição, da mesma forma que se coloca uma condição após 'if'.
Exemplo:
Clique aqui para visualisar este exemplo.

No exemplo acima, caso var seja menor que 0 var passará a ser 0, se var for maior que 10, var passará a ser 10.
Uma mesma condição pode conter quantas 'elsif' for necessário, ou seja, não há um limite de 'elsif's a serem colocados numa condição 'if'.
Exemplo:
if var == 2
var = 4
elsif var == 3
var = 9
elsif var == 4
var = 16
elsif var == 5
var = 25
end

Note que 'elsif' é utilizado da mesma forma que 'if', portante o exemplo acima poderia ser resumido ao código abaixo:
if var == 2 then var = 4
elsif var == 3 then var = 9
elsif var == 4 then var = 16
elsif var == 5 then var = 25
end

Uma mesma condição 'if' também pode conter 'elsif' e 'else' ao mesmo tempo.
Exemplo:
if var == 2 then var = 4
elsif var == 3 then var = 9
elsif var == 4 then var = 16
elsif var == 5 then var = 25
else var = 0 end

Condições Rápidas
Existe ainda mais uma forma de se criar condições, são as "condições rápidas". Com as condições rápidas nós podemos criar condições simples com uma condição, um comando caso a condição seja cumprida e um comando caso a condição não seja cumprida(uma exceção).
Para criar uma condição rápida basta definir uma condição, logo após ela se coloca uma interrogação, um comando caso a condição seja cumprida, dois pontos(:), e o comando caso a condição não seja cumprida, como mostra o esquema abaixo:
[condição] ? [comando] : [comando]

Exemplo de condição rápida:
var == true ? var = false : var = true

É bom lembrar que, como o ruby ignora os espaços em branco, sempre que há necessidade de um novo valor você pode usar uma quebra de linha(enter) para facilitar seu compreendimento:
variável == true ? # Se variável for true...
variável = false : # Ela passa a ser false,
variável = true # Se não, ela passa a ser true

OBS: Note que, diferente das outras condições, nas condições rápidas sempre será obrigatório o uso de exceções.

Case
Case é uma condição bem diferente das outras condições, vistas acima. Em case é verificado se um determinado valor é igual a um dos valores especificados. Case serve, basicamente para definir um comando para cada tipo de valor diferente que uma variável tomar, assim simplificando uma estrutura condicional que se utilizando 'if' daria muito mais trabalho de se faser.
Para usar case utilize a palavra 'case' e logo depois o valor a ser verificado, abaixo coloque a palavra 'when' seguida de um valor, se o valor após 'case' bater com o valor após o 'when', a condição é cumprida e o código é realizado. Você pode utilizar quantas vezes for necessário a palavra 'when'.
Exemplo de case:
case variavel
when 0
print "variavel é 0"
when 1
print "variavel é 1"
when 2
print "variavel é 2"
when 3
print "variavel é 3"
end

Note que se variável não for nenhum dos valores especificados nos 'when's nenhuma das condições será cumprida, porém, em case você também pode utilizar 'else'.
Exemplo de case com 'else':
case variavel
when 0
print "variavel é 0"
when 1
print "variavel é 1"
when 2
print "variavel é 2"
when 3
print "variavel é 3"
else
print "variavel não é 0 nem 1 nem 2 nem 3"
end

Você pode definir mais de um valor quando coloca os valores em 'when', para isso utilize uma vírgula para separar cada valor.
Exemplo:
case variavel
when 0, 1, 2, 3
print "variavel é 0, 1, 2 ou 3"
when 4, 5, 6, 7, 8, 9, 10
print "variavel é 4, 5, 6, 7, 8, 9 ou 10"
else
print "variavel não é nenhum número entre 0 e 10"
end

Lembre-se também que, como case é um tipo de condição, você também pode utilizar outros valores além de números.
Exemplo:
case suco
when "azedo"
print "O suco está estragado >.<"
when "aguádo"
print "O suco está sem açucar >.<"
else
print "O suco está uma delícia ^.^"
end

Você também pode utilizar uam range para varificar um valor numérico entre os valores da range.
Exemplo:
case preço_do_biscoito
when 0 ... 2
print "Que biscoito barato =)"
when 3 ... 6
print "O biscoito está num preço normal =|"
when 7 ... 10
print "O biscoito está caro demais =("
when 11 ... 1_000_000
print "Biscoito de ouro! lol"
end
Bem, já chega de falar sobre case né?! xP
Isso é tudo por hoje, preparei um Quiz bem legal sobre esse assunto para postar amanhã, e depois começarei a falar sobre classes. ^^

quarta-feira, 15 de outubro de 2008

[Unit-1 | Lição-8.1] Estruturas Condicionais: Parte 2

Relendo a Lição 8 para escrever a lição 9 persebi que esqueci de falar sobre um assunto: not.

Not
Assim como 'and' e 'or', também existe a palavra 'not', que irá alterar o valor true ou false que estiver logo após ele.
Alguns exemplos com 'not':
variavel1 = not true # => variavel1 é false
variavel2 = not false # => variavel2 é true
variavel3 = not 2 > 1 # => variavel3 é false
variavel4 = not (true or false) # => variavel4 é false
variavel5 = not (true and false) # => variavel5 é true

segunda-feira, 13 de outubro de 2008

[OFF] Parceiros

Olá amigos, velho aqui hoje para falar dos sites parceiros deste blog. =)


Blog do Jão
Jão é um grande amigo meu que começou a mecher com Ruby mais ou menos na mesma época que eu e des de lá viemos aprendendo juntos, ele tabém tem um blog para ensinar RGSS, porém, ele pretende abordar mais assuntos específicos, ensinando a cada tópico expecíficamente um assunto, isso é excelente para aqueles que têm dúvidas expecíficamente em um determinado assunto.
Link: http://JaoMaker.blogspot.com

Comunidade RPGMaker XP
Esta é simplesmente a maior comunidade de RPGMaker do Orkut!! Comunidade dedicada aos fãs do RPG Maker XP. Têm uma imênsa comunidade, uma turma muito gente fina que já me ajudaram muito na epoca que eu estava começando com RPGMaker. Lá, você também pode encontrar um conteúdo muito grande em relação a tutoriais diversos. Em fim, recomento ela a todos os usuários do RPGMaker ^^ (inclusive foi atravéz dela que conheci meu grande amigo Jão^^)
Link: http://www.orkut.com.br/Main#Community.aspx?cmm=1227187

ReinoRPG
O ReinoRPG é uma das maiores comunidades de RPGMaker do Brasil, têm um grande acervo de resources e muitos utilitários para downloads, tudo para que você possa customizar seu jogo ao máximo, e deixá-lo da maneira que deseja, seja ele de RPGMaker XP,RPGMaker VX, RPGMaker 2k3 ou 2k. Existe também um gigantesco fórum onde os membros podem expor seus projetos,discutir sobre outras ferramentas de criação, compartilhar conhecimentos,fazer novas amizades entre tantas outras opções que existem nos outros boards do fórum.
Link: http://ReinoRPG.com

RMZine
A RMZine pretende ser sua revista em forma de portal e para isto se concretizar trabalharemos duro melhorando tanto seu conteúdo como o portal de forma a agradar a seus leitores.
"Nosso objetivo é mostrar um conteúdo completo sobre RPG Maker, não apenas se limitando a ele, mas sim a você maker, trazendo uma grande gama de informações e cultura, que possibilite trabalhar com mais criatividade e inovação em seus projetos." - Night Walker
Link: http://RMZine.reinorpg.com


É isso galera, são todos excelentes sites, espero que gostem assim como gostam deste :D

terça-feira, 7 de outubro de 2008

[Unit-1 | Lição-8] Estruturas Condicionais

Como foi dito na lição anterior existem 4 formas de se criar condições, qualquer uma delas poderá ser usada para qualquer situação, porém em alguns casos será muito mais simples optar por um dos tipos de condições a um outro tipo.

Vamos começar pela forma mais simples:
If
If é a estrutura condicional mais utilizada no RGSS por ser simples e, ao mesmo tempo, satisfaser a necessidade de criar condições mais elaboradas. Para utilizá-la, basta escrever a palavra 'if', seguida de uma expressão condicional(explicado na lição anterior); e depois utilizar a palavra 'end' para definir o fim da condição.
Exemplo:
if variável == 5
print "sim"
end

Neste caso, será exibisdo um "sim" na tela se o valor de 'variável' for 5,
caso contrário 'print "sim"' será ignorado.
É claro que qualquer um dos
outros operadores poderiams er utilizados no lugar de '=='.

Existem algums métodos utilizados para tornar a condição mais específica.
Para isto são utilizados as palavras 'and
' e 'or'.

As palavras 'and' e 'or' significam "e" e "ou", ela são utilizadas separando
duas expressões condicionais para definir se alguma delas está verdadeira
ou se as duas estão.

Exemplo:
if var1 == 5 and var2 == 10
print "sim"
end

No exemplo acima, só aparecerá a mensagem "sim" caso a variável 'car1'
seja igual à 5 e a variável 'var2' seja igual à 10. Note que nada lhe
impede de utilizar uma mesma variável numa mesma condição.

if var > 0 and var < 6
print "sim"
end

Já no exemplo acima, a mensagem só aparecerá caso a variável 'var'
seja maior que 0 e menor que 6, ou seja, um dos valores: 1, 2, 3, 4 ou 5.
A palavra 'or'(ou) é utilizada da mesma forma que 'and', porém expressa
a condição de uma das duas condições ser verdadeira, ao contrário de
'and' que expressa a condição de as duas expressões serem verdadeiras.

Exemplo:
if var1 == 5 or var2 == 10
print "sim"
end

Neste caso, para que a mensagem seja exibida, não é necessário que
'var2' seja 10 se 'var1' for 5, e vice-versa. Voçê também pode utilizar
'or' e 'and' numa mesma condição quantas veses quiser.
Alguns exemplos simples:

if var1 == 0 and var2 == 5 and var3 == 10 and var4 == 20

if var1 == 0 or var2 == 5 or var3 == 10 or var4 == 20

if var1 == 0 and var2 == 5 or var3 == 10 and var4 == 20

No último dos três exemplos acima foi utilizado tanto 'or' quanto 'and',
neste caso, 'and' terá prioridade, logo, será verificado primeiro as
expressões:
"
var1 == 0 and var2 == 5" e "var3 == 10 and var4 == 20",
e somente depois será verificado se uma destas duas expressões for
verdadeira ocorrerá a condição.
É um tanto complicado quando se está usando tantas expressões
condicionais numa só condição, mas casos como este não são tão
comums de ocorrer. Você também pode utilizar parênteses para melhor
definir a condição da forma que quiser.
Exemplo:
if var1 == 0 and (var2 == 5 or var3 == 10)
Neste caso, a expressão será verdadeira caso 'var1' seja 0 e 'var2' for 5
ou 'var3' for 10. Cuidado para não confundir as expressões em casos
como este.
Note que se os parênteses não existicem no exemplo acima, a condição
passaria a ser de ('var1' ser 0 e 'var2' ser 5) ou 'var3' ser 10.
OBS1: Nos exemplos acima eu só utilizei números nas condições,
mas também podem ser utilizados outros tipos de valores, exemplo:

if var1 == [0, 1, 2, 3] and var1 == "=)"
end

OBS2: Vale a pena lembrar que o operador '==' verifica se um valor é
exatamente igual à outro, logo, pequenos detlahes fasem toda a diferença.

OBS3: Os operadores '>', '<', '>=' e '<=' verificam se um número é maior/menor(ou igual) a um outro valor, logo não podem ser utilizados com valores que não sejam números, exemplo:
if [0, 1, 2, 3] > "=)"
end


No exemplo acima ocorrerá um erro, pois nem Arrays nem Strings podem
ser usadas com operadores númericos.


Unless
Não há muito o que falar de unless, já que a condição unless é utilizada
exatamente igual à condição 'if', porém, a condição só será cumprida se
o retorno for falso.
Exemplo:
unless 2 == 2
print "sim"
end

No caso acima será verificado se 2 é igual a 2, logo haverá o retorno
verdadeio, porém, não será exibida a mensagem "sim", pois em unless
é verificado se o retorno é 'false', ao contrário de 'if' que verifica se o
retorno é 'true'.
OBS: Já que unless é o contrário de if, os dois exemplos de condições
abaixo seriam cumpridos:
# se variável for igual a outra veriável

if variável == outra_variável

# se a variável não for diferente da outra variável

unless variável != outra_variável

quarta-feira, 1 de outubro de 2008

[Unit-1 | Lição-7] Criando condições

Antes de mais nada quero pedir desculpas pelo tempo que tomei para escrever a próxima lição, eu passei este fim de semana fora e não pude escrever as aulas.

Introdução ao assunto:

As condições servem para criar caminhos diferentes para a programação, de acordo com determiados valores, assim o programa poderá tomar vários caminhos diferentes. As condições do Ruby são utilizadas da mesma forma e com mesmo propósito que as condições dos eventos do RGPMaker, porém com mais especificações e possibilidades. Em Ruby, existem 4 formas diferentes de criar condições.

Os pseudo-valores true e false:
As condições, para serem utilizadas dependerão sempre dos valores true e false, eles são os valores que determinarão se a condição será cumprida ou não. Existem algumas situações em Ruby em que ocorre uma substituição de valores, como por exemplo uma situação da lição passada:
teste = variável + 2

No exemplo acima, 'variável' será substituída pelo seu valor, para que a equação possa ter um sentido e assim o programa irá resolver a conta matemática corretamente. O mesmo ocorrerá com os valores true e false para que ocorram as condições, os valores true e false substituição qualquer expressões que representem condições. Esta substituição é o que chamamos de "Retorno".
Exemplo:
var1 == var2

No exemplo acima é questionado se a variável 'var1' é igual a outra variável 'var2' atravéz do operador "=="(será esplicado logo mais); se var1 for igual à var2, a expressão será substituída por um true, ou seja, retornará true, caso contrário, retornará false.
Vamos à um exemplo prático desta substituição, crie um novo projeto e em seu editor de scripts crie um novo script acima de todos os outros, então coloque o código:
var1 = 1
var2 = 1
print var1 == var2

No código acima é declarado as variáveis 'var1' e 'var2' âmbas como 1, e logo depois é questionado se elas são iguais, como elas são, retornou true. Teste outros valores no lugar do 1 e veja os resultados.
OBS1: Não confunda "=" com "==", "=" define um valor para a variável, e "==" questionará se os valores antes e depois dele são iguais.
OBS2: Note que "==" compara os valores antes e depois dele, logo, ocorrerá um erro se você nao definir um destes dois valores, o mesmo ocorrerá se você não definir um dos valores mesmo utilizando operadores diferentes.

Operadores
Acima eu utilizei apenas o operador "==" para dar exemplos de retorno de true e false, mas existem vários outros tipos de operadores para serem utilizados como condições. Abaixo segue a lista dos principais operadores e suas funções:
== # Igual à
!= # Diferente de
> # Maior que
< # Menor que
>= # Maior ou igual que
<= # Menor ou igual que