Ajuda

4 Respostas   160 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

MendigoDoMato

  • *
  • Posts: 40
  • Ouros: 4
Tópico criado em: 14/08/2016 às 15:39 - Última modificação por Skyloftian em 09/09/2016 às 23:16

0
*Estou tentando aprender script vendo as aulas do khas, e gosto de aprender futucando as coisas, então eu peguei um script que ele fez nos videos e modifiquei...eu queria que as coordenadas do herói estivessem escritas na cabeça dele, e eu consegui (parcialmente,como esperado heheheh) o problema é que a informação não se atualiza...fica sempre com as coordenadas iniciais.   :derp:

* qual a diferença entre . e _ ?  >>> EX.    .update e _update.

OBS: Acho que esta bem clara a minha posição, mas só pra reforçar...não sei de nada.

Spoiler
[close]

Resque

Resposta 1: 14/08/2016 às 21:36 - Última modificação por Resque em 14/08/2016 às 21:55

3
Boa noite ;D

Você estava quase lá, o que acontece aqui, é que você apenas criou a imagem das coordenadas na inicialização da classe, e esqueceu no update, você até atualizou ou eixos da imagem no update, mas esqueceu de atualizar os valores.

Outra coisa muito importante que sempre devemos nos preocupar, é o lag.

Nesse script, a imagem das coordenas é criada e apagada muiiiiiiiiitasssssss vezes por segundo, isso gera muito lag, pois esse processo é custoso para o sistema e fica executando infinitamente (mesmo com o Herói parado).

Devemos atualizar as coordenas apenas quando o personagem se mover

Além disso, o script está dando muitas voltas para fazer coisas simples, quanto mais simples você fizer algo, melhor vai ser de mudar alguma coisa, além de evitar bugs (igual esse).

Por conta disso, dei uma enxugada no script.

Segue os comentários que fiz no seu script:
Spoiler
[close]

Segue script ajustado e melhorado, sugiro que estude a forma que usei para organizar as coisas:
Spoiler
[close]

Abraços!

MendigoDoMato

  • *
  • Posts: 40
  • Ouros: 4
Resposta 2: 16/08/2016 às 18:48

0
MUITOOOO obrigado ! vou estudar o que você fez pra tentar entender direitinho.

me tira só mais uma duvida ? sempre vejo o "def update" "def initialize"  ... eu não sei se o nome é por convenção ou se o programa já interpreta a palavra update de uma forma especifica.

 tipo....você escreveu direitinho la > blablabla blala lbablab update blalala > o programa lê e quando ve o update escrito >  :o: :o: opa tem um update aqui em !! update ó !

ou ele interpreta como uma palavra qualquer ? 


Resque

Resposta 3: 16/08/2016 às 21:42

1
Bom, o update é sim uma convenção, mas o initialize não.

A linguagem de programação Ruby, se comunica através de métodos, isso é basicamente uma troca de mensagens.

A palavra reservada "def" é utilizada para criar (definir) diversas instruções que só será disparada quando existir uma chamada desse método.

O nome do método não importa, se você está criando um método novo, você pode dar qualquer nome para ele, o update é um desses casos, geralmente usamos um nome curto e explicativo para o método com base no que ele faz.

No caso o update se chama update porque ele "atualiza algo":
Spoiler
[close]

Colocamos um nome explicativo, pois temos que lembrar fácil desse nome depois para quando quisermos efetivamente atualizar o sprite (executar o código definido dentro do método update).

Spoiler
[close]

Você poderia dar qualquer nome para o método atualizar o sprite, poderia ser o nome "cachorro_quente", mas para atualizar a sprite você teria que chamar o mesmo nome.

Spoiler
[close]

Já no caso do initialize, é efetuada uma sobrescrita de método, pois o initialize já existe para grande parte das classes do Ruby, o método initialize é muito usado quando queremos executar algo no momento da criação da instância de classe "heroi = Heroi.new"

Aí você me pergunta "Resque, então devo chamar heroi.initialize quando eu quiser executar algo que está dentro do (def initiaze)?"

- Não, o que está dentro do initialize, vai ser chamando no momento que você chamar o ".new":

Spoiler
[close]

Sempre utilizamos o initialize quando queremos realmente inicializar algo.

Podemos também criar métodos para serem chamados no initialize, pos isso irá organizar o nosso código, e deixar o initialize mais fácil de ler

Spoiler
[close]

É isso!

MendigoDoMato

  • *
  • Posts: 40
  • Ouros: 4
Resposta 4: 17/08/2016 às 11:17

0
puts, supimpa cara! muito maneiro da sua parte !