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); } } }
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); }
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; } } } } }
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>(); }
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; }