示例#1
0
    static public int punteggio    = 0;                                // Messaggio per contenere il punteggio accumulato in una partita

    // Start is called before the first frame update
    void Start()
    {
        refGeneratore            = GameObject.FindGameObjectWithTag("GeneratoreCarte").GetComponent <GeneratoreCarte>(); // Prendiamo la referenza del generatore di carte
        refViewManager           = GameObject.FindGameObjectWithTag("ViewManager").GetComponent <ViewManager>();         // Prende l'oggetto con il tag ComboManager
        refAudioManager          = GameObject.FindGameObjectWithTag("AudioManager").GetComponent <AudioManager>();       // Prende l'oggetto con il tag AudioManager in modo da averlo disponibile in ogni scena visto che il GameManager è sempre presente
        refLevelManager          = GameObject.FindGameObjectWithTag("LevelManager").GetComponent <LevelManager>();       // Prende l'oggetto con il tag LevelManager
        GameObject[,] mazzoCarte = refGeneratore.getMazzoCarte();                                                        // Recuperiamo il mazzo di carte generato dal generatore
        refViewManager.GiraCarteMazzo(mazzoCarte);                                                                       // Lancia il metodo che gira le carte a inizio partita
        punteggio = 0;                                                                                                   // Azzeriamo il punteggio ad inizio partita visto che potrebbe essere ancora presente quello della partita precedente
    }
    // Start is called before the first frame update
    void Start()
    {
        refGeneratore            = GetComponent <GeneratoreCarte>();                                // Prendiamo la referenza del generatore di carte
        GameObject[,] mazzoCarte = refGeneratore.getMazzoCarte();                                   // Recuperiamo il mazzo di carte generato dal generatore
        object[] carteCaricate = Resources.LoadAll("Memory1/Cards/PNG-cards-1.3/", typeof(Sprite)); // Carica le Sprite in un array di oggetti. Nota: Resources accede alla cartella Resources salvata in Assets

        spritesCarte = new Sprite[carteCaricate.Length];                                            // Creiamo un array di Sprites

        // Cicliamo per fare la conversione da oggetto generico a Sprite per ogni Sprite caricata
        for (int i = 0; i < carteCaricate.Length; i++)
        {
            spritesCarte[i] = (Sprite)carteCaricate[i];
        }

        posizioniCarte = refGeneratore.getPosizioniCarte(); // Recuperiamo il vettore di posizioni iniziali dalla referenza al generatore
        // Chiamiamo il metodo che mischia le carte
        Shuffle(posizioniCarte);

        // Cicliamo 8 volte per valorizzare gli attributi delle coppie di carte
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j = j + 2)
            {
                numeroSpriteRandom = Random.Range(0, 67); // Generiamo il valore della sprite carta assicurandoci con l'HashSet che non sia già stato generato in precedenza
                while (!checkCartaGenerata.Add(numeroSpriteRandom))
                {
                    numeroSpriteRandom = Random.Range(1, 14);
                }

                // Assegnamo le sprite della coppia di carte
                mazzoCarte[i, j].GetComponent <ScriptCarta>().SetImmagineCarta(spritesCarte[numeroSpriteRandom]);
                mazzoCarte[i, j + 1].GetComponent <ScriptCarta>().SetImmagineCarta(spritesCarte[numeroSpriteRandom]);

                // Assegnamo la posizione alla coppia di carte
                mazzoCarte[i, j].transform.position     = posizioniCarte[i * 4 + j];
                mazzoCarte[i, j + 1].transform.position = posizioniCarte[i * 4 + j + 1];
            }
        }
    }