Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    17

    [JAVA] Progetto x il semestre

    OK, per chi ha voglia di fare un pò di esercizio... potete aiutarmi col progetto che devo consegnare fra 2 settimane? Grazie mille.

    CONSEGNA

    Per il main non ci sono problemi (spero...), i dubbi sorgono nella creazione delle classi. Le ho già fatte tutte a parte quella "Mazzo".

    CLASSE CARTA
    codice:
    public abstract class Carta{
    	public String nomePers;				//attributo
    
    public Carta(String nomePers){			//costruttore
    	this.nomePers=nomePers;
    }
    
    public String getNome(){	//metodo che restituisce il nome del personaggio della carta
    	return nomePers;
    }
    
    public void setNome(String nome){	 //metodo per settare il nome del personaggio della carta
    	nomePers=nome;
    }
    
    public String toString(){			//metodo toString
    	return "Nome personaggio: "+nomePers;
    }
    
    }
    CLASSE CARTANORMALE
    codice:
    public class CartaNormale extends Carta{
    	public int dif;
    	public int att;					//attributi
    
    public CartaNormale(String nomePers, int dif){		//costruttore con String + 1 intero
    	super(nomePers);
    	this.dif=dif;
    	this.att=100-dif;
    }
    
    public int getA(){			//metodo che restituisce il valore d'attaco
    	return att;
    }
    
    public int getD(){			//metodo che restituisce il valore di difesa
    	return dif;
    }
    
    public void setA(int a){			//metodo per settare il parametro attacco
    	att=a;
    }
    
    public void setD(int d){			//metodo per settare il parametro difesa
    	dif=d;
    }
    
    public String toString(){			//metodo toString
    	return "Nome personaggio: "+nomePers+"\nValore attacco: "+att+"\nValore difesa: "+dif;
    }
    
    }
    CLASSE CARTAJOLLY

    codice:
    public class CartaJolly extends Carta{
    	public int pe;						//attributi
    
    public CartaJolly(String nomePers, int pe){			//costruttore
    	super(nomePers);
    	this.pe=pe;
    }
    
    public double getPE(){			//metodo che restituisce il Power Enhancement
    	return pe;
    }
    
    public String toString(){			//metodo toString
    	return "Nome personaggio: "+nomePers+"\nValore Power Enhancement: "+pe;
    }
    
    }
    CLASSE MAZZO

    Io l'ho iniziata così
    codice:
    public class Mazzo{
    	public int n;
    	public Carta[] mazzo=new Carta[n];
    
    public Mazzo (int numCarte){			//costruttore di un mazzo con n carte
    	n=numCarte;
    }
    e poi buio totale.... come faccio ad aggiungere una carta alla fine dell'array di carte (metodo <void addCarta>)?

    GRAZIE

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [JAVA] Progetto x il semestre

    Originariamente inviato da st1v
    OK, per chi ha voglia di fare un pò di esercizio... potete aiutarmi col progetto che devo consegnare fra 2 settimane? Grazie mille.
    Offro lavoro/collaborazione
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    17
    eh sì, mi rendo conto che è un pò lungo... allora vediamo di ridurre il tutto all'ultima frase (che poi è quella il mio problema):

    Ho un array vuoto del tipo Mazzo[] Carte=new Mazzo[20] (mazzo costituito da 20 carte): come faccio per aggiungere un oggetto Carta in prima, seconda,...,ventesima posizione con un metodo del tipo <void addCarta(Carta cartaDaAggiungere)> passandogli come parametro cartaDaAggiungere la carta da aggiungere al mazzo?

    non so se ho spiegato bene...THX

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da st1v
    Ho un array vuoto del tipo Mazzo[] Carte=new Mazzo[20] (mazzo costituito da 20 carte): come faccio per aggiungere un oggetto Carta in prima, seconda,...,ventesima posizione con un metodo del tipo <void addCarta(Carta cartaDaAggiungere)> passandogli come parametro cartaDaAggiungere la carta da aggiungere al mazzo?
    Innanzitutto la variabile di istanza 'n' non servirebbe.

    In sostanza hai un mazzo di cui imponi tu una dimensione massima e con la possibilità di aggiungere carte man mano che servono. Hai quindi bisogno di una variabile, inizialmente a 0, che faccia da contatore (e allo stesso tempo indice di inserimento) del numero di carte "logico" nell'array (che non è la dimensione fisica dell'array!).

    Poi devi stabilire quali operazioni vuoi poter compiere, ad esempio: a) aggiunta, b) rimozione, c) get/set di una carta ad un certo indice e naturalmente fornire al di fuori la dimensione logica del mazzo.
    Insomma ... dovresti "modellare" la classe in modo che dal di fuori si "veda" un mazzo gestibile/espandibile di carte (fino ad un massimo, nel tuo caso).


    P.S.: vedo troppi campi di istanza marcati 'public'. Questo è male. Hai compreso bene i principi della OOP? Il principio di "incapsulazione" ad esempio?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    17
    Grazie per la risposta, e sì, poi dovrò mettere nomePers e altri in private, hai ragione...
    Comunque il mio problema che non riesco a risolvere è riguardo il metodo void addCarta(Carta cartaDaAggiungere): innanzitutto non posso creare un oggetto Carta perchè istanza di una classe astratta, e poi come faccio a distinguere fra l'aggiunta di carte normali (15) e carte Jolly (5) costruite entrambe con (String nomePers,int num), dove num nel caso delle carte normali è il valore di difesa e nel caso delle carte jolly è il valore di power enhancement...

    Cosa intendi per "Hai quindi bisogno di una variabile, inizialmente a 0, che faccia da contatore (e allo stesso tempo indice di inserimento) del numero di carte "logico" nell'array (che non è la dimensione fisica dell'array!)"? Un ciclo for(int i=0;i<n;i++)?

    Grazie mille per l'aiuto.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da st1v
    innanzitutto non posso creare un oggetto Carta perchè istanza di una classe astratta
    E allora?? Mazzo non deve mica istanziare oggetti di tipo Carta o di sue sottoclassi!!! Deve solo "tenere" dei reference ad oggetti che sono sicuramente di tipo Carta!

    Originariamente inviato da st1v
    e poi come faccio a distinguere fra l'aggiunta di carte normali (15) e carte Jolly
    Mazzo probabilmente non dovrebbe nemmeno "saperlo" .... è un mazzo ... "sa" solo che contiene N carte. Punto.

    Originariamente inviato da st1v
    Cosa intendi per "Hai quindi bisogno di una variabile, inizialmente a 0, che faccia da contatore (e allo stesso tempo indice di inserimento) del numero di carte "logico" nell'array (che non è la dimensione fisica dell'array!)"? Un ciclo for(int i=0;i<n;i++)?
    No.
    Istanzi un Mazzo di 20 carte, il tuo array interno 'mazzo' conterrà inizialmente 20 bei reference a null.
    Vuoi aggiungere una carta ... a quale indice la aggiungi? 0 ovviamente. Quindi la dimensione logica diventa poi 1. E la successiva carta? All'indice 1 ovviamente (che era la dimensione logica di prima) e la nuova dimensione logica diventa 2. E così via ....

    Cosa ti fa pensare? Di tenere una variabile che indica il numero "logico" di carte nell'array e al tempo stesso indica anche il prossimo indice per l'inserimento.


    E nota: come hai istanziato l'array con
    public Carta[] mazzo=new Carta[n];

    non va bene. In quel momento quel 'n' è 0. Solo dopo verrà assegnato il valore del parametro del costruttore alla variabile 'n'.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    17
    Quindi era giusto
    public Carta[] mazzo=new Carta[20];

    così mi crea un array di 20 carte, però poi quelle del giocatore e del pc sono solo 8.
    E devo aggiungere una variabile di istanza n che tenga conto dell'indice dell'array mazzo[n] a cui sono arrivato, giusto?
    Come faccio per aggiungere le carte poi...
    vi prego di aiutarmi senò non ne vengo più a capo... grazie..

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    10
    Se la puoi usare, per rappresentare il vettore di Carte sostituirei l'array con un'ArrayList (package java.util), più potente e flessibile degli array, che espone già un metodo di Add (sia append sia in uno specifico indice) e ti libera dal problema della dimensione massima degli array. Ma temo che questo approccio sia un po' antididattico.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    17
    Eh sì, l'ho visto anch'io, sarebbe perfetto... peccato che non si possa usare!
    Cmq alla fine la classe Mazzo l'ho scritta così:

    codice:
    public class Mazzo{
    	public Carta[] carte;				//attributi
    	
    public Mazzo(Carta[] carte){				//costruttore
    	this.carte=carte;
    }
    così posso specificare a posteriori la dimensione dell'array senza essere vincolato, visto che ne devo fare uno da 20 e due da 8.
    E comunque sono ancora in alto mare per il metodo addCarta...

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da st1v
    così posso specificare a posteriori la dimensione dell'array senza essere vincolato, visto che ne devo fare uno da 20 e due da 8.
    E comunque sono ancora in alto mare per il metodo addCarta...
    Ma al costruttore cosa passi?? Un array vuoto?? O già popolato?? Perché in quest'ultimo caso non avrebbe più senso un addCarta().
    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.