コード例 #1
0
ファイル: UserInput.cs プロジェクト: Yggahs/Solitaire
    bool Bloccato(GameObject selezionato)
    {
        Selezionabile s2 = selezionato.GetComponent <Selezionabile>();

        if (s2.inPila == true)
        {
            if (s2.name == solitario.tripletteDistribuite.Last()) //se è l'ultima carta di una tripletta non è bloccata
            {
                return(false);
            }
            else
            {
                //print(s2.name + " è bloccata da " + solitario.tripletteDistribuite.Last());
                return(true);
            }
        }
        else
        {
            if (s2.name == solitario.bottoms[s2.riga].Last()) //controlla se è l'ultima carta
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
    }
コード例 #2
0
ファイル: UserInput.cs プロジェクト: Yggahs/Solitaire
    bool PilaValida(GameObject selezionato)
    {
        Selezionabile s1 = slot1.GetComponent <Selezionabile>();
        Selezionabile s2 = selezionato.GetComponent <Selezionabile>();

        //controlla se formano una pila valida

        if (!s2.inPila)
        {
            if (s2.top) //se nel top ordinare da asso a K
            {
                if (s1.seme == s2.seme || (s1.valore == 1 && s2.seme == null))
                {
                    if (s1.valore == s2.valore + 1)
                    {
                        return(true);
                    }
                }
                else
                {
                    return(false);
                }
            }
            else //se nel bottom mettere in pila con colori alternati
            {
                if (s1.valore == s2.valore - 1)
                {
                    bool carta1Rossa = true;
                    bool carta2Rossa = true;

                    if (s1.seme == "F" || s1.seme == "P")
                    {
                        carta1Rossa = false;
                    }

                    if (s2.seme == "F" || s2.seme == "P")
                    {
                        carta2Rossa = false;
                    }

                    if (carta1Rossa == carta2Rossa)
                    {
                        //print("Non valida");
                        return(false);
                    }
                    else
                    {
                        //print("Pila valida");
                        //punti += 5;
                        return(true);
                    }
                }
            }
        }
        return(false);
    }
コード例 #3
0
ファイル: UserInput.cs プロジェクト: Yggahs/Solitaire
    void AutoPila(GameObject selezionato)
    {
        for (int i = 0; i < solitario.topPos.Length; i++)
        {
            Selezionabile pila = solitario.topPos[i].GetComponent <Selezionabile>();
            if (selezionato.GetComponent <Selezionabile>().valore == 1)             //se è un asso
            {
                if (solitario.topPos[i].GetComponent <Selezionabile>().valore == 0) //e la posizione su top è vuota
                {
                    slot1 = selezionato;
                    Pila(pila.gameObject); //metti l'asso sulla posizione in top
                    break;                 //nella prima posizione vuota trovata
                }
            }
            else
            {
                if ((solitario.topPos[i].GetComponent <Selezionabile>().seme == slot1.GetComponent <Selezionabile>().seme) && (solitario.topPos[i].GetComponent <Selezionabile>().valore == slot1.GetComponent <Selezionabile>().valore - 1))
                {
                    //se è l'ultima carta, quindi non ha children
                    if (nessunChild(slot1))
                    {
                        slot1 = selezionato;
                        //trova un top che permette di mettere in pila automaticamente se esiste
                        string nomeUltimaCarta = pila.seme + pila.valore.ToString();
                        switch (pila.valore)
                        {
                        case 1:
                            nomeUltimaCarta = pila.seme + "A";
                            break;

                        case 11:
                            nomeUltimaCarta = pila.seme + "J";
                            break;

                        case 12:
                            nomeUltimaCarta = pila.seme + "Q";
                            break;

                        case 13:
                            nomeUltimaCarta = pila.seme + "K";
                            break;
                        }
                        GameObject ultimaCarta = GameObject.Find(nomeUltimaCarta);
                        Pila(ultimaCarta);
                        break;
                    }
                }
            }
        }
    }
コード例 #4
0
ファイル: AggiornaSprite.cs プロジェクト: Yggahs/Solitaire
    void Start()
    {
        List <string> mazzo = Solitaire.generaMazzo();

        solitario = FindObjectOfType <Solitaire>();
        userInput = FindObjectOfType <UserInput>();
        int i = 0;

        foreach (string carta in mazzo)
        {
            if (this.name == carta)
            {
                fronteCarta = solitario.fronteCarte[i];
                break;
            }
            i++;
        }
        spriteRenderer = GetComponent <SpriteRenderer>();
        selezionabile  = GetComponent <Selezionabile>();
    }
コード例 #5
0
ファイル: UserInput.cs プロジェクト: Yggahs/Solitaire
    void Pila(GameObject selezionato)
    {
        //se sopra un K o su una pila inferiore vuota posiziona le carte
        //altrimenti posiziona le carte con un yoffset negativo

        Selezionabile s1      = slot1.GetComponent <Selezionabile>();
        Selezionabile s2      = selezionato.GetComponent <Selezionabile>();
        float         yOffset = 0.3f;

        if (s2.top || (!s2.top && s1.valore == 13))
        {
            yOffset = 0;
        }

        slot1.transform.position = new Vector3(selezionato.transform.position.x, selezionato.transform.position.y - yOffset, selezionato.transform.position.z - 0.01f);
        slot1.transform.SetParent(selezionato.transform);

        if (s1.inPila) //rimuovi carte dalle triplette per prevenire carte duplicate
        {
            solitario.tripletteDistribuite.Remove(slot1.name);
            if (s2.CompareTag("Top"))
            {
                punti += 10;
            }
            else if (s2.CompareTag("Bottom"))
            {
                punti += 5;
            }
        }
        else if (s1.top && s2.top && s1.valore == 1) //permetti il movimento delle carte tra le pile top
        {
            solitario.topPos[s1.riga].GetComponent <Selezionabile>().valore = 0;
            solitario.topPos[s1.riga].GetComponent <Selezionabile>().seme   = null;
        }
        else if (s1.top) //tieni conto del valore dei top quando una carta viene rimossa
        {
            solitario.topPos[s1.riga].GetComponent <Selezionabile>().valore = s1.valore - 1;
            punti -= 15;
        }
        else //rimuovi la carta dalla pila appropriata tra i bottom
        {
            solitario.bottoms[s1.riga].Remove(slot1.name);
        }

        s1.inPila = false; //non è possibile aggiungere carte alle triplette
        s1.riga   = s2.riga;

        if (s2.top) //sposta una carta ai top ed assegnane il valore e il seme
        {
            solitario.topPos[s1.riga].GetComponent <Selezionabile>().valore = s1.valore;
            solitario.topPos[s1.riga].GetComponent <Selezionabile>().seme   = s1.seme;
            s1.top = true;
            punti += 10;
        }
        else
        {
            s1.top = false;
        }
        mosse++;
        //dopo aver completato la mossa svuota slot1 dagli oggetti con tag carta
        slot1 = this.gameObject;
    }