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.
…
[code]
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;
}
}
} [/code]
Na mina classe canvas,entre muitas outras coisas tem.
[code]
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) {
}
} [/code]
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.
[code]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;
}
} [/code]
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!