Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Java] Vector di vector

    Ciao a tutti. Sono un nuovo entrato. Ho sentito che riuscite a dare una soluzione a tutti i casi che vi presentano. Il caso che vi vorrei porre è il seguente:
    Sto realizzando un programma che gestisce un'archivio di carte da gioco. In questo gioco di carte, le carte sono raccolte in espansioni. Quindi informaticamente parlando creo un vector che chiamo espansioni. Ogni espansione ha le sue caratteristiche (quindi creo un costruttore che avrà all'interno il nome dell'espansione e l'anno di uscita dell'espansione). All'interno di una espansione ho delle carte. La carta ha le sue caratteristiche (quindi creo un costruttore che avrà all'interno il nome e la descrizione delle carte).

    1 Domanda) All'interno del costruttore espansione devo creare già subito un Vector di tipo carta, sapendo che le carte sono all'interno dell'espansione: ossia devo scrivere così nel costruttore?

    private Vector <Carta> carte;

    2 Domanda) Se io volessi andare a visualizzare le informazioni di una carta che è contenuta nel Vector carte <Carta> che a sua volta é contenuto nel Vector espansioni <Espansioni>, che tipo di codice devo scrivere?

    Io stavo per scrivere così: espansioni.get(posizione_espansione).PrendiVectorC arta.(nome_carta, descrizione_carta).

    So che è errato quello che ho scritto, ma che tipo di codice devo scrivere?
    :'(

  2. #2
    Questo è il codice della seconda domanda.

    codice:
    public void modifica_espansione()
    {
    	for(i = 0; i < espansioni.size(); i++)
    	{System.out.println(i + ". " + espansioni.get(i).prendi_codice_espansioni());}
    	N.stampa_vuoto();
    	System.out.prinlnt("Quale espansione vuoi modificare?");
    	comando0 = N.codifica_numero_naturale();
    	N.stampa_vuoto();
    	do
    	{
    	System.out.println("Cosa vuoi modificare di questa espansione?");
    	System.out.println("1. Nome");
    	System.out.println("2. Anno di uscita");
    	System.out.println("3. Carte all'interno dell'espansione");
    	comando1 = N.codifica_numero_naturale();
    	switch(comando1)
    	{
    	 case 1:  cambia_nome(comando0);                           end0 = true; break;
    	 case 2:  cambia_anno(comando0);                         end0 = true; break;
    	 case 3:  cambia_carte(comando0);                           end0 = true; break;
    	 default: System.out.println(OPZIONE_F); N.stampa_vuoto(); end0 = false; break;
    	}
            }while(!end0);
    	}
    
            public void cambia_carte(int comando0)
    	{
    //Non so cosa scrivere. Qui dovrei visualizzare le carte contenute nell'espansione,                             poi selezionare la carta e vedere le sue informazioni da cambiare.
    	}
    Il vector delle espansioni è:
    static Vector <Espansione> espansione;

    Il vector delle carte è:
    static Vector <Carta> carte;

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Esiste una sezione apposita dedicata al linguaggio Java, motivo per cui ho spostato la discussione.

    Inoltre, il codice va formattato usando l'apposito tag [CODE].

    Rimando al Regolamento per queste e altre considerazioni da tenere a mente in futuro.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: [Java] Vector di vector

    Originariamente inviato da Merlino90X
    1 Domanda) All'interno del costruttore espansione devo creare già subito un Vector di tipo carta, sapendo che le carte sono all'interno dell'espansione: ossia devo scrivere così nel costruttore?

    private Vector <Carta> carte;
    Direi di sì. Se il numero di carte non è noto a priori e non puoi/vuoi usare un ArrayList (simile al Vector, ma più adatto a questi scopi) allora va bene così.

    2 Domanda) Se io volessi andare a visualizzare le informazioni di una carta che è contenuta nel Vector carte <Carta> che a sua volta é contenuto nel Vector espansioni <Espansioni>, che tipo di codice devo scrivere?
    Ci sono due possibilità:

    1) La classe Espansione fornisce un metodo per accedere al Vector di carte:
    codice:
    class Espansione {
       ...
       private Vector<Carta> carte;
       ...
       public Vector<Carta> getCarte() { return carte; }
    }
    In questo modo, per accedere ad una carta si fa così:

    codice:
    espansioni.elementAt( indice_dell_espansione)
              .getCarte().elementAt( indice_della_carta ).getNomeCarta();
    
    oppure
    
    Vector<Carta> vc = espansione.elementAt( indice_dell_espansione ).getCarte();
    Carta c = vc.elementAt( indice_della_carta );
    String nomeCarta = c.getNomeCarta();
    2) La classe Espansione potrebbe fornire direttamente un metodo per chiedere una determinata carta, togliendo un passaggio all'utente finale:

    codice:
    class Espansione {
       ...
       private Vector<Carta> carte;
       ...
       public Carta getCarta(int indice) { return carte.elementAt(indice); }
    }
    E verrebbe usata in questo modo:

    codice:
    espansioni.elementAt( indice_dell_espansione ).getCarta( indice_della_carta ).getNomeCarta();
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Grazie LELEFT. Mi hai risolto un dilemma! Hihi!

    Alka grazie per avermi detto della discussione. La prossima volta non succederà. Te lo garantisco.

    Thanks so much!

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.