Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Ainda temos gente aqui?
Aula 8: Acesso a Atributos EmptyQui 25 Nov 2021, 14:04 por Halt

» [Dúvida] Como tirar a porcentagem de esquiva
Aula 8: Acesso a Atributos EmptySex 19 Nov 2021, 17:14 por Halt

» Pokémon Genesis Online! (PGO)
Aula 8: Acesso a Atributos EmptyQua 05 Jul 2017, 18:08 por Lexar

» Tileset Converter to MV
Aula 8: Acesso a Atributos EmptySex 12 maio 2017, 14:07 por Douggi

» Pack Resources, Sprites e etc
Aula 8: Acesso a Atributos EmptyQua 23 Dez 2015, 12:30 por raydengv

» Download RPG Maker 2003 + RTP em português
Aula 8: Acesso a Atributos EmptyTer 22 Dez 2015, 11:14 por ::KimMax::

» Fantasy Art Online
Aula 8: Acesso a Atributos EmptyDom 18 Out 2015, 18:42 por daviih123

» Você vai ter medo do Nerve gear?
Aula 8: Acesso a Atributos EmptySáb 25 Jul 2015, 17:02 por Kirito-kun

» O Barato é louco
Aula 8: Acesso a Atributos EmptySáb 27 Jun 2015, 16:26 por Halt

» Download RPG Maker 2000 + RTP em português
Aula 8: Acesso a Atributos EmptyQui 21 maio 2015, 20:28 por Wismael


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

1Aula 8: Acesso a Atributos Empty Aula 8: Acesso a Atributos Sáb 13 Out 2012, 20:18

Halt

Halt
Administrador
Administrador
[Autor: Anderson Porto]
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Prefácio
Esta aula será bem rápida, tenho como objetivo "tapar" um buraco no conteúdo para quem esta acompanhando minhas aulas! Hoje iremos aprender sobre a acessibilidade das variáveis!

Ao olhar nos scripts do seu banco de scripts, nota-se que vários dos objetos iniciam com um @ ou um $, hoje veremos as diferenças.

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]Variáveis Locais
Toda variável local é aquela que não possuem nem $ nem @, elas são variáveis que só "existem" dentro do método em que são instanciadas.
Exemplo:
Código:
def soma
  a = b + c
  p a.to_s
end
Aqui a, b e c são variáveis locais, posso assim usar as mesmas varáriáveis (mesmos nomes) em vários métodos pois não vai fazer diferença! Veja que até agora nós usamos apenas variáveis locais!

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]Variáveis de Instância - Atributos
As variáveis de instância são aquelas que toda a classe pode utilizar, por exemplo, dentro de Scene_Menu, a janela @status_window é utilizada em vários métodos. Seria impossível executar métodos da @status_window em métodos dentro da scene caso não tivesse um @ no nome, vou exemplificar com valores numéricos:
Código:
def soma(m, n)
  @a = m
  @a += n
  p @a.to_s
end
#
def subtracao(m, n)
  @a = 0 if @a.nil?
  @a += m
  @a -= n
  p @a.to_s
end
O que vai ocorrer, no 1º método, o cálculo será sempre o mesmo (correto), mas no segundo método vai dar erro caso o 1º método já tenha sido executado, exemplo:
a = MinhaClasse.new #nome fictício para a classe em questão
a.soma(2,3)
>dentro do método
>> @a = m #m é 2 assim @a = 2
>> @a += n # n é 3, @a é 2, 3 + 2 = 5
>> Mostra na tela 5
a.subtração(6,2)
>dentro do método
>> pergunta @a é nil? # não intão passa para a próxima linha
>> @a += m # @a ja vale 5 pois o método soma foi executado antes, assim 5 + 6 = 11
>> @a -= n # 6 - 2 = 4

É óbvio que o exemplo que citei é um tanto pobre, mas você consegue ter uma idéia do que pode acontecer.

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]Variáveis Globais
São as variáveis(objetos) que podem ser acessadas em qualquer parte do programa, vou citar os classicos que nós já utilizamos:
$game_variables
$game_switches
...
Todos os objetos com um $ no início do nome são globais, isso significa que não importa a classe ou módulo que eu esteja, eu posso acessá-lo!

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]Variáveis de Classe
Variável de classe começam com @@, e existem apenas uma delas para cada classe. Como não se usam muitas variáveis de classe (@@), ninguém nunca vai ter problemas com isso. (Fonte KJr)

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]Acessando atributos
São 3 possíveis: attr_acessor, attr_reader e attr_writer
Por exemplo: eu tenho a classe Game_Actor e dentro dela tenho uma variável chamada @str (força) quero fazer com que essa variável possa ser acessada por outras classes uso, assim:
attr_acessor :str
Qual a diferença de usar um attr_acessor ou uma variável com $.
Ao usar o attr posso usar $game_actors[id].str (onde $game_actors[id] é o nome do objeto), assim a cada id, tenho um endereço na array diferente e assim um str diferente, mas se eu usasse $str, eu não poderia usar $game_actors[id], usaria apenas $str e ele seria igual para todos os personagens!!!

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]Diferenças entre acessor reader e writer:
reader: permite apenas a leitura do atributo, posso por exemplo usar um print nesse atributo, mas não posso mudar o valor dele.
writer: permite alterar, mas não permite ler, não é muito utilizado
acessor: é o reader + o writer XD

Relembrando o uso:
Em geral usamos após o nome da classe:
class AlgumaCoisa
#Usamos attr_nome (um dos 3 possíveis) :nomedoatributo
attr_acessor :var1
attr_reader :var2
attr_writer :var3

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]Dica
Você pode usar os attr_ em uma linha só, para exemplificar isso e mostrar como os attr_ são úteis, vejam o exemplo

Esta é a classe Pessoa
Código:
class Pessoa
  def nome
    @nome
  end

  def nome=(valor)
    @nome = valor
  end

  def nascimento
    @nascimento
  end

  def nascimento=(valor)
    @nascimento = valor
  end

  def cpf
    @cpf
  end

  def cpf=(valor)
    @cpf = valor
  end
end

Usando attr, a mesma classe pessoa fica assim:
Código:
class Pessoa
  attr :nome, :nascimento, :cpf
end

Notem que é possível usar um attr para 3 instâncias, apenas separando com ,

https://arenarpgmaker.forumeiros.com

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos