Preciso de uma pequena ajuda.Colocarei primeiro o codigo.Este código está na midlet da minha aplicação e criei uma variavel chamada “indice”
[code]private void open() {
try {
nivel = RecordStore.openRecordStore("Nivel", true);
}
catch (RecordStoreNotFoundException e) {
System.out.println("-- RecordStore inexistente");
}
catch (RecordStoreException e) {
System.out.println("-- Outro erro");
}
}
private void close() {
try {
nivel.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(indice);
dos.flush();
byte[] data = baos.toByteArray();
[size=9][/size][size=12][/size][color=cyan][/color][color=darkred][/color]
if(nivel.getNumRecords()!=0){
//atualiza o id com o valor do indice da variavel o sobrescrevendo
nivel.setRecord(1,data, 0, data.length);
}
else{
//adiciona caso não tenha nada salvo
nivel.addRecord(data, 0, data.length);
}
baos.close();
dos.close();
}
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");
}
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{
indice=dis.readInt();
dis.close();
}
catch(IOException ex){
}
}
public void load_data(){
try {
open();
// checka se ta vazio
if (nivel.getNumRecords() != 0) {
load_nivel(nivel.getRecord(1));
}
close();
} catch (RecordStoreException ex) {
}
}[/code]
Esta mesma variavel sera usada para armazenar valores que lhe serão atribuídas atraves de um comando no form do nivel. Eis o codigo.
[code]public void commandAction(Command cmd, Displayable display)
{
if(display==mainNivel){
if(cmd.getCommandType()==Command.BACK)
{
display(this.initMainForm());
}
if(cmd==comSelect){
switch(mainNivel.getSelectedIndex()){
case 0:
mostrarMsgNivel();
indice=1;
SaveNivel();
case 1:
mostrarMsgNivel();
indice=2;
SaveNivel();
case 2:
mostrarMsgNivel();
indice=3;
SaveNivel();
}
}
}[/code]
pronto ou seja no form nivel o usuario clica no primeiro item da lista e a variavel indice recebe 1,clica na segundo item e recebe 2 e assim por diante,depois salva esta variavel com o record store e a sobrescreve caso seja necessário.Agora vão para o canvas do meu jogo, se alguma coisa tiver errada aew em cima por favor podem concertar.
Há um método no Canvas chamada valorizaJogada responsável por valorizar a jogada do usuario no jogo da velha.
[code]public void valorizaJogada( 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 )){
nivelFacil();
repaint();
}
break;
}
}
else{
colunaSelec = colunaSelec + 83;
}
}
linhaSelec = linhaSelec + 100;
colunaSelec = 0;
}
}[/code]
Bem minha duvida é bm nessa parte aqui.
if ( ( vencedor != 'x' ) && ( jogada <= 5 )){
nivelFacil();
repaint();
}
Quero fazer essa comparação comparando com o valor armazenado no meu record store,para da entrada nos metodos dos niveis .Tipo pensei muitas coisas,as eu queria algo mais ou menos assim:
[code]public void valorizaJogada( int col, int lin)
{
…
if ( ( vencedor != 'x' ) && ( jogada <= 5 )&&(midlet.nivel.getRecord(1)==0)){
nivelFacil();
repaint();
}
}
…
}[/code]
Crio uma variavel do tipo midlet chama o RS da mesma classe vjo o que tm gravado no seu id.Se for igual a 0 nivl facil,igual 1 nivl mdio e assim por diante.Porem o codigo acima da erro tem outras formas que tb n deu,como chamar o método de leitura da variavel dentro do metodo valoriza Jogada e então fazer a comparação .Bem qualquer ajuda é bem vinda,para resolver este dilema.
Desde já agradeço.