Meu mapa do Doom agora tem texturas! Ainda falta consertar o polígono aberto do E1M3, e as texturas estão no sistema de coordanadas errado, mas tá valendo.
Esse exercício todo foi para ficar fluente em javascript. Acho que atingi o objetivo, então posso dar uma opinião informada sobre a linguagem. Minhas conclusões são que:
0. Javascript é uma bosta.
1. É uma bosta por dois motivos, o primeiro é que, por design, ela é orientada a estado global. O document é global; window é global; as variáveis são globais por default; se você forçar a ficar local, é local na função e não no escopo; o inheritance é baseado em prototype, que é um objeto global. O único jeito de ficar são é programando com patterns funcionais e métodos puros, então eu não me imagino programando javascript sem libs funcionais como underscore ou lodash.
2. O segundo motivo é que ela compartilha o design do html e do css, que é fazer parsing generoso e falhar silenciosamente quando erra. Se você digitar um typo no nome de uma variável, ao invés de dar erro ela vai ficar undefined e vai carregar esse undefined por todo o seu código. É horrível de debugar. Ligar o strict mode ajuda, usar o jshint ajuda, mas é tudo paliativo porque isso foi uma decisão de design lá no começo e não tem como voltar atrás agora.
Para testar o mapa:
http://www.ilafox.com.br/doom/doom.html
http://www.ilafox.com.br/doom/doom.html
Eu ia justamente sugerir "use strict";, mas pelo visto você já descobriu.
ResponderExcluirE tem agora "let" que deixa a variável em escopo de bloco, em vez de escopo de função do "var".
Esse mini-rant seu me faz lembrar de linguagens como CoffeeScript e TypeScript. Mas, sim, a linguagem tem vários problemas.
Parece um doodle, rs.
ResponderExcluir