//Doe de deling public static Dictionary<int, List<Kaart>> Deling(int afgepakt) { Dictionary<int, List<Kaart>> result = new Dictionary<int, List<Kaart>>(); result.Add(0, new List<Kaart>()); //Lijst veu elke speler result.Add(1, new List<Kaart>()); result.Add(2, new List<Kaart>()); result.Add(3, new List<Kaart>()); List<Kaart> boek = new List<Kaart>(); //Vullen boek kaarten for(int i = 1;i<14;i++) for(int k = 0;k<4;k++) { Kaart kaart = new Kaart(i, KaartSoort.ForID(k)); boek.Add(kaart); } //Shuffle Random rnd = new Random(); for (int i = boek.Count; i > 1; i--) { int pos = rnd.Next(i); var x = boek[i - 1]; boek[i - 1] = boek[pos]; boek[pos] = x; } //Afpakken List<Kaart> temp = new List<Kaart>(); temp.AddRange(boek); boek.Clear(); for (int i = temp.Count; i > temp.Count - afgepakt;i-- ) { boek.Add(temp.ElementAt(i)); temp.Remove(temp.ElementAt(i)); } foreach (Kaart k in temp) boek.Add(k); if (boek.Count != 52) Console.WriteLine("ERROR"); //Verdelen for (int i = 0; i < 3;i++ ) for (int k = 0; k < 4; k++) for (int l = 0; l < (i == 2 ? 5 : 4); l++) { result[k].Add(boek.ElementAt(0)); boek.Remove(boek.ElementAt(0)); } return result; }
private bool CanPlayKaart(Kaart k, Speler s) { if (currentSlag.Kaarten.Count == 4) return false; if (currentSlag.Kaarten.Count != spelers.IndexOf(s)) return false; if(Spelmode == Spelmode.TROELA && currentSlag.Kaarten.Count == 0 && Slagen.Count == 0) if (k != SpelerTroelaHarte().Value) return false; if (Spelmode == Spelmode.TROEL && currentSlag.Kaarten.Count == 0 && Slagen.Count == 0) if (k.Nummer != 1) return false; if(currentSlag.Kaarten.Count != 0) { KaartSoort first = currentSlag.Kaarten.Values.ElementAt(0).Soort; if (Kaarten[s].Where(o => o.Soort.ID == first.ID).Count() > 0 && k.Soort.ID != first.ID) return false; else if (Spelmode == Spelmode.DAMME && Kaarten[s].Where(o => o.Nummer == 12).Count() > 0 && k.Nummer != 12) return false; } return true; }
public bool PlayKaart(Speler s, Kaart k) { try { if (!CanPlayKaart(k, s)) return false; isFirstTurn = false; Kaart kkk = null; foreach (Kaart kk in Kaarten[s]) if (kk.Soort.ID == k.Soort.ID && kk.Nummer == k.Nummer) { kkk = kk; break; } if (kkk != null) Kaarten[s].Remove(kkk); s.Client.GetClientProxy<IWiesGameClient>().ReceiveHand(Kaarten[s]); currentSlag.Kaarten.Add(s, k); if (currentSlag.Kaarten.Count == 4) { var speler = Comparator.Winner(currentSlag, this); Slagen[speler].Add(currentSlag); foreach (Speler sp in spelers) sp.Client.GetClientProxy<IWiesGameClient>().ReceiveWinner(speler); ReArrangePlayers(speler); Timer t = new Timer(); t.Interval = 3000; t.AutoReset = false; t.Elapsed += t_Elapsed; t.Start(); if (Kaarten[s].Count != 0) { currentSlag = new Slag(this); SendTurn(); } else { List<int> scores = new List<int>(); string message = "PUNTEN:\n"; foreach (KeyValuePair<Speler, int> kvp in Comparator.Scores(spelers, team, spelmode, Slagen)) { Game.Scores[kvp.Key] += kvp.Value; message += (message == "PUNTEN:\n" ? "" : "\n") + kvp.Key.Name + ": " + Game.Scores[kvp.Key]; } foreach (KeyValuePair<Speler, int> kvp in Comparator.Scores(spelers, team, spelmode, Slagen)) { kvp.Key.Client.GetClientProxy<IWiesGameClient>().ReceiveMessage(message); kvp.Key.Client.GetClientProxy<IWiesGameClient>().ReceiveMessage("Nieuwe ronde start in 10 seconden..."); } Timer t2 = new Timer(); t2.Interval = 10000; t2.AutoReset = false; t2.Elapsed += t2_Elapsed; t2.Start(); } } else { SendTurn(); } return true; } catch (Exception) { throw; } }
public void LoadTableCard(Kaart k, Speler speler, Speler you, List<Speler> spelers) { App.Current.Dispatcher.BeginInvoke(new Action(() => { if (k != null) GameWindow.LoadTableCard(k, speler, you, spelers); else GameWindow.ClearTable(); })); }
public void LoadTableCard(Kaart k, Speler speler, Speler you, List<Speler> spelers) { if(k == null) { ClearTable(); return; } int index = 0; int index2 = 0; foreach (Speler s in spelers) if (s.ID == you.ID) index = spelers.IndexOf(s); else if (s.ID == speler.ID) index2 = spelers.IndexOf(s); Bitmap bmp = (Bitmap)Properties.Resources.ResourceManager.GetObject(k.Soort.Naam.ToUpper() + "_" + k.Nummer); if(speler.ID == you.ID) { Card0.Source = Bitmap2BitmapImage(bmp); return; } switch (index) { case 0: switch (index2) { case 1: Card1.Source = Bitmap2BitmapImage(bmp); break; case 2: Card2.Source = Bitmap2BitmapImage(bmp); break; case 3: Card3.Source = Bitmap2BitmapImage(bmp); break; } break; case 1: switch (index2) { case 2: Card1.Source = Bitmap2BitmapImage(bmp); break; case 3: Card2.Source = Bitmap2BitmapImage(bmp); break; case 0: Card3.Source = Bitmap2BitmapImage(bmp); break; } break; case 2: switch (index2) { case 1: Card3.Source = Bitmap2BitmapImage(bmp); break; case 0: Card2.Source = Bitmap2BitmapImage(bmp); break; case 3: Card1.Source = Bitmap2BitmapImage(bmp); break; } break; case 3: switch (index2) { case 1: Card2.Source = Bitmap2BitmapImage(bmp); break; case 2: Card3.Source = Bitmap2BitmapImage(bmp); break; case 0: Card1.Source = Bitmap2BitmapImage(bmp); break; } break; } }
public bool PlayKaart(Kaart k) { if(Game.CurrentSpel.PlayKaart(ForClientID((int)CurrentClient.ClientId), k)) { this.CurrentClient.GetClientProxy<IWiesGameClient>().ReceiveHand(Game.CurrentSpel.Kaarten[ForClientID((int)CurrentClient.ClientId)]); foreach (Speler s in Spelers) s.Client.GetClientProxy<IWiesGameClient>().LoadTableCard(k, ForClientID((int)CurrentClient.ClientId), s, Spelers); return true; } return false; }
public bool PlayKaart(Speler s, Kaart k) { if (!CanPlayKaart(k, s)) return false; currentSlag.Kaarten.Add(s, k); if(currentSlag.Kaarten.Count == 4) { Slagen.Add(Comparator.Winner(currentSlag, this), currentSlag); if(Kaarten[s].Count != 0) { currentSlag = new Slag(this); SendTurn(); } else { //NIEUW SPEL STARTEN + winnar berekenen } } else { SendTurn(); } return true; }
public bool PlayKaart(Kaart k) { if(Game.CurrentSpel.PlayKaart(ForClientID((int)CurrentClient.ClientId), k)) return true; return false; }