Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Para avaliação do jogo tic-80

1 - não foi tão simples, briguei muito com o alinhamento de sprite mas basicamente minha dificuldade foi só isso mesmo, o que foi bom pois me fez escrever varias vezes o mesmo trecho. fiz, refiz, comparei com o do professor linha por linha e não ia. possivelmente fiz algo errado. mas deu certo. não sei se outros terão mesmo problema. não sei se ouve atualização no programa. sei que em dado ponto os números não batiam. certas ( ) não rodavam igual ao do professor. mas eu consegui.

OBS se a indentação tiver esquisita e por conta do tic-80 eu achei horroroso escreve com letras pixeladas e pequenas com Tabs mínimos. o que parece gigantesco aqui la e bem legível. hehehe

O programa é ótimo para aprender, bom mesmo na hora de roda se tiver erro ele mostra bem onde é, ou o que é o erro, mas cansativo de fica olhando muito tempo. Em tela cheia achei pior.

os números da distancia dos eixos são bem diferentes parece ate maluco mas deu certo aqui.

-- title:  Fuga das sombras
-- author: Jeferson Silva
-- desc:   short description
-- script: lua

jogador = {
    sprite = 32,
    x = 120-8,
    y = 68-8
}

Constantes = {
    LARGURA_DA_TELA = 240,
    ALTURA_DA_TELA = 138
}

function temColisaoComMapa(ponto)
    blocoX = ponto.x / 8 
    blocoY = ponto.y / 8
        blocoId = mget(blocoX, blocoY)
        if blocoId >= 128 then
                    return true
        else
                    return false
        end

end

function tentaMoverPara(meuDeslocamentoX, meuDeslocamentoY)
                -- botao pra cima --
            superiorEsquerdo = {
                    x = jogador.x + 1 + meuDeslocamentoX,
                    y = jogador.y - 0 + meuDeslocamentoY
         }
            superiorDireito = {
                    x = jogador.x + 15 + meuDeslocamentoX,
                    y = jogador.y - 0 + meuDeslocamentoY
            }
                    -- fecha --
                    -- botao pra baixo --
            inferiorDireito = {
                x = jogador.x + 1 + meuDeslocamentoX,
                y = jogador.y + 15 + meuDeslocamentoY
            }
            inferiorEsquerdo = {
                x = jogador.x + 15 + meuDeslocamentoX,
                y = jogador.y + 15 + meuDeslocamentoY
            }
            -- fecha ---
                    if temColisaoComMapa(superiorEsquerdo) or
                                temColisaoComMapa(superiorDireito) or
                                temColisaoComMapa(inferiorDireito) or
                                temColisaoComMapa(inferiorEsquerdo) then
                        --colisao!!
                        else
                            jogador.y = jogador.y + meuDeslocamentoY
                            jogador.x = jogador.x + meuDeslocamentoX
                        end
end

function atualiza()

    -- cima
    if btn(0) then
tentaMoverPara(0, -1)

    end
    -- baixo
    if btn(1) then
        tentaMoverPara(0, 1)

 end
    -- esquerda
    if btn(2) then
        tentaMoverPara(-1, 0)
        end
    -- direita
    if btn(3) then
        tentaMoverPara(1, 0)
        end
end

function desenhaMapa()
    map(0,    -- posicao x no mapa
                    0,    -- posicao y no mapa
                    Constantes.LARGURA_DA_TELA,
                    Constantes.ALTURA_DA_TELA,
                    0,    -- em qual ponto colocar o x
                    0)    --    em qual ponto colocar o y
end

function desenhaJogador()
    spr(jogador.sprite, 
                    jogador.x, 
                    jogador.y, 
                    0,    -- Cor de fundo 
                    1, -- escala
                    0, -- espelhar
                    0, -- rotacionar
                    2, -- quantos blocos pra direita
                    2) -- quantos blocos pra baixo
end

function desenha()
    cls() --limpa tela
    desenhaMapa()
    desenhaJogador()


end

function TIC()
    atualiza()
    desenha()
end
1 resposta
solução!

Olá Kleber, obrigado por compartilhar!

Sobre essa questão do editor algo que eu fiz foi utilizar o Visual Studio Code para fazer as alterações e procurar problemas no código e então copiar e colar no tic80 para executar. Imagino que essas diferenças nos valores de superiorEsquerdo, superiorDireito e os demais podem ter acontecido por diferenças no formato dos personagens.

Até o momento eu não tive problemas seguindo o código feito pelo professor, mas percebi que alguns dos códigos do texto da aula estão com um erro ou outro de digitação, mas isso já vai ser revisado e corigido.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software