public void KlickAufStapel()
    {
        Debug.Log("Klick auf Stapel");
        Kartenstapel stapel = GetComponent <Kartenstapel>(); //Verweis auf Kartenstapelscript

        if (vorschauKarte.aktuelleBeschreibung() != null)
        {
            stapel.legeKarteZurueck(vorschauKarte.aktuelleBeschreibung());
        }

        if (stapel.istLeer())
        {
            stapel.gameObject.SetActive(false);
        }
        else
        {
            Kartenbeschreibung gezogeneKarte = stapel.hebeObersteKarteAb(); //Karte vom Stapel abheben (nur Wert)
            vorschauKarte.setzeBeschreibung(gezogeneKarte, false);

            if (stapel.istLeer())
            {
                stapel.gameObject.SetActive(false);
            }
        }
    }
예제 #2
0
    public void KlickAufStapel()
    {
        Debug.Log("Klick auf den Stapel.");
        if (karten.Count == 0)
        {
            Debug.Log("Der Stapel ist leer!");
            return;
        }

        int zufaelligeStapelPosition = Random.Range(0, karten.Count);

        Kartenbeschreibung gezogeneKarte = karten[zufaelligeStapelPosition];

        Debug.Log("Gezogene Karte = " + gezogeneKarte.kartenbild + " von Position=" + zufaelligeStapelPosition);
        karten.Remove(gezogeneKarte);
        verbleibendeZuege -= 1; // ist das gleiche wie verbleibendeZuege = verbleibendeZuege - 1;

        GameObject karteInSzene = Instantiate(kartenPrefab, kartenContainer.transform);

        karteInSzene.GetComponent <Karte>().setzeBeschreibung(gezogeneKarte, false);

        aktualisiereHilfetext();

        if (karten.Count == 0 || verbleibendeZuege == 0)
        {
            gameObject.SetActive(false);
        }
    }
예제 #3
0
 public void ErweiterungStarten(Kartenstapel stapel)
 {
     if (testModus)
     {
         LegeAlle(1, stapel, 0);
         LegeAlle(2, stapel, 1);
         LegeAlle(13, stapel, 2);
         LegeAlle(14, stapel, 3);
     }
     else
     {
         //Spalten mit einer Auswahl zufälliger Karten befüllen
         for (int i = 0; i < spalten.Count; i++)
         {
             for (int bereitsErzeugt = 0; bereitsErzeugt <= i; bereitsErzeugt++)
             {
                 Kartenbeschreibung k = stapel.hebeObersteKarteAb();
                 stapel.kartenContainer = spalten[i].gameObject;
                 Karte karteInSzene = stapel.erzeugeKarteInSzene();
                 karteInSzene.setzeBeschreibung(k, false);
                 if (bereitsErzeugt < i)
                 {
                     karteInSzene.TauscheKartenbild();                     //für alle außer letzter Karte
                 }
                 spalten[i].KartenAnordnen();
             }
         }
     }
 }
예제 #4
0
    public void KlickAufStapel()
    {
        Debug.Log("Klick auf den Stapel.");
        if (karten.Count == 0)
        {
            Debug.Log("Der Stapel ist leer!");
            return;
        }

        int zufaelligeStapelPosition = Random.Range(0, karten.Count);

        Kartenbeschreibung gezogeneKarte = karten[zufaelligeStapelPosition];

        Debug.Log("Gezogene Karte = " + gezogeneKarte.kartenbild + " von Position=" + zufaelligeStapelPosition);
        karten.Remove(gezogeneKarte);

        //kartendarstellung.sprite = gezogeneKarte.kartenbild;
        //kartendarstellung.gameObject.SetActive(true);
        GameObject karteInSzene = Instantiate(kartenPrefab, kartenContainer.transform);

        karteInSzene.GetComponent <Image>().sprite   = gezogeneKarte.kartenbild;
        karteInSzene.GetComponent <Button>().enabled = false;

        if (karten.Count == 0)
        {
            gameObject.SetActive(false);
        }
    }
예제 #5
0
    public void KlickAufStapel()
    {
        Kartenstapel stapel = GetComponent <Kartenstapel>();

        Debug.Log("Klick auf den Stapel.");
        if (stapel.istLeer())
        {
            Debug.Log("Der Stapel ist leer!");
            return;
        }

        Kartenbeschreibung gezogeneKarte = stapel.hebeZufaelligeKarteAb();

        stapel.kartenContainer = container[0];
        container.RemoveAt(0);

        stapel.erzeugeKarteInSzene().setzeBeschreibung(gezogeneKarte, false);

        aktualisiereHilfetext();

        if (stapel.karten.Count == 0 || verbleibendeZuege == 0)
        {
            gameObject.SetActive(false);
        }
    }
    public void LegeKarteAuf(StapelContainer container)
    {
        if (vorschauKarte.aktuelleBeschreibung() == null) //keine Karte aufgedeckt oder übrig
        {
            return;
        }

        Kartenbeschreibung alteKarte = container.ObersteKarte();
        Kartenbeschreibung neueKarte = vorschauKarte.aktuelleBeschreibung();

        if (WertPasst(alteKarte, neueKarte) && FarbePasst(alteKarte, neueKarte))
        {
            Debug.Log("Lege die Karte auf " + container);
            Kartenstapel stapel = GetComponent <Kartenstapel>();                         //Verweis auf Kartenstapelscript
            stapel.kartenContainer = container.gameObject;                               //dem Stapel sagen, wo erzeugeKarteInSzene die Karte unterordnen soll
            Karte karteInSzene = stapel.erzeugeKarteInSzene();                           //GameObject zum Zeichnen der Karte in der Szene anlegen
            karteInSzene.setzeBeschreibung(vorschauKarte.aktuelleBeschreibung(), false); //Kartenwert und Darstellung verbinden & sofort aufdecken
            vorschauKarte.setzeBeschreibung(null, false);
            KlickAufStapel();

            container.KartenAnordnen();

            if (stapel.istLeer() && vorschauKarte.aktuelleBeschreibung() == null) //alle karten abgelegt
            {
                dialogGewonnen.SetActive(true);
            }
        }
        else //passt nicht
        {
            dialogFehler.SetActive(true);
        }
    }
예제 #7
0
 private void verdoppleKartenIn(Kartenstapel stapel)
 {
     for (int i = stapel.karten.Count - 1; i >= 0; i--)
     {
         Kartenbeschreibung karte = stapel.karten[i];
         stapel.karten.Add(karte);
     }
 }
예제 #8
0
 /// <summary>
 /// Weist der Kartendarstellung einen neuen Kartenwert zu.
 /// Die Karte ist sofort sichtbar, wenn kannAngeklicktWerden false ist.
 /// </summary>
 /// <param name="neueBeschreibung">Neuer Wert der Karte.</param>
 /// <param name="kannAngeklicktWerden">Wenn true, spielt die Karte bei Klick die Umdrehanimation ab.</param>
 public void setzeBeschreibung(Kartenbeschreibung neueBeschreibung, bool kannAngeklicktWerden)
 {
     beschreibung = neueBeschreibung;
     if (!kannAngeklicktWerden)
     {
         GetComponent <Image>().sprite = neueBeschreibung.kartenbild;
     }
     GetComponent <Button>().enabled = kannAngeklicktWerden;
 }
    /// <summary>
    /// Wählt die oberste Karte aus der Liste karten, entfernt sie aus der Liste
    /// und liefert sie zurück.
    /// </summary>
    /// <returns>Datenbeschreibung der aus dem Stapel gezogenen Karte.</returns>
    /// <see cref="erzeugeKarteInSzene"/>
    public Kartenbeschreibung hebeObersteKarteAb()
    {
        Kartenbeschreibung gezogeneKarte = karten[0];

        //Debug.Log("Gezogene Karte = " + gezogeneKarte.kartenbild + " von oberster Position");
        karten.Remove(gezogeneKarte);

        return(gezogeneKarte);
    }
예제 #10
0
 private void LegeAlle(int mitDerFarbe, Kartenstapel ausDemStapel, int inDieSpalteIndex)
 {
     for (int wert = 14; wert >= 2; wert--)
     {
         Kartenbeschreibung k = ausDemStapel.hebeKarteAb(wert, mitDerFarbe);
         ausDemStapel.kartenContainer = spalten[inDieSpalteIndex].gameObject;
         Karte karteInSzene = ausDemStapel.erzeugeKarteInSzene();
         karteInSzene.setzeBeschreibung(k, false);
     }
     spalten[inDieSpalteIndex].KartenAnordnen();
 }
    /// <summary>
    /// Wählt eine zufällige Karte aus der Liste karten, entfernt sie aus der Liste
    /// und liefert sie zurück.
    /// </summary>
    /// <returns>Datenbeschreibung der zufällig aus dem Stapel gezogenen Karte.</returns>
    /// <see cref="erzeugeKarteInSzene"/>
    public Kartenbeschreibung hebeZufaelligeKarteAb()
    {
        int zufaelligeStapelPosition = Random.Range(0, karten.Count);

        Kartenbeschreibung gezogeneKarte = karten[zufaelligeStapelPosition];

        //Debug.Log("Gezogene Karte = " + gezogeneKarte.kartenbild + " von Position=" + zufaelligeStapelPosition);
        karten.Remove(gezogeneKarte);

        return(gezogeneKarte);
    }
예제 #12
0
 private void GibKarten(int anzahl, GameObject handstapel)
 {
     for (int i = 0; i < anzahl; i++)
     {
         Kartenbeschreibung karteAusStapel = stapel.hebeObersteKarteAb();
         stapel.kartenContainer = handstapel;
         Karte karteInSzene = stapel.erzeugeKarteInSzene();
         karteInSzene.setzeBeschreibung(karteAusStapel, true);
         karteInSzene.Umdrehen();
         karteInSzene.GetComponent <Button>().onClick.AddListener(KlickAufHandStapelKarte);
     }
 }
 private bool FarbePasst(Kartenbeschreibung alteKarte, Kartenbeschreibung neueKarte)
 {
     if (alteKarte == null)
     {
         return(true);
     }
     else if (Mathf.Abs(alteKarte.Farbe - neueKarte.Farbe) > 10)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
 private bool WertPasst(Kartenbeschreibung alteKarte, Kartenbeschreibung neueKarte)
 {
     if (alteKarte == null)
     {
         return(neueKarte.Wert == 14);
     }
     else if (alteKarte.Wert - neueKarte.Wert == 1)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #15
0
    // Start is called before the first frame update
    void Start()
    {
        Kartenstapel stapel = GetComponent <Kartenstapel>();

        verdoppleKartenIn(stapel);

        while (!stapel.istLeer())
        {
            Kartenbeschreibung gezogeneKarte = stapel.hebeZufaelligeKarteAb();
            Karte k = stapel.erzeugeKarteInSzene();
            k.setzeBeschreibung(gezogeneKarte, true);
            k.nachUmdrehenBenachrichten = wennKarteUmgedrehtWurde;
        }

        GetComponent <Image>().enabled = false; //gameObject.SetActive(false);
    }
    public void LegeKarteAuf(StapelContainer container)
    {
        if (vorschauKarte.aktuelleBeschreibung() == null) //keine Karte aufgedeckt oder übrig
        {
            return;
        }
        Kartenbeschreibung neueKarte = vorschauKarte.aktuelleBeschreibung();

        if (LegeKarteAuf(container, neueKarte))
        {
            vorschauKarte.setzeBeschreibung(null, false);
            KlickAufStapel();
            Kartenstapel stapel = GetComponent <Kartenstapel>();                  //Verweis auf Kartenstapelscript
            if (stapel.istLeer() && vorschauKarte.aktuelleBeschreibung() == null) //alle karten abgelegt
            {
                dialogGewonnen.SetActive(true);
            }
        }
    }
    private bool passt(Kartenbeschreibung neueKarte)
    {
        StapelContainer    endablageContainer = GetComponent <StapelContainer>();
        Kartenbeschreibung alteKarte          = endablageContainer.ObersteKarte();

        Debug.Log("Endablage überprüft: " + neueKarte + " kann gelegt werden auf: " + alteKarte);

        if (alteKarte == null)
        {
            return(neueKarte.Wert == 2);  //in leere Endablage kann nur die 2 gelegt werden
        }
        else
        {
            return
                ((alteKarte.Farbe == neueKarte.Farbe)
                 &&
                 (neueKarte.Wert == alteKarte.Wert + 1)
                );
        }
    }
    public void KlickAufStapel()
    {
        Kartenstapel stapel = GetComponent <Kartenstapel>();

        Debug.Log("Klick auf den Stapel.");
        if (stapel.istLeer())
        {
            Debug.Log("Der Stapel ist leer!");
            return;
        }

        Kartenbeschreibung gezogeneKarte = stapel.hebeZufaelligeKarteAb();

        stapel.erzeugeKarteInSzene().setzeBeschreibung(gezogeneKarte, false);

        if (stapel.karten.Count == 0)
        {
            gameObject.SetActive(false);
        }
    }
    public void GibKarten(int anzahl, MauMauPartei spielpartei)
    {
        bool istSpieler = spielpartei is MauMauParteiSpieler;

        for (int i = 0; i < anzahl; i++)
        {
            Kartenbeschreibung karteAusStapel = stapel.hebeObersteKarteAb();
            stapel.kartenContainer = spielpartei.gameObject;
            Karte karteInSzene = stapel.erzeugeKarteInSzene();
            karteInSzene.setzeBeschreibung(karteAusStapel, istSpieler);
            if (istSpieler)
            {
                karteInSzene.Umdrehen();
            }
            else
            {
                karteInSzene.TauscheKartenbild();
            }
            spielpartei.WennKarteHinzugefuegtWurde(karteInSzene);
        }
    }
    public bool LegeKarteAuf(StapelContainer container, Kartenbeschreibung neueKarte)
    {
        Kartenbeschreibung alteKarte = container.ObersteKarte();

        if (WertPasst(alteKarte, neueKarte) && FarbePasst(alteKarte, neueKarte))
        {
            Debug.Log("Lege die Karte auf " + container);
            Kartenstapel stapel = GetComponent <Kartenstapel>(); //Verweis auf Kartenstapelscript
            stapel.kartenContainer = container.gameObject;       //dem Stapel sagen, wo erzeugeKarteInSzene die Karte unterordnen soll
            Karte karteInSzene = stapel.erzeugeKarteInSzene();   //GameObject zum Zeichnen der Karte in der Szene anlegen
            karteInSzene.setzeBeschreibung(neueKarte, false);    //Kartenwert und Darstellung verbinden & sofort aufdecken

            container.KartenAnordnen();
            return(true); //Karte passt und wurde verschoben
        }
        else //passt nicht
        {
            dialogFehler.SetActive(true);
            return(false); //Karte passt nicht, nichts weiter machen
        }
    }
 /// <summary>
 /// Fügt die Karte am Ende des Stapels ein.
 /// </summary>
 /// <param name="karte">Zurückzulegende Karte.</param>
 public void legeKarteZurueck(Kartenbeschreibung karte)
 {
     karten.Add(karte);
 }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        if (GUILayout.Button("Karten einlesen"))
        {
            foreach (UnityEngine.Object o in Selection.objects)
            {
                Debug.Log("- Object: " + o);
                Sprite sprite = null;
                if (o is Sprite)
                {
                    sprite = (Sprite)o;
                }
                else if (o is Texture2D)
                {
                    string[] guid = AssetDatabase.FindAssets(o.name + " t:Sprite");
                    if (guid.Length > 0)
                    {
                        sprite = (Sprite)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guid[0]), typeof(Sprite));
                    }
                }

                if (sprite != null)
                {
                    Kartenbeschreibung karte = new Kartenbeschreibung();
                    karte.kartenbild = sprite;

                    string n = sprite.name;
                    if (n.StartsWith("ace_"))
                    {
                        karte.Wert = 14;
                    }
                    else if (n.StartsWith("king_"))
                    {
                        karte.Wert = 13;
                    }
                    else if (n.StartsWith("queen_"))
                    {
                        karte.Wert = 12;
                    }
                    else if (n.StartsWith("jack_"))
                    {
                        karte.Wert = 11;
                    }
                    else
                    {
                        for (int i = 2; i < 11; i++)
                        {
                            if (n.StartsWith(i + "_of_"))
                            {
                                karte.Wert = i;
                                break;
                            }
                        }
                    }


                    if (n.IndexOf("spades") > -1)
                    {
                        karte.Farbe = 1;
                    }
                    else if (n.IndexOf("clubs") > -1)
                    {
                        karte.Farbe = 2;
                    }
                    else if (n.IndexOf("hearts") > -1)
                    {
                        karte.Farbe = 13;
                    }
                    else if (n.IndexOf("diamonds") > -1)
                    {
                        karte.Farbe = 14;
                    }


                    Kartenstapel stapel = (Kartenstapel)target;
                    stapel.karten.Add(karte);
                }
            }
        }
    }