Ho seguito i tuoi consigli e mi è uscito questo codice:
Classe Carta:
codice:
package gioco2;
public class Carta {
public String seme;
public int valore;
Carta(String a,int b){
seme=a;
valore=b;
};
}
Classe giocatore:
codice:
package gioco2;
import java.util.ArrayList;
import java.util.List;
public class Giocatore {
List g;
Giocatore(int numerocarte, Mazzo mazzo){ //sceglie quante carte vuole e le estrae
g= new ArrayList();
for(int i=0;i<numerocarte;i++){
Carta tmp =mazzo.estraimazzo(); //estrae dal mazzo quante volte hai scelto di pescare
g.add(tmp);
}
}
}
Classe Mazzo:
codice:
package gioco2;import java.util.*;
public class Mazzo {
Set mazzo; // inizializzo il mazzo;
Mazzo(){ // creo un set mazzo, costruttore
this.mazzo= new HashSet();
for(int i=1;i<11;i++){
Carta c1= new Carta("Bastoni",i);
mazzo.add(c1);
Carta c2= new Carta("Spade",i);
mazzo.add(c2);
Carta c3= new Carta("Coppe",i);
mazzo.add(c3);
Carta c4= new Carta("Danari",i);
mazzo.add(c4);
}
}
Carta estraimazzo(){ //estraggo carta casuale dal mazzo
Iterator x = mazzo.iterator();
Object tmp=x.next();
mazzo.remove(tmp);
Carta res=(Carta)tmp;
return res;
}
}
Classe Briscola:
codice:
package gioco2;
import java.util.Comparator;
/**
*
* @author FinallyDou
*/
public class Briscola implements Comparator<Carta> {
@Override
public int compare(Carta o1, Carta o2) { //ordina prima per numero poi per seme
int res=0;
if(o1.valore<o2.valore) res=-1;
else if(o1.valore==o2.valore){
int x=o1.seme.compareTo(o2.seme);
if(x<0) res=-1;
else if(x==0) res=0;
else res=1;
}
else res=1;
return res;
}
}
Classe Scopone:
codice:
package gioco2;
import java.util.Comparator;
/**
*
* @author FinallyDou
*/
public class Scopone implements Comparator <Carta> {
@Override
public int compare(Carta o1, Carta o2) { //ordina prima per seme poi per numero
int res=0;
int x=o1.seme.compareTo(o2.seme);
if(x<0) res=-1;
else if(x==0)
if(o1.valore==o2.valore) res=0;
else if(o1.valore<o2.valore) res=-1;
else
res=1;
return res;
}
}
Classe Main:
codice:
package gioco2;
import javax.swing.JOptionPane;
public class Gioco2 {
public static void main(String[] args) {
Mazzo m = new Mazzo();
Giocatore g = new Giocatore(Integer.parseInt(JOptionPane.showInputDialog("Quante carte vuoi?")),m);
int risp=Integer.parseInt(JOptionPane.showInputDialog("1.Ordina briscola 2.Ordina scopa"));
switch(risp){
case 1:
Briscola b = new Briscola();
break;
case 2:
Scopone s = new Scopone();
break;
}
}
}
L'esercizio chiedeva di ordinare le carte che pescavi secondo la briscola o scopone, nel main ho fatto un switch per scegliere tra le diverse modalità. Il mio dubbio è come faccio a dire al programma di restituirmi le carte che ho pescato? Ho provato un sort però mi da errore.
Scusa la mia ignoranza ma sono alle prime armi in java
. Ti ringrazio per la pazienza