Olá, este script começou a ser escrito dia 17/04/2011, é um ótimo jeito de aprender RGSS. É explicado no script como fazer as mais diversas coisas, e enquanto lê, você pode ir testando no seu jogo, pelo fato de ser lido pelo RPG Maker.
Aos iniciantes: Partes em verde são apenas comentários, para lhe ajudar a entender o código.
- Ao todo ja ganhei (mais de) 50 Reps com este tópico, obrigado.
- Já foram escritas 10 aulas, utilizando 1137 linhas de código.
- O código já foi revisado 3 vezes, mas caso encontrem qualquer erro meu, me avisem.
Aula 1: Classe, Método, Variável, End
Aula 2: Condições, Excessões, Switches
Aula 3: Janelas, Comandos de Janelas
Aula 4: Ciclos (loop, for)
Aula 5: Revisão
Aula 6: Cenas (Começamos a criar um menu)
Aula 7: Cenas (Terminamos de criar o menu)
Aula 8: Arrays
Aula 9: Strings
Aula 10: Prova
#==================================================================# O melhor jeito de aprender RGSS | Por: Mendesx#------------------------------------------------------------------# Este script contém comentários em todas as partes, para auxiliar# o maker iniciante a entender a lógica dos scripts.#==================================================================# 17\4\11 | Versão 1.0# 26\4\11 | Versão 2.0# 29\4\11 | Versão 3.0# 02/05/11 | Versão 4.0# 05/07/11 | Versão 5.0# 26/07/11 | Versão 6.0# 29/07/11 | Versão 7.0# 04/08/11 | Versão 8.0# 07/08/11 | Versão 9.0# 30/08/11 | Versão 10.0#-----------------------------------------------------------------# OBSERVAÇÕES# No dia em que a parte 6 foi escrita (26/07/11) o código das # outras partes também foi revisado.# PARTE 1 # 1) Classe# A classe é o nome do script. Serve para que scripts diferentes# tenham nomes diferentes, e não fique tudo misturado.# Usamos o comando class para criar uma nova classe.# Você pode botar o nome que preferir, desde que começe com letras # maísculas, isso por que classes são constantes, por exemplo:# Classe # Correto# classe # IncorretoclassMinha_Classe# Início de uma nova classe# 2) Método # O método é uma subdivisão da classe, e a maioria dos comandos# são colocados dentro dele. Métodos geralmente se chamam:# initialize, refresh, update, main, dispose.# Como estamos começando o nosso script, vamos usar um método # chamado initialize. Lembre-se que um método pode ter qualquer # nome, mas as vezes devemos usar nomes padrão, para nos # organizarmos melhor, como é o caso agora.# Métodos também podem ser escritos fora de classes, os chamados# método globais, e para "rodá-los" é só escrever o nome deles. def initialize # Crio um novo método # 3) Variáveis# Variáveis você ja deve saber o que é. Caso não saiba, eu # recomendo que estude isso, mas são basicamente palavras que# representam valores. Agora vai aprender que em RGSS existem # vários tipos de variáveis. Sendo assim: @nome=1# Variável local, só pode ser usada nesta classe. $nome =4# Variável global, accessível de qualquer script # Assim, dizemos que o texto @nome é igual ao valor 1. # Sempre preceda de @ variáveis locais, e de $ as globais. # Existem outros tipos, mas estes os são mais usados.# Lembre-se:# @ = local# $ = global# Variáveis podem ter qualquer nome, inclusive com números: @var123=515# 4) end# Este comando é muito usado. Sempre que você declara uma coisa,# um método, uma condição, um ciclo... prescisa dizer ao RGSS # aonde esta coisa termina.# Para usar é so escrever 'end' sem as aspas. end# Aqui nós terminamos o método initialize# Ainda falta outro 'end', que é o da classe. mas esse nós# botaremos depois, por que ainda tem mais coisa para botar nesta# classe. Mas se você quiser, pode fazer isso, é só botar um end# a mais.# Obs: # Excesso ou falta de "end" pode ser a causa de um "Syntax Error"#================================================================# PARTE 2# Antes de tudo, criaremos um novo método, chamado 'update' def update # 1) Condições# Condições você já sabe o que é, pois é muito utilizado em# eventos, e não é o contrário no caso dos scripts. Se não sabe,# é uma verificação se algo é verdadeiro (ou falso, as vezes),# caso seja, executa uma ação.# Por RGSS, quando quer criar uma condição, use o comando "if"# sem as aspas, e terminamos a condição com um "end".# A sintaxe, ou seja, o jeito que agente escreve uma condição, # é o seguinte: # if termos # Condição# o que acontece ## else # Caso contrário# o que acontece ## end # Terminamos com end.# "Termos" é a condição em si. Como por exemplo, ter 50 moedas,# uma variável ter um valor, ter tais itens, etc...# Bom, nossa primeira condição será de que as variáveis que# criamos antes (@nome e $nome) tenham certos valores.# Como faremos isso? É simples! if@nome==1# Condição # Explicando as linhas:# if # Nova condição# @nome # Variável sendo analizada (Termo)# == # verifica se é igual a..# 1 # Valor verificado# Além de verificar se é igual, podemos verificar se é:# > Maior que# < Menor que# >= Maior ou igual que# <= Menor ou igual que# != Diferente de# =~ Aproximadamente (Este não será usado agora)# Agora, podemos botar para o script fazer alguma coisa se a # variável @nome for 1. Para isso, é só adicionar mais comandos # dentro da estrutura "if".# Como já criamos o if alí em cima, é só escrever o que acontece. p @nome.to_s # p # Método (Global) para chamar uma janela de pop-up# @nome # Variável que vai ser escrita na janela# .to_s # Método utilizado para transformar variáveis em textos.# A linha 139 faz uma caixa de mensangens, em que aparece o # valor da var @nome, mas só se ela for igual a 1, se não, # é rodada a excessão (Caso essa exista).# Agora, vamos criar uma excessão. Excessão é o que ocorrerá # caso a condição não seja cumprida, neste caso, se a @nome for # diferente de 1. # Para criar uma excessão, utiliazmos o comando 'else' else# Excessão (Caso a condição não seja cumprida) # E depois, o que acontecerá. @nome+=1 # Explicando:# Se @nome for igual a 1, é mostrado uma janela com o valor.# Se @nome for diferente de 1, @nome ganha 1 em seu valor.# Finalmente, fechamos com um "end" end# Fim# Acima eu utilizei o "+=" para adicionar um valor a @nome, mas# também posso usar:# -= # Subtrair# *= # Multiplicar# = # Substituir (Mudar o valor)# /= # Dividir# Ainda existem outros comandos, os acima são os mais básicos.# Outras Condições:# É possível usar o 'if not', que ao contrário do 'if', busca # valores falsos. ifnot@nome==1# Se @nome NÃO for igual a 1. end # Também é possível fazer condições de apenas uma linha. @nome*=2if@nome==1 # (@nome é multiplicado por dois caso seja igual a 1) # Nas condições de uma linha não é presciso o end. # Ainda há mais um tipo de condição, que também usa uma linha,# porém, permite excessões. Essa pode parecer complicada, mas é # facil. @nome==1?@nome=2:@nome+=1# Condição # Explicando: # @nome # Termo # == 1 ? # Condição (É igual a 1 ?) # @nome = 2 # "@nome" passa a valer 2. # : # Caso contrário # @nome += 1 # Adicionar 1 a "@nome"# Em condições com ponto de interrogação '?', é obrigatório criar# uma excessão. Caso não queira usar a excessão, use: @nome==1?@nome=2:nil # Aquele "nil", na excessão, não vai fazer nada. # 2) Switches# Se vamos aprender condições e variáveis, teremos que saber # switches. Primeiro, se você não sabia, vou lhe fazer uma # revelação: Switches SÃO Variáveis!!## Peraí! Como assim?# Sim, elas são variáveis, porém, especiais. Switches, mais# conhecidas como variáveis booleanas, pois só podem ter dois # valores.# 1º = falso, off, sim# 2º = verdadeiro, on, não# Ou seja, uma Switch só pode ser verdadeira ou falsa.# Por RGSS, acessamos uma switch usando o comando:# $game_switches[id]# Sendo 'id' o Id da switch.# Lembre-se que em rgss:# Se a switch está ligada, seu valor é "true"# Se estiver desligada, seu valor é "false" (Sem aspas)# Então, para "ligar" uma switch, use: $game_switches[1]=true # Sendo que aquele '1' é o Id da switch# Para "desligar" uma swicht, substitua 'true' por 'false' $game_switches[2]=false # Assim "desligamos" a swicht Nº 2 # Depois, finalmente fechamos esta classe com um end, pois # começaremos outra classe na próxima parte, que será mais # difícil. Ah, antes disso, temos que fechar o método update. end# Fim (do método update)end# Fim (da classe)#================================================================#================================================================# PARTE 3# 1) Janelas## Hoje estudaremos algo um pouco mais avançado, mas que é a base# para qualquer scripter. As janelas são blocos que contém # informação, exemplos são as janelas do menu, a janela de # status, etc..# Para chamar a janela criada nesta aula, crie um evento com# chamar script e ponha:# @window = Window_Minha.new# Só para lembrar, por onde começa? Ah, sim, pela classe:classWindow_Minha<Window_Base # Mas pera aí.. tem algo errado: o que é esse "Window_Base" ?# Window_Base é a classe "pai" de todas as janelas do RMXP. # Procure aqui no editor de scripts por esta classe...# Quando, numa classe, usamos um "<", dizemos que a classe à# esquerda (Window_Minha) é filha da classe à direita, ou seja,# herda TODAS as características da classe pai.# O principal uso disso é o comando "super", que vamos aprender,# e a possibilidade se rodar métodos da classe pai pela classe# filha.# Se você não entendeu muito bem, pode me contatar...# Só lembre-se disso:# class # Nova classe# Window_Minha # Nome# < # "Filha" de# Window_Base # Classe pai.# Sem mais explicações, crie o método de início. def initialize # Em uma janela, sempre use o comando "super" para criar # o gráfico.# x, y, larg, altu super(0,0,300,100) # O que o comando faz? # O super vai rodar o método da classe pai (Window_Base) que # tem o nome igual a esse, ou seja, o comando vai rodar o # método "initialize" da superclasse. # Agora, criaremos o Bitmap, outra parte gráfica, que não # será muito estudada por enquanto. # É fácil, é só copiar a linha abaixo no seu script. self.contents =Bitmap.new(width -32, height -32) # o Bitmap é o lugar onde são desenhados textos e imagens da # janela. # Em RGSS, podemos chamar um novo método (def) se escrevermos # o nome dele. # Para quem é eventer, isso seria meio que uma "label" # Vamos chamar um método chamado refresh. refresh # Terminamos o método initialize end # Agora começamos o método refresh, que chamamos antes. # Este é o nome padrão para o desenho de textos e imagens # em uma janela. def refresh # Prescisamos "limpar" a janela sempre que formos escrever # algo, para não correr o risco de escrever uma coisa sobre # a outra. Isso também vale para imagens. # Para isso, use o comando abaixo, que limpa todas os textos e # imagens da janela. self.contents.clear # Obs: # Lembre-se que self.contents é o nosso Bitmap (Linha 299) # e "clear" é um método da classe Bitmap, que a "limpa". # Para escrever um texto na janela, use o comando abaixo. # (x, y, larg, alt, texto, alinhamento) self.contents.draw_text(0,0,256,32,"Meu 1º texto!",0) # Obs: # O draw_text é outro método da classe. # O alinhamento é opcional, pode ser colocado ou não. # 0 = Texto à esquerda (Padrão) # 1 = Centralizado # 2 = Texto à direita # Agora terminamos o método e a classe. endend# 2) Comandos de uma janela# Em uma janela, podemos fazer várias coisas. Escrever textos, # imagens, variáveis, etc... abaixo vai alguns comandos, alguns# outros você pode procurar na Window_Base# Lembre-se que todos estes comandos são métodos da classe Bitmap.# Para escrever um texto comum:# self.contents.draw_text(x, y, larg, alt, "texto", alinhamento)# Para escrever uma variável: (Sendo @nome uma variável qualquer)# self.contents.draw_text(x, y, larg, alt, @nome.to_s)# Para escrever o nome de um item:# self.contents.draw_text(x, y, larg, alt, $data_items[id].name.to_s)# Para escrever o Hp do herói, por exemplo:# self.contents.draw_text(x, y, larg, alt, $game_actors[1].hp.to_s)# Para mudar o tamanho do texto:# self.contents.font.size = tamanho (Um número inteiro)# Para mudar a fonte do texto:# self.contents.font.name = "nome" (Uma fonte do seu computador)# Também existem outros comandos, e outros jeitos de fazê-los, # mas isso vai depender de você. Na próxima aula talvez nós# aprofundemos o estudo destes comandos.# Obs:# Para isso, um Bitmap tem que ter sido criado, pois estes # comandos fazem parte da classe Bitmap, como já mencionei.#================================================================# PARTE 4classMendesx def initialize # 1) Ciclos# Nas próximas aulas, aprenderemos o que são e como fazer CENAS,# Mas para isso, vamos ter que saber de cor algumas coisas.# Ciclos são estruturas que ficam se repetindo até você dizer que# parem. Existem vários tipos, estudaremos dois.# a) loop# b) for# 1.a)loop # O loop é uma estrutura simples, e costumamos usar só 3 comandos.# loop do # Inicia o loop # break # Para de executar o loop# end # Fim do loop# Outros loops, como while, each e times serão estudados depois.# Então, vamos fazer um loop loop do # Somaremos 1 à variável de Id 1 $game_variables[1]+=1 # Ficaremos fazendo isso infinitamente, a não ser que # A variável tenha valor igual a 100 if $game_variables[1]==100# Condição (Variavel == 100) break # Paramos o loop end # Fim da condição # Fim do loop end # Obs: # $game_variables[id] # São as variáveis dos eventos. # Então, fizemos um ciclo que aumenta a variável 1, até ela # chegar em 100, é a mesma coisa que escrever... $game_variables[1]+=1 $game_variables[1]+=1 $game_variables[1]+=1 # ...100 Vezes. Ou seja, ocupa muito espaço, é mais prático # usar um loop. # Claro que você também poderia fazer assim: $game_variables[1]+=100 # 1.b) for# A estrutura for é um pouco mais complicada, mas é mais útil.# Preste atenção nesta parte: for i in1..100 # for # Começamos o ciclo # i # Variavel usada. (Veremos depois) # in # Parte da sintaxe # 1.. # Valor inicial de i # 100 # Valor final de i # A estrutura for leva uma variável, neste caso, chamada "i". # (A variável pode ter qualquer nome). # O For é um ciclo, e, no caso acima, vai aumentar a variável # i em 1 cada vez que é chamado. # O valor inicial (1) é o valor inicial de i. # O valor final (100) é o valor final de i, quando i tiver # este valor, o for deixará de ser executado automaticamente. # Agora, o que aconteçe? $game_variables[2]+=1 # Somamos 1 á variável de Id 2 # Terminamos o for end # Ou seja, a variável 2 vai ganhar 1 de valor até que "i" seja # igual a 100. Quando "i" for igual a 100, ela para. # Podemos fazer um jeito bem mais legal, assim: for i in1..4 # i começa em 1, termina em 4 $game_variables[i]+=1 # Assim, a variável que tiver o id igual a i, vai ganhar um. # Por exemplo, se i for igual a 3, a variável de id 3 irá # ganhar 1 de valor. # Se i for igual a 4, a variável de id 4 ganhará 1. # Isso tudo porque o id da variável, que está entre [], é i. # Fim do for end # Seria o mesmo que a gente fazer isso: $game_varaibles[1]+=1 $game_varaibles[2]+=1 $game_varaibles[3]+=1 $game_varaibles[4]+=1 # Obs: # É possível fazer a variável assumir valores que você quer, # exemplo: forvarin[0,4,1,3] # A variável "var" vai valer 0, depois 4, 1 e 3. # Quando chegar em três, o ciclo termina. end # Fim do metodo e classe. endend#----------------------------------------------------------------# Parte 5# Hoje teremos uma aula mais teórica, será meio que uma revisão # de tudo que já vimos nas outras quatro aulas. Isso tudo para# podermos começar a estudar a cenas, muito mais complicadas.# Bom, ao chegar aqui, você tem que saber como criar uma classeclassRelembrando # E um método... def initialize # Vamos revisar o uso de variáveis. Vamos criar algumas: @variavel_um =102 @variavel_dois=214 # Vamos mudar o valor de uma variável do jogo, o id dela será # definido por outra, variável, ou seja: @id=3# Id da variável (Pode modificar à vontade) $game_variables[@id]==20 # Vamos trabalhar com switches. Mudaremos o valor de uma # delas. @id_da_switch=5# Id @valor=true # true = ON, false = OFF $game_switches[@id_da_switch]=@valor # Vamos criar um loop? Ok, você deve lembrar como fazer um: loop do # Este loop quebra automaticamente se a switch de id 5 # estiver ativada. if $game_switches[5]==true break else# Caso contrário $game_switches[5]=true# Ativar a switch end# Fim da condição end# Fim do loop # Vamos trabalhar com estruturas for. @var=1# Criando uma nova variável for i in0..50# Repetiremos ela 50 vezes @var+= i # Somamos i a @var end# Fim da estrutura for end# Fim do método initializeend# Fim da classe criada.# Então, esta foi a nossa revisão, creio que tenha sido útil, para você# não se perder futuramente.# Aguarde, na próxima aula criaremos nossa scene! Nosso primeiro script# pra valer.# Até lá! :D#======================================================================# Parte 6# Cenas:# É meio difícil explicar o que é uma cena. Pois bem, falando de# um modo geral, são conjuntos de classes que interagem entre si# por uma classe principal (a cena).# Exemplos de cenas; O menu, O mapa, a Batalha, a Loja# Para mudar a cena atual, use:# $scene = Nome_da_Cena.new# Alguns exemplos:# $scene = Scene_Menu.new = Vai pro menu# $scene = Scene_Battle.ne = Vai para a batalha# Nesta aula vamos criar nossa cena, mas não vamos acabar ela.# Acedite, nossa cena SERÁ UM MENU!! # Para chamar o menu criado aqui, use (Chamar Script): # $scene = Scene_Mendesx_Menu.new# Parece difícil? Vamos começar do começo, de um nome para a cenaclassScene_Mendesx_Menu # Toda cena tem um método principal, chamado "main". Ao fazer # uma cena, a prescença do main é obrigatória. def main # Método principal (Corpo da cena) # Nosso menu terá escolhas, então, vamos criá-las com vars. # Usaremos as variáveis de instância, que ao serem criadas, # só podem ser usadas no mesmo método que foram criadas, # no caso, o main. # Para criar vars assim, é só escrevre o nome delas. esc_a ="Itens" esc_b ="Status" esc_c ="Salvar" # Então, criamos nossas três escolhas do menu. # Vamos criar uma janela que contenha as escolhas. No RM, # existe uma janela que faz isso, a Window_Command @comandos=Window_Command.new(160,[esc_a, esc_b, esc_c]) # Explicando: # @comandos = Variável que cria a janela # = = Igual á # Window_Command.new = Janela de comandos # 160 = Largura da janela # [esc_a, b, c] = Comandos (definidos antes) # Se não entendeu, leia de novo, se entendeu, continuemos # Este comandos prepara os gráficos para o loop (ciclo) Graphics.transition # Começamos um novo loop loop do # Esperamos 1 Frame para nao travar Graphics.update # Atualizamos o teclado Input.update # Chamamos o método update update # Caso a cena tenha mudado, paramos de atualizá-la if $scene !=self break# Quebra o loop end# Fim da condição end# Fim do loop # Quando o loop tiver acabado (for outra cena) # Deletar a janela de comandos @comandos.dispose end def update # Método de atualização chamado no loop # Atualizar a janela de comandos @comandos.update # Se presionar a tecla X ifInput.trigger?(Input::B) # Voltar ao mapa $scene =Scene_Map.new end # Caso aperta a tecla C (Enter) ifInput.trigger?(Input::C) # A variável @comandos representa a janela de comandos. # Para saber a posição do cursor da janela de comandos, # (aquele que é movido ao apertar para baixo e para cima), # usamos: @comandos.index if@comandos.index ==0# Se o cursor for 0 (Primeiro) # Vai para a cena dos itens $scene =Scene_Item.new elsif@comandos.index ==1# Caso o cursor for 1 # Vai para a cena dos status $scene =Scene_Status.new elsif@comandos.index ==2# Caso o cursor for 2 # Vai para a cena de salvar $scene =Scene_Save.new end end end # Só tem um problema, depois de ir para a cena dos itens, status # ou save, e apertar X, voltamos ao menu original, e não ao menu # que fizemos. # O código abaixo resolve isso xDend # Código para resolver o bug do menuclassScene_Menu# Acesso ao menu original def main # Método principal $scene =Scene_Mendesx_Menu.new# Vai para o nosso menu xD endend# Mas o nosso menu está meio fraco, não? Só uma janela de comandos...# É porque na próxima aula vamos melhorar este menu. Aguardem!#=================================================================# PARTE 7# Opa, finalmente melhoraremos o nosso menu xD, esta vai ser a # última aula sobre o assunto, então, se depois dela ainda tiverem# alguma dúvida em relação a cenas, podem me contatar.classScene_Mendesx_Menu# Classe do menu (Que ja foi criada) # Nesta aula nós vamos trabalhar em uma classe já criada, e # vamos modificá-la. Isso porque nós criamos o menu na aula # passada, e nesta só vamos melhorá-lo. # 1) alias # Este é um comando bem importante na hora de editar alguma # classe já criada, como é o nosso caso. Veja o exemplo: alias nome_do_alias main # main é um método do menu. Lembra? def main # Vamos alterar o main! nome_do_alias # Estranho... end # Ok, agora você se pergunta, o que fizemos? # Quando mudamos um método (def), o primeiro é apagado. # Ou seja, se eu só criasse um novo método main aqui, o antigo # não ia valer nada. # Para me ajudar eu uso o alias, ele salva as informações # do método (no caso, main) para não apagá-lo, e poder fazer # modificações. alias nome_qualquer main # Novo alias para o método main. def main # Método main nome_qualquer # Método antigo é salvo. xD # Lembre-se que o nome_qualquer é o nome do alias. end # Ja aprendemos o alias, agora vamos modificar os métodos. # Começando pelo main. Você pode botar comandos adicionais # antes ou depois do alias, mas lembre-se que o alias vai # rodar todos os comandos do método que está salvando. alias para_valer main def main # Vamos criar mais janelas para o menu. Primeiro, uma # janela que exibe o dinheiro. Ela existe no rmxp, e se # chama: Window_Gold @janela_de_gold=Window_Gold.new# Cria a janela @janela_de_gold.x =160 # Coordenada X @janela_de_gold.y =0 # Coordenada Y # Agora criaremos uma janela que exibe o tempo de jogo. # Essa janela também existe, se chama: Window_PlayTime @janela_de_tempo=Window_PlayTime.new @janela_de_tempo.x =480 # Coordenada X @janela_de_tempo.y =384 # Coordenada Y # Lembra que o fundo do menu era preto? Pois então, agora # Esse fundo será o mapa! Para isso, usamos: @fundo_mapa=Spriteset_Map.new# Cria o fundo do mapa # Vamos criar agora uma janela que exibe o nome do mapa! # O único problema é que essa janela não existe no RMXP, # então vamos ter que escrevê-la. @janela_mapa=Window_MapName.new @janela_mapa.x =0 # Coord X @janela_mapa.y =384# Coord Y # Bem mais abaixo você poderá ver o código da janela. para_valer # Método original é rodado. # Se você observar o método original, verá que no início # tudo é criado (as janelas), e no final, tudo é deletado # (Caso tenha mudado de cena), xomo eu expliquei. # Portanto, os comandos aqui são para deltar as janelas # quando sair do menu. @janela_de_gold.dispose # Deleta a janela de Gold @janela_de_tempo.dispose # A de tempo @fundo_mapa.dispose # O fundo do mapa @janela_mapa.dispose # O nome do mapa end # Agora, um novo alias para o método de atualização. alias novo_alias update # Modifica o método update def update # Atualizar cada janela @janela_de_gold.update @janela_de_tempo.update @fundo_mapa.update @janela_mapa.update novo_alias # Roda comandos do update (Todos) endend# Fim da classe # Agora criaremos a janela que exibe o nome do mapa.classWindow_MapName<Window_Base def initialize # As coordenadas X e Y são especificadas na Cena, então não # é necessário botá-las, deixe em 0. # x, y, lar alt super(0,0,480,96) # Criamos o Bitmap self.contents =Bitmap.new(width -32, height -32) # Chamamos o refresh refresh end def refresh # Limpamos a janela self.contents.clear # Este comando cria uma variável que representa diversos # dados do mapa, inclusive nome, id, etc... @mapa= load_data("Data/MapInfos.rxdata") @id= $game_map.map_id # Este comandos pega o id do mapa atual @nome=@mapa[@id].name # Desenha o texto do mapa self.contents.draw_text(0,15,480,32,"Mapa atual: "+@nome.to_s,1) endend# O comando abaixo serve para que dê para pegar o ID do mapa, # necessário para criar nossa janela. Pode ignorá-lo se quiser.classGame_Map attr_accessor :map_id end# É isso, você criou seu primeiro menu. xD# Enfim, pode melhorá-lo quanto quiser, e acho que você deve ter# alguma dúvida, se tiver, contate-me. # Na próxima aula começaremos a "brincar" mais com o rgss, e # você verá o quanto poderosa (e divertida) é esta linguagem.# Até lá!#================================================================#================================================================# PARTE 8# 1) Arrays# O que são Arrays? São variáveis que contém vários valores. Pense# nas variáveis que vimos até agora, elas podem ter um valor 2, 9,# "Texto", true, false, enfim...# Agora, os arrays, sendo uma só variável pode ter vários valores# (iguais ou diferentes entre si). Para cria um novo array, usamos# os colchetes: [ ]classAula_Oito def initialize @novo_array =[]# É o mesmo que: @novo_array = Array.new $array_global =[]# É o mesmo que: $array_global = Array.new # Poderíamos criar já botando direto os valores. Sendo que # os valores devem ser divididos por vírgulas: @array_com_valor=[0] # Acima eu só coloquei um valor, mas posso botar mais: @array_com_mais=[0,1,2,90]# Separar com vírgulas # Um array pode conter valores muito diferentes, por exemplo, # textos, números, e booleanas (true e false) @array_com_tudo=[1,"Texto",true] # Acima nós só criamos os Arrays, agora vamos poder acessar os # valores criados acima, observe: @valor=@array_com_tudo[0]# Valor = 1 p @valor.to_s # Print no valor (1) # Como assim? Bom, a variável array_com_tudo tem três valores, # sendo o primeiro 1, o segundo "Texto", etc... # Para acessar um valor de um array, é só escrever: # @nome_da_var[id] # Sendo id o id no array, ou seja: O primeiro valor, (no caso, # 1) tem id 0, o segundo valor ("Texto"), tem id 1, o terceiro # valor, (true), tem id 2. # Entendeu? Se não, leia o parágrafo acima de novo. # O id é o número do valor desejado menos 1. # Vamos a mais um exemplo: @exemplo=[false,"Hey hey",80,true,'Palavra'] primeiro =@exemplo[0]# false segundo =@exemplo[1]# "Hey hey" terceiro =@exemplo[2]# 80 quarto =@exemplo[3]# true quinto =@exemplo[4]# 'Palavra' # Acho que esta parte está bem explicada, agora vamos a alguns # métodos (def) da classe Array. (Que não conta neste editor, # por acaso.) # O método .push adiciona um novo valor ao array. @exemplo.push("Valor")# Array ganhou o valor "Valor". # O método .include? verifica se um valor está no array. @exemplo.include?("Valor")# Geralmente usado em condições. # Assim podemos verificar se o "Valor" está presente no Array. # O método .compact! retira todos os valores nulos do Array. # Exemplo: @array=[0,nil,1] @array.compact!# @array = [0, 1] # Ou seja, o valor nulo foi retirado. # O método .clear limpa o Array, é o mesmo que redeclará-lo. @array.clear @array=[] # Mesma coisa # O método .delete deleta todos os valores do array iguais # ao chamado, observe o exemplo: @array=[1,2,1,3,2,3,4,2] @array.delete!(2)# Deletamos o 2. # @array = [1, 1, 3, 3, 4] # O método .empty é usado em condições, e verifica se o array # está o não vazio, ou eja, se ele é igual ou não a: [ ] if@array.empty? # O array está vazio end # O método .size retorna o tamanho do Array, veja o exemplo: @array=[0,"A",2,'B',0.28] p @array.size # @array.size = 5 # Enfim, nesta aulas vimos alguns métodos da classe Array, # mas não todos, vimos os mais utilizados. # Na próxima aula aprenderemos mais sobre textos, eles tem # alguns métodos que você nem imagina. # Para quem está se perguntando onde está a tal classe Array, # ela não consta no editor de scripts, apesar de poder ser # acessada e modificada. # Chamamos classes assim de classes Built-In. end# Fim do métodoend # Fim da classe#===============================================================#===============================================================# Parte 9classAula_Nove # Olá, hoje aprenderemos mais sobre a classe String. Esta classe # é responsável pelos textos do jogo. # texto = String.new # Para criar um novo texto, ou seja, criar uma nova string, podemos # usar as aspas duplas " ", ou simples ' ', logo estudaremos # as suas diferenças. def initialize @texto="" $outro ='' @string=String.new # Ou seja, " "