Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi N - Z > Programmazione
 
Problema con programma. AIUTO!
Clicca QUI per vedere il messaggio nel forum
richard.greco
Buongiorno a tutti. Io ho un problema con un programma scritto da me. Sto creando un programma in java per giocare a solitario ed ho creato le classi Carta, Mazzo e Tavolo. Il mio problema arriva quando cerco di spostare le carte del tavolo da un "mazzetto" all'altro. Nell'immagine potete vedere che se sposto una carta alla volta funziona tutto, mentre se ne sposto più di una mi sposta solo quelle in posizione dispari!!!

Vi metto ora in allegato i codici di programma attinenti alla parte in questione

//estratto classe Carta//
protected int numero, seme;
protected boolean bol = false;

public Carta(int i, int j){
if(i>0 && i<14)
numero = i;
else
System.out.println("ERRORE: Il numero della carta deve essere compreso tra 1 e 13");

if(j>0 && j<5)
seme = j;
else
System.out.println("ERRORE: Il numero del seme deve essere compreso tra 1 e 4 (Cuori, Quadri, Fiori, Picche)");
}

public void setBol(boolean b){
bol = b;
}

public boolean getBol(){
return bol;
}
//

//estratto classe Mazzo//
public Mazzo(){
for(int i=1; i<14; i++)
mazzo.add(new Carta(i,1));
for(int i=1; i<14; i++)
mazzo.add(new Carta(i,2));
for(int i=1; i<14; i++)
mazzo.add(new Carta(i,3));
for(int i=1; i<14; i++)
mazzo.add(new Carta(i,4));
}


public Carta getCarta(int i){
return mazzo.get(i);
}

public int size(){
int k=0;
for(Carta c: mazzo)
k++;
return k;
}

public Carta estraiCarta(int i){
if(mazzo.size()==0){
System.out.println("ERRORE: inserire un numero tra 1 e mazzo.size()");
return new Carta(-1,-1);
} else {
Carta c = mazzo.get(i);
mazzo.remove(i);
return c;
}
}

public void insCartaDown(Carta c){
boolean bol = true;
for(Carta q: mazzo)
if(c.equals(q))
bol = false;
if(bol)
mazzo.add(c);
else
System.out.println("Carta gia' presente nel mazzo");
}
////

//estratto classe Tavolo//
public void sposta(int i, int j){
ArrayList<Carta> c = new ArrayList<Carta>();
for(int k=0; k<tav.get(i-1).size(); k++){
if(tav.get(i-1).getCarta(k).getBol()){
c.add(tav.get(i-1).estraiCarta(k));
}
}
for(int k=0; k<c.size(); k++){
tav.get(j-1).insCartaDown(c.get(k));
}
for(int k=0; k<7; k++)
if(tav.get(k).size()!=0)
tav.get(k).getCarta(tav.get(k).size()-1).setBol(true);
}

public void verita(){
for(int k=0; k<tav.size(); k++){
for(int h=0; h<tav.get(k).size(); h++){
System.out.print(tav.get(k).getCarta(h).getBol()+" ");
}
System.out.print(tav.get(k).size());
System.out.println();
}
}
////

i metodi che eseguo nella schermata sono i metodi "verita" e i metodi "sposta". Vorrei capire perché mi prende solo le carte "TRUE" in posizione dispari.
Grazie mille!!!

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate