Palavras cruzadas - jogo em java

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]

Seus problemas acabaram :smiley:

http://fivedots.coe.psu.ac.th/~ad/jg/

Antes de baixar os capítulos, recomendo ter bastante comida estocada em volta de você e colocar seu computador no banheiro, pois não vai conseguir parar :smiley: