segunda-feira, 30 de janeiro de 2012

Tetris e algoritmos genéticos em Java - parte 1

Olá pessoal! Esta é a primeira parte de uma série de posts sobre Algoritmos Genéticos (GA). Atualmente existe bastante material sobre GA espalhado pela rede, porém boa parte deste material é teórico ou muito especializado, o que acaba frustrando quem deseja aprender mais sobre o assunto.

Também vejo muitos iniciantes encontrando dificuldades para implementar uma versão do Tetris. Já vi de tudo: peças sumindo do nada, blocos sendo abduzidos, etc...

Por essas e outras decide juntar os dois assuntos de maneira prática: implementando uma A.I. que jogue Tetris decentemente. A definição de decentemente varia, porém vamos tomar como base o seguinte: a A.I. deve jogar de maneira parecida com a humana, aplicando as estratégias básicas do game (que logo serão discutidas).

Introdução

O objetivo é simples: implementar um agente Tetris, que faça o maior número possível de linhas. Fatores como tempo e velocidade das peças serão desprezados, vamos assumir que o agente seja rápido o suficiente mover a peça na posição desejada.

Neste post iremos implementar o cliente Tetris: as classes TetrisPiece e TetrisBoard darão conta da lógica do game. A classe GamePanel implementa a GUI e aceita input do teclado, assim poderemos testar o game e ter certeza de que tudo funciona perfeitamente.