Criando um Game Completo - Parte 3

Inimigos, pontuação e colisões!
Bem vindo à terceira parte do nosso mini-curso Criando um Game Completo, onde criamos uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joystics e uma tabela de scores online!

No último artigo, preparamos as fundações e demos os primeiros passos na construção do game. Agora, com as bases prontas, vamos começar a nos concentrar no conteúdo - imagens, animações e interação entre os objetos do jogo e a interface do usuário.

Este post será maior que os outros dois, construiremos objetos mais complexos e resolveremos alguns problemas mais difíceis portanto, é aconselhável baixar o código-fonte e ir acompanhando as explicações utilizando-o como referência. Caso não queira fazer o download, você também pode ver o código no repositório do GitHub.

Abraços, e mão à obra!

Criando um Game Completo - Parte 2

Modelo do controle usado para os testes
Bem vindo à segunda parte do nosso mini-curso Criando um Game Completo, onde criamos uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joystics e uma tabela de scores online!

No último artigo, criamos uma classe para encapsular a lógica do game, carregamos algumas imagens para a memória e exibimos o primeiro inimigo na tela.  Seguiremos, agora, com a animação dos sprites e a movimentação do jogador através do teclado ou do joystick.

Vamos lá!

Criando um Game Completo - Parte 1

Você não precisa ver toda a escada,
simplesmente dê o primeiro passo!
Bem vindo à primeira parte do nosso mini-curso Criando um Game Completo, onde iremos criar, do zero, uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joysticks e uma tabela de scores online!

O jogo é propositalmente simples para que o leitor com pouca experiência na linguagem Pascal e no desenvolvimento de games possa acompanhar o texto e o código o início ao fim. Iremos utilizar uma abordagem mista de programação estruturada e orientada a objetos já que precisaremos interfacear com algumas bibliotecas de baixo nível, mas sempre buscaremos manter o código simples, comentando e explicando cada bloco que surgir.

O curso está divido em nove partes, com cada uma delas sendo publicada semanalmente aqui no blog. Dúvidas, críticas e sugestões poderão ser postadas livremente nos comentários.

Espero que apreciem.

Criando um Game Completo - Parte 0

Nesta série de artigos, divida em 9 partes, vamos partir do zero e criar uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2d, suporte a joystick e uma tabela de high scores online.

O jogo é propositalmente simples para que o leitor com pouca experiência na linguagem e no desenvolvimento de games possa acompanhar o texto e o código o início ao fim.

Ao final de cada etapa, como de costume, estarão disponíveis para download tanto o código fonte como o executável equivalente.

Espero que apreciem.

Refatoração com Class Interceptors e Métodos Anônimos

Quando assunto é manipulação de bancos de dados, há poucas ferramentas tão práticas e convenientes quanto os DataSets do Delphi. Instacie um dataset qualquer, informe uma consulta sql, chame o método open e bingo! temos uma cópia dos registros do banco (e uma infinidade de metadados) em memória, prontos para serem manipulados.

procedure Foo;
var
  qry: TSqlQuery;
begin
  qry := TSqlQuery.Create;
  try
    qry.CommandText := 'select some fields from some table';
    qry.Open;
    while not qry.Eof do
    begin
      //processa o registro atual..
      //e avança para o próximo
      qry.Next;
   end;
   finally
     qry.Close;
     FreeAndNil(qry);
   end;
end;

Prático e simples, não é?

Pois bem! Image dar manutenção em um sistema onde há milhares de funções exatamente iguais a esta, espalhadas por centenas de units e você começará sentir calafrios.