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); } } }
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); } }
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(); } } } }
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); } }
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); } }
private void verdoppleKartenIn(Kartenstapel stapel) { for (int i = stapel.karten.Count - 1; i >= 0; i--) { Kartenbeschreibung karte = stapel.karten[i]; stapel.karten.Add(karte); } }
/// <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); }
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); }
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); } }
// 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); } } } }