Problema con programma. AIUTO!
Posted by richard.greco on 29-12-2014 13:09
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) v3.8 and vBulletin v2.3.1
Copyright © 2000 - 2002 Jelsoft Enterprises Limited