List e Rms

0 respostas
STRAUSS69

Preciso de ajuda.Quero amarrar o itens de uma lista aos ids do record store para amarrar os niveis de dificuldade..Aqui vai o codigo.

No meu midlet possui a lista que eu quero.
...

Public VelhaCanvas jogo;   
  
public Displayable initNivel() {   
    if (mainNivel == null) {   
   mainNivel=new List("Nível",List.EXCLUSIVE   
           );   
    mainNivel.append("Facil",   null);   
    mainNivel.append("Medio",   null);   
    mainNivel.append("Dificil",   null);   
  Select = new   Command("Selecionar", Command.OK, 1);   
  
    mainNivel.setSelectCommand(comSelect);   
    mainNivel.addCommand(volta);   
     mainNivel.addCommand(seta);   
    mainNivel.setCommandListener(this);   
    }   
    return mainNivel;   
  }   
 public void commandAction(Command cmd, Displayable display)   
    {   
  
        if(display==mainNivel){   
  
            if(cmd.getCommandType()==Command.BACK)   
            {   
           display(this.initMainForm());   
  
            }   
            if(cmd==seta){   
  
            switch(mainNivel.getSelectedIndex()){   
                case 0:   
                    mostrarMsgNivel();   
                    jogo.indicador=11;   
  
                    jogo.SaveNivel();   
  
                case 1:   
                    mostrarMsgNivel();   
                    jogo.indicador=12;   
  
                    jogo.SaveNivel();   
  
                case 2:   
                    mostrarMsgNivel();   
                    jogo.indicador=13;   
  
                }   
            }   
        }

Na mina classe canvas,entre muitas outras coisas tem.

Public int indicador;   
public int marcador;   
  
private void open() {   
    try {   
  
        n = RecordStore.openRecordStore("Nivel", true);   
    }   
    catch (RecordStoreNotFoundException e) {   
        System.out.println("-- RecordStore inexistente");   
    }   
    catch (RecordStoreException e) {   
        System.out.println("-- Outro erro");   
    }   
}   
private void close() {   
    try {   
        n.closeRecordStore();   
    }   
    catch( RecordStoreNotOpenException e ){   
        System.out.println("-- O Record Store esta fechado");   
    }   
    catch( RecordStoreException e ){   
        System.out.println("-- Outro erro");   
    }   
}   
public void SaveNivel(){   
open();   
          
 try {   
 ByteArrayOutputStream baos = new ByteArrayOutputStream();   
        DataOutputStream dos = new DataOutputStream(baos);   
       dos.writeInt(indicador);   
  
        byte[] data=baos.toByteArray();   
        dos.flush();   
  
        if(n.getNumRecords()!=0){   
        //atualiza o id com o valor do indice da variavel o sobrescrevendo   
       n.setRecord(1, data, 0, data.length);   
  
        }   
        else {   
            //adiciona caso não tenha nada salvo   
       n.addRecord(data, 0, data.length);   
  
           }   
        baos.close();   
        dos.close();   
        loaddata();   
marca=n.getRecord(1, data,0);   
    }   
    catch (IOException e) {   
        System.out.println("-- Erro de IO");   
    }   
    catch (RecordStoreFullException e) {   
        System.out.println("-- Não existe espaço disponível");   
    }   
    catch( RecordStoreNotOpenException e ){   
        System.out.println("-- O Record Store esta fechado");   
    }   
    catch( RecordStoreException e ){   
        System.out.println("-- Outro erro");   
    }   
//loaddata();   
  
close();   
}   
public void load_nivel(byte[]data){   
  
   ByteArrayInputStream bais = new ByteArrayInputStream(data);   
    // creates a data input stream to read from   
    DataInputStream dis = new DataInputStream(bais);   
  
try{   
indicador=dis.readInt();   
  
dis.close();   
}   
  
catch(IOException ex){   
  
}   
  
}   
  
public void loaddata() {   
      try {   
    open();   
      // check if record store not empty   
      if (n.getNumRecords() != 0) {   
        load_nivel(n.getRecord(1));   
      }   
  
      close();   
    } catch (RecordStoreException ex) {   
    }   
}

Pois bem, a lógica que pensei é: O usuário clica na lista do nivel,a variável indicador recebe um valor e depois escrita no recordStore lembrando que esta variável é da classe VelhaCanvas e a lista é carregada e foi feita no midlet e depois a variável marcador recebe o Id do que foi salvo.O método SaveNivel adiciona se n tiver nada salvo e se tiver atualiza o mesmo id atraves do metodo setRecord().Fiz isso para finalmente chegar na minha duvida.

public void valorizaCaixa( int col, int lin)   
   {   
  
      linhaSelec = colunaSelec = 0;   
  
        for( int i=0; i<3; i++ ){   
            for( int j=0; j<3; j++ ){   
                if( ( linhaSelec == lin ) && ( colunaSelec ==col ) ){   
                    if ( caixa[i][j] == 0 ){   
                        caixa[i][j] = 1;   
                        verificaGanhador();   
                        repaint();   
  
                       if((vencedor!='x')&&(jogada<=5)&&(marcador==11)){   
  
                           nivelFacil();   
                           repaint();   
  
                       }   
                          if((vencedor!='x')&&(jogada<=5)&&(marcador==12)){   
  
                           medio();   
                           repaint();   
  
                       }   
                 if((vencedor!='x')&&(jogada<=5)&&(marcador==13)){   
  
                           Dificil();   
                           repaint();   
  
                       }   
                        break;   
                    }   
                }   
                else{   
                    colunaSelec = colunaSelec + 83;   
                }   
            }   
  
            linhaSelec  = linhaSelec + 100;   
            colunaSelec = 0;   
        }   
  
  
     }
Bem percebem que estou comparando o valor salvo dentro da variável marcador que contem o dado salvo no id 1 do rs.Porém esta comparação não esta dando certo.Parece ate que n tá salvando nada e o engraçado é que quando comparo com 0 (zero) dá certo.lol

O direito seria:usuario clica,variavel indicador recebe valor,salva,marcador recebe o dado no id 1 do rs e se for igual a 11 nivel facil,igual a 12 nivel medio, igual a 13 nivel dificil.Mas n chega nem perto de fazer essa logica.Alguem tem alguma ideia do que pode ta dando errado? Se eu n disse antes trata de um jogo da velha.Obrigado!

Criado 16 de setembro de 2009
Respostas 0
Participantes 1