Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    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

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da JavaAddicted Visualizza il messaggio
    Ho seguito i tuoi consigli
    Nì ... alcune cose non le hai proprio seguite ...

    Capisco che sei all'inizio ma innanzitutto:
    - metti i campi di istanza private.
    - metti i metodi "accessori" getter/setter public.
    - metti i costruttori public
    (se non ci sono altre esigenze ben più precise .... in Mazzo e Giocatore non hai fatto nulla di tutto questo!!)

    Poi hai usato un HashSet. Di per sé HashSet non garantisce "casualità". In altre parole, HashSet non è certo fatto per fare da generatore di dati "pseudo" casuali.


    Quote Originariamente inviata da JavaAddicted Visualizza il messaggio
    Il mio dubbio è come faccio a dire al programma di restituirmi le carte che ho pescato? Ho provato un sort però mi da errore.
    Da quanto posso capire, devi ordinare secondo l'ordinamento di Briscola/Scopone (che sono dei comparator), le N carte estratte dal giocatore.
    Bene:
    - l'oggetto Giocatore ce l'hai
    - le carte pescate dal Giocatore le hai (sono in Giocatore, nella lista che devi passare a sort)
    - il comparatore (Briscola/Scopone) ce l'hai, che devi passarlo al sort

    Quindi quale è il dubbio?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.