Palavras cruzadas - jogo em java

1 resposta
Abdon

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??

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;
        }
        
        
            
}
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 ' ';

        }
}

1 Resposta

_fs

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:

Criado 9 de dezembro de 2004
Ultima resposta 9 de dez. de 2004
Respostas 1
Participantes 2