Salve ragazzi.
Mi sono bloccato in un punto. Non riesco ad aggiornare il punteggio di un gioco. Come devo fare? questo è il codice del run
codice:
public void run(){
synchronized(o){
try{
o.wait();
System.out.println("Gioco. Io sono:"+name);
sleep(1000);
System.out.println("ciao!");
for (int i=0; i<kSedie; i++){
String sed="sedia"+i;
/*OccupaSedia disponibile = new OccupaSedia(nPart,kSedie,nSess);
Sedia sedia = new Sedia(sed);*/
//sleep(1000);
System.out.println("Nome sedia:"+sedia.getNomeSedia());
System.out.println("Numero sedie disponibili:"+disponibile.getSedie());
//sleep(1000);
System.out.println("Occupato:"+sedia.getStato("sedia"+i));
//sleep(1000);
if (sedia.getStato(sedia.getNomeSedia())==false){
sedia.occupa(name,sedia.getNomeSedia(),sedia.getPunteggio());
disponibile.decrementaSedie();
//sleep(1000);
System.out.println(sedia.getNomeSedia()+" "+""+sedia.getPersona()+"Punteggio:"+sedia.getPunteggio());
//sleep(1000);
System.out.println("Numero sedie disponibili:"+disponibile.getSedie());
punteggio++;
System.out.println("totale"+punteggio);
stop();
}
else{
System.out.println("Sedia non disponibile");
//i++;
}
}
o.notifyAll();
}
catch(InterruptedException e) { return; }
}
Il problema è che mi restituisce sempre il punteggio pari a 1. Come devo fare? Questa è la classe Sedia:
codice:
public class Sedia extends Thread {
public Sedia(String name){ nomeSedia=name;}
public String getNomeSedia(){
return nomeSedia;
}
public int getPunteggio(){
return punteggio;
}
public boolean getStato(String sedia){
return statoSedia;
}
public String getPersona(){
return persona;
}
public synchronized void occupa(String pers, String nameSedia, int punt){
try{
statoSedia=true;
persona = pers;
nomeSedia = nameSedia;
punteggio=punt+1;
notifyAll();
}
catch(Exception x){System.out.println("Lanciata eccezione metodo occupa");}
}
private String nomeSedia;
private String persona;
private boolean statoSedia;
private int punteggio;
Attendo una celere risposta. Grazie a tutti.