public GameTable(int player) { InitializeComponent(); //Initialisierung der Variabeln //Die StackPanel dienen als Spielflächen, erstmal für maximal 4 Spieler StackPanel[] sp = new StackPanel[player]; int ObereAugenzahl = 0; int UntereAugenzahl = 0; int zufallszahl; Random rnd = new Random(); List <Dominostein> DStein = new List <Dominostein>(); //Erstellen der oberen und unteren Augenzahl des Dominosteins, anschließend werden diese //der Klasse Dominostein zugewiesen und in eine Liste gepackt for (int o = 0; o < 10; o++) { for (int u = 0; u <= o; u++) { ObereAugenzahl = o; UntereAugenzahl = u; DStein.Add(new Dominostein(ObereAugenzahl, UntereAugenzahl)); } } //Positionsvariabel für die Position von links aus gesehen int l = 0; //Erstellung des StackPanel-Arrays für die Spielflächen der 4 Spieler for (int i = 0; i < player; i++) { sp[i] = new StackPanel(); Canvas.SetLeft(sp[i], l); Canvas.SetTop(sp[i], 10); sp[i].Orientation = Orientation.Horizontal; sp[i].Name = String.Format("Spieler_{0}", i + 1); sp[i].HorizontalAlignment = System.Windows.HorizontalAlignment.Left; sp[i].VerticalAlignment = System.Windows.VerticalAlignment.Top; sp[i].Height = 100; sp[i].Width = 230; //sp[i].Visibility = Visibility.Hidden; //Hinzufügen eines Grids, indem die Spielsteine hinzugefügt werden sollen. Dabei werden //sie zufällig aus der Listen gezogen und entsprechend auch aus der Liste gelöscht for (int j = 0; j < 5; j++) { Grid.SetRow(sp[i], j); zufallszahl = rnd.Next(0, DStein.Count); sp[i].Children.Add(DStein[zufallszahl]); Label lblPlayer = new Label(); Canvas.SetLeft(lblPlayer, l); Canvas.SetTop(lblPlayer, 120); lblPlayer.FontSize = 18; lblPlayer.Content = "Spieler " + (i + 1); Spieltisch.Children.Add(lblPlayer); DStein.RemoveAt(zufallszahl); } //Die Spielfläche/StackPanel werden am Spieltisch angebracht Spieltisch.Children.Add(sp[i]); //Die Position der nächsten Spielfläche wird bestimmt l += 350; string farbe = ""; //Hier werden die Farben der Spielflächen dynamisch erstellt switch (i) { case 0: farbe = "#0000FF"; break; case 1: farbe = "#EEEE00"; break; case 2: farbe = "#008B00"; break; case 3: farbe = "#8B0000"; break; } sp[i].Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(farbe)); } //Das Feld für den ersten Spielstein wird erzeugt StackPanel Ausgangsfeld = new StackPanel(); Canvas.SetLeft(Ausgangsfeld, 585); Canvas.SetTop(Ausgangsfeld, 490); Ausgangsfeld.Orientation = Orientation.Horizontal; Ausgangsfeld.Width = 90; Ausgangsfeld.Height = 50; Ausgangsfeld.HorizontalAlignment = HorizontalAlignment.Left; Ausgangsfeld.VerticalAlignment = VerticalAlignment.Top; Ausgangsfeld.Background = new SolidColorBrush(Colors.Gray); Spieltisch.Children.Add(Ausgangsfeld); //Der Anfangsspielstein wird auf das Spielfeld platziert zufallszahl = rnd.Next(0, DStein.Count); Canvas.SetLeft(DStein[zufallszahl], 585); Canvas.SetTop(DStein[zufallszahl], 490); DStein[zufallszahl].LayoutTransform = new RotateTransform(90); Spieltisch.Children.Add(DStein[zufallszahl]); DStein.RemoveAt(zufallszahl); //Ein Stapel-Objekt wird erzeugt, das beim Anklicken einen neuen Spielstein aus der Liste zieht Dominostein Stapel = new Dominostein(0, 0); Canvas.SetLeft(Stapel, 4); Canvas.SetTop(Stapel, 490); Spieltisch.Children.Add(Stapel); Label lblStapel = new Label(); lblStapel.FontSize = 14; lblStapel.FontWeight = FontWeights.Bold; lblStapel.Content = "Stapel"; Canvas.SetLeft(lblStapel, 4); Canvas.SetTop(lblStapel, 450); Spieltisch.Children.Add(lblStapel); //Anfangsspieler wird ermittelt int aktiverSpieler = 0; int maxWert = 0; bool paschvorhanden = false; for (int z = 0; z < sp.Count(); z++) { foreach (Dominostein spielstein in sp[z].Children) { int gesamtaugenzahl = spielstein.ObereAugenzahl + spielstein.UntereAugenzahl; //maxWert = gesamtaugenzahl; //aktiverSpieler = z; if (spielstein.ObereAugenzahl == spielstein.UntereAugenzahl && !paschvorhanden) { maxWert = gesamtaugenzahl; aktiverSpieler = z; paschvorhanden = true; } else if (spielstein.ObereAugenzahl == spielstein.UntereAugenzahl && paschvorhanden && gesamtaugenzahl >= maxWert) { maxWert = gesamtaugenzahl; aktiverSpieler = z; paschvorhanden = true; } if (!paschvorhanden && gesamtaugenzahl >= maxWert) { maxWert = gesamtaugenzahl; aktiverSpieler = z; } } } //sp[aktiverSpieler].Visibility = Visibility.Visible; sp[aktiverSpieler].Background = new SolidColorBrush(Colors.HotPink); }