Olá pessoal, nesse tutorial vamos abordar a produção de um jogo Tetris na plataforma Java. Para isso utilizaremos o programa NetBeans, e começaremos a desenvolver nosso jogo. Devido este ser o primeiro tutorial Java, vou demonstrar basicamente como criar o projeto para este tutorial.
O nome do nosso projeto será TETRIS. Abra o NetBeans, clique CTRL + SHIFT + N, e selecione Java, Aplicativo Java e clique em próximo. Em nome do projeto coloque "TETRIS" (sem aspas). Em Criar Classe Principal digite TETRIS.Tetris. Clique em finalizar. Com o projeto preparado crie uma nova classe chamada Desenho.
A classe Desenho será responsável por desenhar cada peça tetris que existe no jogo. Para isso entendemos que deverá existir um método para desenhar, um método para redesenhar (pois peças tetris podem ser giradas) e um parâmetro que contenha todos tipos de desenho para as peças. Agora vamos estudar cada parte do código do jogo que escrevi e entender seu funcionamento.
// É necessário importar essa classe para gerar valores aleatórios, como veremos a seguir
import java.util.Random;
/*
*
* AUTOR: CAIQUE MONTEIRO ARAUJO
* DATA: 06/06/2013
* CLASSE: DESENHO
* OBJETIVO: PEÇA DO TETRIS
*
*/
public class Desenho
{
// Define tipos de desenho das peças
enum TetrisShape { SemDesenho, ZDesenho, SDesenho, LinhaDesenho,
TDesenho, QuadradoDesenho, LDesenho, EspelhadoLDesenho }
// Cria uma peça
private TetrisShape peçaDesenho;
// Cria coordenadas do desenho
private int coordenadas[][];
// Cria tabela com coordenadas
private int[][][] tabelaCoordenadas;
// Método construtor que zera as coordenadas, e zera o desenho
public Desenho ()
{
// Nova coordenada de 4 x 2, onde 4 representa quatro quadrados
// do desenho e 2 representa o plano (x,y)
coordenadas = new int[4][2];
// Define como sem desenho
setDesenho(TetrisShape.SemDesenho);
}
// Seta um desenho para a peça, "desenha" as coordenadas de um desenho
public void setDesenho (TetrisShape desenho)
{
// Mapa de desenhos possíveis para peça, cada linha representa um desenho
// cada coluna representa uma peça, cada cédula representa o plano (x,y)
tabelaCoordenadas = new int[][][] {
{ { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } },
{ { 0, -1 }, { 0, 0 }, { -1, 0 }, { -1, 1 } },
{ { 0, -1 }, { 0, 0 }, { 1, 0 }, { 1, 1 } },
{ { 0, -1 }, { 0, 0 }, { 0, 1 }, { 0, 2 } },
{ { -1, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 } },
{ { 0, 0 }, { 1, 0 }, { 0, 1 }, { 1, 1 } },
{ { -1, -1 }, { 0, -1 }, { 0, 0 }, { 0, 1 } },
{ { 1, -1 }, { 0, -1 }, { 0, 0 }, { 0, 1 } }
};
// Seta as coordenadas do desenho
for (int i = 0; i < 4 ; i++)
{
for (int j = 0; j < 2; ++j)
{
coordenadas[i][j] = tabelaCoordenadas[desenho.ordinal()][i][j];
}
}
// Define a peça com o desenho
peçaDesenho = desenho;
}
// Manipula o (x,y) do desenho
private void setX(int index, int x) { coordenadas[index][0] = x; }
private void setY(int index, int y) { coordenadas[index][1] = y; }
// Retorna o (x,y) do desenho
public int x(int index) { return coordenadas[index][0]; }
public int y(int index) { return coordenadas[index][1]; }
// Retorna o desenho
public TetrisShape getDesenho() { return peçaDesenho; }
// Cria um desenho aleatório
public void setDesenhoAleatório()
{
// Define um Random
Random r = new Random();
// Calcula valor randômico de 0 a 7
int x = Math.abs(r.nextInt()) % 7 + 1;
// Cria um quadro com desenhos possiveis
TetrisShape[] valor = TetrisShape.values();
// Seta somente o desenho gerado pelo numero randômico
setDesenho(valor[x]);
}
// Retorna a coordenada minima de x
public int minX()
{
int min = coordenadas[0][0];
for (int i = 0; i < 4; i++)
{
min = Math.min(min, coordenadas[i][0]);
}
return min;
}
// Retorna a coordenada minima de y
public int minY()
{
int min = coordenadas[0][1];
for (int i = 0; i < 4; i++)
{
min = Math.min(min, coordenadas[i][1]);
}
return min;
}
// Gira o desenho para a esquerda
public Desenho girarEsquerda ()
{
// Se a peça for quadrada não gira, e retorna
if (peçaDesenho == TetrisShape.QuadradoDesenho)
{ return this; }
// Cria um resultado
Desenho resultado = new Desenho();
// Seta o resultado com a peça
resultado.peçaDesenho = peçaDesenho;
// Inverte os valores das coordenadas
for (int i = 0; i < 4; ++i)
{
resultado.setX(i, y(i));
resultado.setY(i, -x(i));
}
// Retorna o desenho invertido
return resultado;
}
// Gira o desenho para a direita
public Desenho girarDireita ()
{
// Se a peça for quadrada não gira, e retorna
if (peçaDesenho == TetrisShape.QuadradoDesenho)
{ return this; }
// Cria um resultado
Desenho resultado = new Desenho();
// Seta o resultado com a peça
resultado.peçaDesenho = peçaDesenho;
// Inverte os valores das coordenadas
for (int i = 0; i < 4; ++i)
{
resultado.setX(i, -y(i));
resultado.setY(i, x(i));
}
// Retorna o desenho invertido
return resultado;
}
}
Pronto!! Concluímos a classe Desenho! Uhuuuuu, observando a classe podemos claramente dizer que ela realiza o desenho abstratamente, ou seja, ela somente seta para uma peça os parâmetros de coordenadas de acordo com o desenho randômico (selecionando um numero gerado para o computador). No próximo tutorial desenvolveremos a classe chamada Quadro, desenharemos graficamente as peças e manipularemos o jogo. Esperam que tenham aproveitado a explicação e todos comentários durante o código.
Nenhum comentário:
Postar um comentário