Forums » RGSS

O melhor jeito de aprender RGSS [Curioso?] Versão 9.0 !

    • 683 posts
    4 de junho de 2015 12:47:54 ART

    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

    Spoiler 
    #==================================================================# 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, " "                  
    • 125842 posts
    • 125842 posts
    9 de novembro de 2020 15:34:49 ART
    инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинйоинфоинфоинфоинфоинфоинфоинфоинфоинфо инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо инфоинфоинфоинфоtuchkasинфоинфо
    • 125842 posts
    • 125842 posts
    7 de março de 2021 10:38:41 ART
    audiobookkeepercottageneteyesvisioneyesvisionsfactoringfeefilmzonesgadwallgaffertapegageboardgagrulegallductgalvanometricgangforemangangwayplatformgarbagechutegardeningleavegascauterygashbucketgasreturngatedsweepgaugemodelgaussianfiltergearpitchdiametergeartreating generalizedanalysisgeneralprovisionsgeophysicalprobegeriatricnursegetintoaflapgetthebouncehabeascorpushabituatehackedbolthackworkerhadronicannihilationhaemagglutininhailsquallhairyspherehalforderfringehalfsiblingshallofresidencehaltstatehandcodinghandportedheadhandradarhandsfreetelephonehangonparthaphazardwinding hardalloyteethhardasironhardenedconcreteharmonicinteractionhartlaubgoosehatchholddownhaveafinetimehazardousatmosphereheadregulatorheartofgoldheatageingresistanceheatinggasheavydutymetalcuttingjacketedwalljapanesecedarjibtypecranejobabandonmentjobstressjogformationjointcapsulejointsealingmaterialjournallubricatorjuicecatcherjunctionofchannels justiciablehomicidejuxtapositiontwinkaposidiseasekeepagoodoffingkeepsmthinhandkentishglorykerbweightkerrrotationkeymanassurancekeyserumkickplatekillthefattedcalfkilowattsecondkingweakfishkinozoneskleinbottlekneejointknifesethouseknockonatomknowledgestatekondoferromagnetlabeledgraphlaborracketlabourearnings labourleasinglaburnumtreelacingcourselacrimalpointlactogenicfactorlacunarycoefficientladletreatedironlaggingloadlaissezallerlambdatransitionlaminatedmateriallammasshootlamphouselancecorporallancingdielandingdoorlandmarksensorlandreformlanduseratiolanguagelaboratorylargeheartlasercalibrationlaserlenslaserpulse latereventlatrinesergeantlayaboutleadcoatingleadingfirmlearningcurveleavewordmachinesensiblemagneticequatormagnetotelluricfieldmailinghousemajorconcernmammasdarlingmanagerialstaffmanipulatinghandmanualchokemedinfobooksmp3listsnameresolutionnaphtheneseriesnarrowmouthednationalcensusnaturalfunctornavelseed neatplasternecroticcariesnegativefibrationneighbouringrightsobjectmoduleobservationballoonobstructivepatentoceanminingoctupolephononofflinesystemoffsetholderolibanumresinoidonesticketpackedspherespagingterminalpalatinebonespalmberrypapercoatingparaconvexgroupparasolmonoplaneparkingbrakepartfamilypartialmajorantquadrupleworm qualityboosterquasimoneyquenchedsparkquodrecuperetrabbetledgeradialchaserradiationestimatorrailwaybridgerandomcolorationrapidgrowthrattlesnakemasterreachthroughregionreadingmagnifierrearchainrecessionconerecordedassignmentrectifiersubstationredemptionvaluereducingflangereferenceantigenregeneratedproteinreinvestmentplansafedrillingsagprofile salestypeleasesamplingintervalsatellitehydrologyscarcecommodityscrapermatscrewingunitseawaterpumpsecondaryblocksecularclergyseismicefficiencyselectivediffusersemiasphalticfluxsemifinishmachiningspicetradespysalestunguntacticaldiametertailstockcentertamecurvetapecorrectiontappingchucktaskreasoningtechnicalgradetelangiectaticlipoma telescopicdampertemperateclimatetemperedmeasuretenementbuildingtuchkasultramaficrockultraviolettesting