private void wennKarteUmgedrehtWurde(Karte umgedrehteKarte)
    {
        Debug.Log("Spielprinzip weiß: Karte " + umgedrehteKarte + " wurde umgedreht.");

        if (!umgedrehteKarte.KarteSchonUmgedreht())
        {
            return;
        }
        if (letzteKarte != null)                            //dies ist die zweite Karte
        {
            if (letzteKarte.hatSelbenWert(umgedrehteKarte)) //paar gefunden
            {
                Debug.Log("Die beiden Karten sind gleich. " + letzteKarte + " " + umgedrehteKarte);
                Destroy(letzteKarte.gameObject);
                Destroy(umgedrehteKarte.gameObject);
            }
            else
            {
                Debug.Log("Die beiden Karten sind unterschiedlich: " + letzteKarte + " " + umgedrehteKarte);
                umgedrehteKarte.Umdrehen();
                letzteKarte.Umdrehen();
            }
            letzteKarte = null;
        }
        else //dies ist die erste Karte
        {
            letzteKarte = umgedrehteKarte;
        }
    }
 /// <summary>
 /// Sammelt die Karten, die auf der karteUnterMaus liegen (inkl. der Karte selbst)
 /// in der Liste ziehendeKarten.
 /// </summary>
 /// <param name="karteUnterMaus"></param>
 /// <returns>Ist dies ein gültiger Zug?</returns>
 public bool SammleKartenAb(Karte karteUnterMaus)
 {
     for (int i = karteUnterMaus.transform.GetSiblingIndex(); i < transform.childCount; i++)
     {
         Karte k = transform.GetChild(i).GetComponent <Karte>();
         if (!k.KarteSchonUmgedreht())
         {
             return(false);
         }
         ziehendeKarten.Add(k);
     }
     return(true);
 }
Esempio n. 3
0
    private void wennKarteUmgedrehtWurde(Karte umgedrehteKarte)
    {
        Debug.Log("Spielprinzip weiß: Karte " + umgedrehteKarte + " wurde umgedreht.");

        if (!umgedrehteKarte.KarteSchonUmgedreht())
        {
            return;             //verhindern, dass das umdrehen sofort wieder das zurück Umdrehen auslöst
        }
        if (ersteKarte != null) //dies ist die zweite Karte
        {
            zweiteKarte = umgedrehteKarte;
            if (ersteKarte.hatSelbenWert(umgedrehteKarte)) //paar gefunden
            {
                Debug.Log("Die beiden Karten sind gleich. " + ersteKarte + " " + umgedrehteKarte);

                verbleibendeZuege = 5;
                hilfetext.text    = "Finde alle Paare! Noch " + verbleibendeZuege + " Versuche.";

                Kartenstapel stapel = GetComponent <Kartenstapel>();
                if (stapel.kartenContainer.transform.childCount <= 2) //das waren die letzten beiden Karten -> gewonnen
                {
                    dialogGewonnen.SetActive(true);
                }
                else //es sind noch mehrere Karten auf dem Brett -> nur diese beiden wegräumen, dann weiter spielen
                {
                    dialogGleichesPaar.SetActive(true);
                    StartCoroutine(dialogAutomatischAusblenden());
                }
            }
            else //unterschiedliche karten
            {
                Debug.Log("Die beiden Karten sind unterschiedlich: " + ersteKarte + " " + umgedrehteKarte);

                verbleibendeZuege = verbleibendeZuege - 1;
                hilfetext.text    = "Finde alle Paare! Noch " + verbleibendeZuege + " Versuche.";
                if (verbleibendeZuege == 0)
                {
                    dialogGameOver.SetActive(true);
                }
                else
                {
                    dialogUngleichesPaar.SetActive(true);
                    StartCoroutine(dialogAutomatischAusblenden());
                }
            }
        }
        else //dies ist die erste Karte
        {
            ersteKarte = umgedrehteKarte;
        }
    }
    public void EntferneObersteKarte()
    {
        if (transform.childCount == 0)
        {
            return;
        }

        Destroy(transform.GetChild(transform.childCount - 1).gameObject);

        if (transform.childCount >= 2) //wir brauchen mindestens 2 = die gelöschte + die darunterliegende
        {
            Karte k = transform.GetChild(transform.childCount - 2).GetComponent <Karte>();
            //Debug.Log("Nächste Karte auf Container/Spalte = " + k);
            if (!k.KarteSchonUmgedreht())
            {
                k.Umdrehen();
            }
        }
    }
    public void EntferneZiehendeKarten()
    {
        if (ziehendeKarten[0].transform.GetSiblingIndex() >= 1) //es liegt noch mind. 1 karte unter der untersten des gezogenen teilstapels
        {
            Karte k = transform.GetChild(ziehendeKarten[0].transform.GetSiblingIndex() - 1).GetComponent <Karte>();
            //Debug.Log("Nächste Karte auf Container/Spalte = " + k);
            if (!k.KarteSchonUmgedreht())
            {
                k.Umdrehen();
            }
        }


        foreach (Karte k in ziehendeKarten)
        {
            Destroy(k.gameObject);
        }

        ziehendeKarten.Clear();
    }
Esempio n. 6
0
    private void wennKarteUmgedrehtWurde(Karte umgedrehteKarte)
    {
        Debug.Log("Spielprinzip weiß: Karte " + umgedrehteKarte + " wurde umgedreht.");

        if (!umgedrehteKarte.KarteSchonUmgedreht())
        {
            return;
        }
        if (ersteKarte != null) //dies ist die zweite Karte
        {
            zweiteKarte = umgedrehteKarte;
            if (ersteKarte.hatSelbenWert(umgedrehteKarte)) //paar gefunden
            {
                Debug.Log("Die beiden Karten sind gleich. " + ersteKarte + " " + umgedrehteKarte);
                Kartenstapel stapel = GetComponent <Kartenstapel>();
                if (stapel.kartenContainer.transform.childCount <= 2)
                {
                    dialogGewonnen.SetActive(true);
                }
                else
                {
                    dialogGleichesPaar.SetActive(true);
                    StartCoroutine(dialogAutomatischAusblenden());
                }
            }
            else //unterschiedliche karten
            {
                Debug.Log("Die beiden Karten sind unterschiedlich: " + ersteKarte + " " + umgedrehteKarte);
                dialogUngleichesPaar.SetActive(true);
                StartCoroutine(dialogAutomatischAusblenden());
            }
        }
        else //dies ist die erste Karte
        {
            ersteKarte = umgedrehteKarte;
        }
    }