Arquivo do autor:Angelito

Ray Casting em JavaScript

No começo da década de 90, quando os recursos computacionais eram bastante limitados, surge um jogo revolucionário: Wolfenstein 3D. Utilizando uma técnica chamada Ray Casting, o jogo conseguia reproduzir um ambiente 3D a partir de um mapa 2D, fazendo apenas cálculos muito loucos simples.

Segue então um exemplo de um cenário 3D, similar ao Wolfenstein 3D, porém utilizando apenas JavaScript. O código está todo comentado em português e foi baseado neste tutorial.

raycasting

Você pode visualizar o exemplo online AQUI, baixar o código AQUI ou me ajudar a melhorar o código no Github.

Ahh, o mapa é um array em JavaScript, então para modificar os objetos do mapa, é só alterar este array. 🙂

Até a próxima 😉

Breakout em JavaScript

breakoutjsUma das dificuldades que encontrei quando comecei a estudar o desenvolvimento de jogos eletrônicos, foi a falta de códigos comentados e de fácil entendimento disponíveis. Pensando nisto, estou disponibilizando o código fonte de um jogo simples feito em JavaScript.

O jogo é um clone do famoso Breakout, porém totalmente escrito em JavaScript, graças ao tão bem-vindo HTML 5. 🙂

O código do jogo foi baseado em um tutorial disponibilizado pela Mozilla. Está totalmente comentado em português, foi escrito exclusivamente em JavaScript (sem a ajuda de nenhum framework) e possui menos de 300 linhas de código (com os comentários!!!). Baixe o código AQUI ou acesse o repositório no Github. Você também pode testar o jogo AQUI. 🙂

Até a próxima 😉

Git pull com PHP no Bitbucket

Quando comecei a desenvolver o AMG Controle, precisava de um local onde eu pudesse hospedar o repositório do projeto. O Github era uma boa alternativa, porém só permitia repositórios públicos. A alternativa que encontrei foi utilizar o Bitbucket, que permite a criação de repositórios privados em seu plano gratuito.

Continue lendo

Criando Triggers no MySQL

Triggers ou gatilhos é um recurso bastante interessante presente na maioria dos SGBDs pois permite que comandos SQL sejam executados antes ou depois de operações como INSERT, UPDATE e DELETE.

No exemplo de hoje, vamos imaginar que possuímos uma tabela chamada registros, cujos campos serão: id, nome, alteracoes.

O campo alteracoes irá conter o número de edições que o registro sofreu, ou seja, será incrementado a cada UPDATE. Para criar um gatilho que faça a atualização do campo alteracoes será necessário executar o seguinte comando:

Continue lendo

Excluindo registros duplicados no MySQL

Vamos supor que você possua uma tabela e por algum motivo os registros da tabela foram duplicados. Agora imagine que são milhares de registros e que você não pode ficar procurando os registros repetidos um a um.

Para isto, temos um comando SQL mágico, que irá remover os registros duplicados, mantendo apenas uma cópia de cada.

Continue lendo

Utilizando migrations no CakePHP 3

cakephp_logoMigrations é um recurso que permite ao desenvolvedor, controlar as alterações realizadas na estrutura da sua base de dados, permitindo assim, um versionamento melhor do banco de dados. No final das contas são arquivos PHP que estendem a classe AbstractMigration e através da API disponibilizada pelo CakePHP, constroem e modificam a base de dados.

Neste pequeno post, vou mostrar como instalar o plugin Migrations e executar uma migração básica. Para isto, assumo que você tenha familiaridade com o Composer e com o CakePHP.

Para instalar o plugin, o jeito mais fácil é utilizar o Composer:

Continue lendo

Analisando e Otimizando Tabelas no MySQL

No MySQL, quando uma tabela sofre constantes inserções e remoções, podem haver certos problemas relacionados a performance.

Para solucionar estes problemas, os comandos analyze e optimize podem ser utilizados. Basicamente eles analisam e otimizam as tabelas respectivamente. Seria como uma espécie de “desfragmentação” das tabelas.

Para fazer o procedimento de análise e otimização, basta executar os comandos:

Continue lendo

Novidades do PHP 7 – Parte 4/5: Return Type Declarations

A chegada do PHP 7 trouxe mudanças que deram ao PHP, características de uma linguagem fortemente tipada. Dentre elas estão scalar type hints e return type declarations, ou declaração de tipos de retorno.

Agora, quando construímos um método ou função, podemos definir o tipo de retorno que este deve ter. Por exemplo:

Continue lendo