Reuniões de treinamento 2017.2 [concluídas]

Participantes:

O horário ainda não é definitivo

1 Curtida

Eu também

Esse horário da quinta-feira tá bom pra você?

Sim! s2

Só colar então!

@LordAnb
@romi
@ikedawalk
@Andres

Não vou poder estar no treinamento desta quinta (24/8), mas a ideia é continuar com os exercícios que passei.

@rilifon
@orenjiakira

Vocês podem ficar por perto (já que vai ter a reunião do Backdoor anyway) e tirar as dúvidas do pessoal?

2 Curtidas

Onde vai ser?
EDIT:
Onde está sendo? :stuck_out_tongue:

É no labx (16). Estou aqui de plantão agora.

:frowning: infelizmente, não consegui encontrá-lo

Eita. Eu não tava lá hoje, e o pessoal tava no fundo do lab. Na dúvida, você pode perguntar para quem estiver no lab, que eles sabem dizer se alguém do UGD deu uma saída.

1 Curtida

E ae, tudo bem?
Eu arrumei meu código do lvl1 na parte de fazer a colisão entre as bolinhas. Ele emite o som (mas um barulho de vários sons seguidos) quando elas “batem”, mas não sei pq elas não estão mudando a direção de movimento… Vou mandar o código aqui (como o @Kazuo sugeriu), pra ver se vcs podem me ajudar.
Obrigado!

P.s.: esse monte de tracinho é pra mostrar a identação, que estava sumindo aqui na mensagem

local function handleCollisions()

  • for i, obj1 in ipairs(objects) do
    • for j, obj2 in ipairs(objects) do
      • dist = ((obj1.x - obj2.x)^2 + (obj1.y - obj2.y)^2)^0.5
      • if dist <= 32 then
        • if obj1.dir_x*obj2.dir_x < 0 then
          • obj1.dir_x, obj2.dir_x = obj2.dir_x, obj1.dir_x
          • love.audio.stop(bounce_sfx)
          • love.audio.play(bounce_sfx)
        • end
        • if obj1.dir_y*obj2.dir_y < 0 then
          • obj1.dir_y, obj2.dir_y = obj2.dir_y, obj1.dir_y
          • love.audio.stop(bounce_sfx)
          • love.audio.play(bounce_sfx)
        • end
      • end
    • end
  • end
    end

@Andres

O problema é que você está tratando cada par de bolas duas vezes. O par i=5,j=7, por exemplo, é tratado de novo quando i=7,j=5. Aí as bolas que estão colidindo têm suas velocidades invertidas duas vezes (e consequentemente nada acontece). Fez sentido?

Outras dicas:

Sua variável dist está global no código que você passou, recomendo usar local. O problema com variáveis globais é que elas são compartilhadas pelo código inteiro. Então se você muda o valor de uma variável não-local chamada dist aqui, você acaba mudando o valor de todas as variáveis não-locais chamadas dist. Para fazer variáveis locais é só acrescentar um local antes dela na primeira vez que você atribui algo nelas:

local dist = ...

Para mostrar código aqui no fórum, você pode fazer assim (sem os espaços no começo):

 ```lua
 local var = 42
1 Curtida

Nossa, é verdade! Eu tinha reparado depois que estava fazendo comparações a mais, mas não tinha pensado que teria essa consequência. Obrigado!

Entendi, legal!

Assim fica bem mais fácil haha Obrigado de novo! :grin:

Boa tarde!!

Eu estava fazendo o lvl2 - Stage 2, e fiquei com uma dúvida. A imagem dos tiles disponibilizada no próprio lvl2 é um pequeno sprite com os 3 tipos de tile. Como eu faço pra identificar qual eu desenho a partir dos números do mapa? Tem que criar quads?

Obrigado!

Sim, tem que criar quads! Além disso, você pode mudar o formato em que os tiles são guardados para tirar proveito dos quads. Por exemplo, ao invés de guardar as cores dos tiles (que é como o código faz inicialmente), você pode guardar números que identifiquem qual quad deve ser usado (o primeiro, o segundo, etc.). Para isso, você provavelmente vai precisar de uma tabela auxiliar fazendo esse mapeando.

2 Curtidas

Eu de novo aqui com dúvida haha

Aconteceu algo meio estranho e eu não sei muito bem porque… (Ainda na parte de colocar a imagem dos tiles no lvl2) Eu tirei do programa aquela parte de preenchimento com quadrados, e coloquei um love.graphics.draw com os quads, certinho. Só com isso, ele colocava as texturas certas mas com cores estranhas (umas linhas de azul com umas linhas de vermelho e algumas em verde). Então eu coloquei antes do comando do draw um setColor(255, 255, 255). Isso magicamente resolveu o problema com as cores :joy:.
Queria saber se sempre antes de dar um draw em alguma imagem eu tenho que fazer essa setagem branca? Ou se foi algum evento magico dessa situação em específico?

Oi, Andres.

O love.graphics.setColor muda o estado do “desenhador” da love para desenhar com a cor que você colocou nessa última chamada. Sempre que você mudar essa cor, chamando o setColor, a love vai começar a desenhar TUDO que você pedir para ela desenhar com aquela cor. A cor neutra é branco, ou {255,255,255}, ou ainda {0xff,0xff,0xff}. Para voltar a desenhar as coisas com a cor “certa” você precisa sim chamar o setColor passando a cor branca.

EDIT:
Um exemplo, para ajudar:

function love.draw()
  -- resetando a cor no começo do "draw"
  love.graphics.setColor(255, 255, 255)

  -- tudo que desenhar a partir daqui terá sua cor "natural"

  -- desenhando um quadrado branco na posição (0, 0):
  love.graphics.rectangle("fill", 0, 0, 32, 32)
  
  -- vamos mudar de cor
  love.graphics.setColor(255, 0, 0)

  -- tudo que desenhar a partir daqui ficará vermelho

  -- desenhando um quadrado vermelho na posição (32, 0):
  love.graphics.rectangle("fill", 32, 0, 32, 32)
end
1 Curtida

Entendi! Obrigado!

Legal! Obrigado