Ola pessoal esta eu inutilizado na minha casa, programando um joguinho de palavras cruzadas em java, quado de repente, me deparei com a realidade e percebi que meu codigo esta uma merda… funcionando quase tudo mais muito ruim mesmo. Alguem aqui que tenha tempo para olhar e disposição para olhar este codigo me apontaria uma solução melhor para isto??
[code]import java.awt.;
import java.awt.event.;
import javax.swing.*;
public class Jogo extends JFrame
implements KeyListener
{
//atributos
private final int someMuda = 25;
private final int tamanho = 23;
private int aondeX = 1;
private int aondeY = 1;
private int posX = 28;
private int posY = 28;
private char letra;
private boolean impriLetra = false;
private boolean reImpriLetra = false;
private char [][]gravaLetra = new char[10][10];
//construtor
public Jogo(){
super("Jogando");
showFrame();
}
//metodos
public void paint(Graphics g)
{
if(!impriLetra)
{
super.paint(g);
//desenha o jogo
g.setColor(Color.black);
for(int count = 0; count <= 275; count+=25)
{
g.fillRect(count, 25, 3, 250);
}
for(int count = 0; count <= 275; count += 25)
{
g.fillRect(25, count, 250, 3);
}
//pinta os quadrados
g.setColor(Color.blue);
g.fillRect(posX, posY, 22, 22);
}
//imprime novas letras
g.setColor(Color.black);
g.setFont(new Font("SansSerif", Font.BOLD, 15));
g.drawString(letra+"", posX+5, posY+15);
impriLetra = false;
reImpriLetra = true;
//Reimpri as letras ja imprimidas
//quando da o super.paint(g) limpa tudo e eu preciso que as letra continuem
if(reImpriLetra)
{
for(int i=0; i<10; i++)
for(int j=0; j<10; j++){
g.setColor(Color.black);
g.setFont(new Font("SansSerif", Font.BOLD, 15));
g.drawString(gravaLetra[i][j]+"",((i+1)*25)+8, ((j+1)*25+18));
}
reImpriLetra = false;
}
}
//Mostra o Frame
public void showFrame()
{
addKeyListener(this);
setSize(315, 400);
setVisible(true);
gravaLetra = inicializa(gravaLetra);
}
//Implementação da interface KeyListener
public void keyTyped(KeyEvent e){}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()>=37&&e.getKeyCode()<=40)
{
gravaLetra[aondeX-1][aondeY-1] = letra;
letra = ' ';
reImpriLetra = true;
if(e.getKeyCode()==39)
{
if(aondeX == 10)
{
posX = 28;
aondeX = 1;
}
else
{
posX+=25;
aondeX++;
}
}
if(e.getKeyCode()==37)
{
if(aondeX==1)
{
posX+=(25*9);
aondeX=10;
}
else
{
posX-=25;
aondeX--;
}
}
if(e.getKeyCode()==38)
{
if(aondeY==1)
{
aondeY = 10;
posY+=(25*9);
}
else
{
aondeY--;
posY-=25;
}
}
if(e.getKeyCode()==40)
{
if(aondeY==10)
{
posY=28;
aondeY=1;
}
else
{
posY+=25;
aondeY++;
}
}
if(gravaLetra[aondeX-1][aondeY-1]!=' ')
{
letra = gravaLetra[aondeX-1][aondeY-1];
gravaLetra[aondeX-1][aondeY-1] = ' ';
//System.err.println(letra+"");
}
repaint();
}
else
{
if(letra!=' ')
{
gravaLetra[aondeX-1][aondeY-1] = ' ';
impriLetra = true;
repaint();
}
impriLetra = true;
letra = Letra.retornaLetra(e.getKeyCode());
reImpriLetra = true;
repaint();
}
}
public void keyReleased(KeyEvent e){}
public char[][] inicializa(char a[][])
{
for(int i=0; i<10; i++)
for(int j=0; j<10; j++)
a[i][j] = ' ';
return a;
}
}[/code]
[code]Clase Letra -> um pessima classe, fazendo quem inventou a orientação ao objecto remoer no cachão!!
public class Letra{
public static char retornaLetra(int a)
{
switch(a)
{
case 65:
return 'A';
case 66:
return 'B';
case 67:
return 'C';
case 68:
return 'D';
case 69:
return 'E';
case 70:
return 'F';
case 71:
return 'G';
case 72:
return 'H';
case 73:
return 'I';
case 74:
return 'J';
case 75:
return 'K';
case 76:
return 'L';
case 77:
return 'M';
case 78:
return 'N';
case 79:
return 'O';
case 80:
return 'P';
case 81:
return 'Q';
case 82:
return 'R';
case 83:
return 'S';
case 84:
return 'T';
case 85:
return 'U';
case 86:
return 'V';
case 87:
return 'W';
case 88:
return 'X';
case 89:
return 'Y';
case 90:
return 'Z';
}
return ' ';
}
}[/code]