private bool Berechnen_Packen() { // Daten zurücksetzen StartZelle = new Zelle() { Hoehe = GartenHoehe, Breite = GartenBreite }; // Absteigend nach Flaeche ordnen Boxen.ForEach(x => x.Flaeche = (x.Hoehe * x.Breite)); Boxen = Boxen.OrderByDescending(x => x.Flaeche).ToList(); foreach (Box B in Boxen) { Zelle Z = Berechnen_Suche(StartZelle, B.Hoehe, B.Breite); if (Z != null) { B.Position = Berechnen_ZelleSpalten(Z, B.Hoehe, B.Breite); } else { return(false); } } return(true); }
//Prüft das Matrix-Zellen Arrays ob es eine mögliche kombination von Siegen gibt. //Hat wer gewonnen, so wid der boolean "Gewonnen" auf true gesetzt und gibt diesen zurück. public bool gewinnerPruefung(Zelle[,] matrix) { bool Gewonnen = false; //horizontale checks if ((matrix[0, 0].Spieler.Id == matrix[0, 1].Spieler.Id) && (matrix[0, 1].Spieler.Id == matrix[0, 2].Spieler.Id) && (matrix[0, 0].Spieler.Id != 0)) Gewonnen = true; else if ((matrix[1, 0].Spieler.Id == matrix[1, 1].Spieler.Id) && (matrix[1, 1].Spieler.Id == matrix[1, 2].Spieler.Id) && (matrix[1, 0].Spieler.Id != 0)) Gewonnen = true; else if ((matrix[2, 0].Spieler.Id == matrix[2, 1].Spieler.Id) && (matrix[2, 1].Spieler.Id == matrix[2, 2].Spieler.Id) && (matrix[2, 0].Spieler.Id != 0)) Gewonnen = true; //vertikale checks else if ((matrix[0, 0].Spieler.Id == matrix[1, 0].Spieler.Id) && (matrix[1, 0].Spieler.Id == matrix[2, 0].Spieler.Id) && (matrix[0, 0].Spieler.Id != 0)) Gewonnen = true; else if ((matrix[0, 1].Spieler.Id == matrix[1, 1].Spieler.Id) && (matrix[1, 1].Spieler.Id == matrix[2, 1].Spieler.Id) && (matrix[0, 1].Spieler.Id != 0)) Gewonnen = true; else if ((matrix[0, 2].Spieler.Id == matrix[1, 2].Spieler.Id) && (matrix[1, 2].Spieler.Id == matrix[2, 2].Spieler.Id) && (matrix[0, 2].Spieler.Id != 0)) Gewonnen = true; //diagonale checks if ((matrix[0, 0].Spieler == matrix[1, 1].Spieler) && (matrix[1, 1].Spieler == matrix[2, 2].Spieler) && (matrix[0, 0].Spieler.Id != 0)) Gewonnen = true; else if ((matrix[0, 2].Spieler == matrix[1, 1].Spieler) && (matrix[1, 1].Spieler == matrix[2, 0].Spieler) && (matrix[0, 2].Spieler.Id != 0)) Gewonnen = true; return Gewonnen; }
//Skalliert nach der größe des Fensters die Optimale Schriftgröße public float fontGroesseBerechnen(Zelle zelle) { float ClientWidthFloat = (float)zelle.Rectangle.Width; float ClientHeightFloat = (float)zelle.Rectangle.Height; float fontGroesse = (ClientWidthFloat + ClientHeightFloat) / 3.0F; return fontGroesse; }
private Zelle Berechnen_ZelleSpalten(Zelle Z, int Hoehe, int Breite) { Z.Belegt = true; Z.ZelleUnten = new Zelle { Y = Z.Y, X = Z.X + Breite, Hoehe = Z.Hoehe, Breite = Z.Breite - Breite }; Z.ZelleRechts = new Zelle { Y = Z.Y + Hoehe, X = Z.X, Hoehe = Z.Hoehe - Hoehe, Breite = Breite }; return(Z); }
//Funktion um die erstellten Wände zu Zellen zusammenzuführen void ErzeugeZellen() { alleZellen = xSeite * ySeite; letzteZellen = new List <int>(); letzteZellen.Clear(); //Ermitteln wie viele Unterpunkte es gibt int children = Wandspeicher.transform.childCount; GameObject[] gesamteWaende = new GameObject[children]; Zellen = new Zelle[xSeite * ySeite]; int Wandablauf = 0; int Kindablauf = 0; int LaufzeitCount = 0; //Die ganzen Wände in einer Variable speichern for (int a = 0; a < children; a++) { gesamteWaende[a] = Wandspeicher.transform.GetChild(a).gameObject; } //Wände den Zellen zuweisen for (int Zellzuweisung = 0; Zellzuweisung < Zellen.Length; Zellzuweisung++) { Zellen[Zellzuweisung] = new Zelle(); //Die erste Wand der Y Seite ermitteln - passiert unmittelbar nach starten des Programms, da die erste Wand eine Wand der Y Seite ganz unten links ist Zellen[Zellzuweisung].links = gesamteWaende[Wandablauf]; //Die erste Wand der X Seite ermitteln - nach dem alle Wände der Y Seite von unten nach oben, Reihe für Reihe in dem Klonprozess gespawnt werden, wird auch die erste Wand der X Seite unten links gespawnt Zellen[Zellzuweisung].unten = gesamteWaende[Kindablauf + (xSeite + 1) * ySeite]; if (LaufzeitCount == xSeite) { Wandablauf++; Wandablauf++; LaufzeitCount = 0; } else { Wandablauf++; } LaufzeitCount++; Kindablauf++; Zellen[Zellzuweisung].rechts = gesamteWaende[Wandablauf]; Zellen[Zellzuweisung].oben = gesamteWaende[(Kindablauf + (xSeite + 1) * ySeite) + xSeite - 1]; } ErstelleLabyrinth(); }
public bool IsNeighbor(Zelle zelle, int xMax, int yMax) { int left = this._x - 1 == 0 ? xMax : this._x - 1; int right = this._x == xMax ? 1 : this._x + 1; int up = this._y - 1 == 0 ? yMax : this._y - 1; int down = this._y == yMax ? 1 : this._y + 1; if (left == zelle.X && up == zelle.Y) { return(true); } if (this._x == zelle.X && up == zelle.Y) { return(true); } if (right == zelle.X && up == zelle.Y) { return(true); } if (left == zelle.X && this._y == zelle.Y) { return(true); } if (right == zelle.X && this._y == zelle.Y) { return(true); } if (left == zelle.X && down == zelle.Y) { return(true); } if (this._x == zelle.X && down == zelle.Y) { return(true); } if (right == zelle.X && down == zelle.Y) { return(true); } return(false); }
/// <summary> /// Gibt die Bubble Matrix ohne Animationanhand des aktuellen Spielstands aus /// Die Matrix wird immer komplett neu gezeichnet /// </summary> public void BubblesAnzeigen() { _bubbles = new Ellipse[_matrix.Zeilen, _matrix.Spalten]; _canvas.Children.Clear(); _fokusAn = false; for (int i = 0; i < _matrix.Zeilen; i++) { for (int j = 0; j < _matrix.Spalten; j++) { Zelle zelle = _matrix.ZelleDerAdresse(i, j); if (zelle.Status == ZellStatus.Belegt) { Tuple <double, double> ZeileSpalte = ZelleNachZeileSpalte(i, j); _bubbles[i, j] = ErzeugeBubble(zelle.Farbe); Canvas.SetTop(_bubbles[i, j], ZeileSpalte.Item1); Canvas.SetLeft(_bubbles[i, j], ZeileSpalte.Item2); _canvas.Children.Add(_bubbles[i, j]); } } } }
private Zelle Berechnen_Suche(Zelle Start, int Hoehe, int Breite) { if (Start.Belegt) { Zelle ZelleNeu = Berechnen_Suche(Start.ZelleUnten, Hoehe, Breite); if (ZelleNeu == null) { ZelleNeu = Berechnen_Suche(Start.ZelleRechts, Hoehe, Breite); } return(ZelleNeu); } else if (Breite <= Start.Breite && Hoehe <= Start.Hoehe) { return(Start); } else { return(null); } }
// Use this for initialization void Start() { Score = GetComponent <Text>(); zelle = GameObject.FindGameObjectWithTag("Zelle").GetComponent <Zelle>(); }
private void wechselSpielerZugAnzeige(Zelle zelle) { if (zelle != null && zelle.geklickt == false) { if (this.Spielsteuerung.Zug) { spielStatistikBS1.fokusSpielerZwei(); } else { spielStatistikBS1.fokusSpielerEins(); } } }
//Hier bekommt die Zelle ihre Punkte zur richtigen Positonierung in der View private void gebeZelleKoordinaten(Zelle Zelle, int x, int y, int breite ,int hoehe) { Zelle.Rectangle.X = x; Zelle.Rectangle.Y = y; Zelle.Rectangle.Height = hoehe; Zelle.Rectangle.Width = breite; }
public string[] rundenAuswertung(Zelle geklickteZelle, Spielfeld spielfeld) { string[] ErgebnisArray = { "Rundenstatus", "Spielstatus", "Spielername"}; if (geklickteZelle != null && geklickteZelle.geklickt == false) { this.welcherSpieler(geklickteZelle); if (ZugZaehler < 9) { if (this.gewinnerPruefung(spielfeld.Matrix)) { return hatGewonnen(geklickteZelle, ErgebnisArray); } ZugZaehler++; } else { if (this.gewinnerPruefung(spielfeld.Matrix)) { return hatGewonnen(geklickteZelle, ErgebnisArray); } istUntentschieden(ErgebnisArray); return ErgebnisArray; } } return ErgebnisArray; }
//Setzt der Zelle die als Parameter reingeladen wird einen Spieler zu, und ersetzt die Weiße default farbe einer Zelle mit der, des Spielers der Geklickt hat. //Fügt zu der eigenschaft "Spieler" in der Zelle ein Symbol Hinzu was dann angezeigt wird in der View. private void setzeSpielerInZelle(Zelle zelle) { if (Zug) { zelle.Spieler = this.SpielerEins; zelle.DefaultPinsel.Color = this.SpielerEins.ZellenPinsel.Color; zelle.Spieler.Figur = "X"; } else { zelle.Spieler = this.SpielerZwei; zelle.DefaultPinsel.Color = this.SpielerZwei.ZellenPinsel.Color; zelle.Spieler.Figur = "O"; } }
//gibt bei einem Sieg ein Sieg array raus private string[] hatGewonnen(Zelle zelle, string[] ErgebnisArray) { ZugZaehler = 1; ErgebnisArray[0] = "true"; ErgebnisArray[1] = "Sieg"; ErgebnisArray[2] = zelle.Spieler.Name; spielErgebnis(zelle.Spieler); return ErgebnisArray; }
//Setzt in de Zelle die eigenschaft " geklickt" auf true damit diese object von außen nicht mehr ansprechbar ist und weist // der Zelle einen Spieler zu. public void welcherSpieler(Zelle zelle) { zelle.geklickt = true; setzeSpielerInZelle(zelle); wechselZug(); }