public static Speler Winner(Slag slag, Spel spel) { KaartSoort first = slag.Kaarten.ElementAt(0).Value.Soort; KaartSoort troef = spel.Troef; Kaart hoogste = slag.Kaarten.Values.ElementAt(0); if (!spel.Spelmode.hasTroef) //Geen rekening me troef { foreach (Kaart k in slag.Kaarten.Values.Where(o => o.Soort == first)) if (k.Nummer > hoogste.Nummer || k.Nummer == 1) hoogste = k; } else { //Wel rekening me troef foreach (Kaart k in slag.Kaarten.Values) { if (k.Soort != first && k.Soort != troef) continue; if (((k.Soort == first && hoogste.Soort != troef) || (k.Soort == troef && hoogste.Soort == troef)) && (k.Nummer > hoogste.Nummer || k.Nummer == 1)) hoogste = k; else if (k.Soort == troef && hoogste.Soort != troef) hoogste = k; } } return slag.Kaarten.Keys.ElementAt(slag.Kaarten.Values.ToList().IndexOf(hoogste)); }
public void SendVolgendeKies() { try { Speler s; if (GekozenModes.Count != 4) { s = Spelers[GekozenModes.Count]; s.Client.GetClientProxy<IWiesGameClient>().ReceiveModes(BeschikbareModes(s)); } else { //Begin spel! var result = Comparator.WinnerMode(this); spelmode = result.Key; team = result.Value; foreach (Speler sp in spelers) sp.Client.GetClientProxy<IWiesGameClient>().ReceiveWinnerMode(spelmode, team, Troef); isFirstTurn = true; currentSlag = new Slag(this); SendTurn(); } } catch(Exception ex) { int i = 8; i++; } }
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 SendTurn() { if(isFirstTurn) { if(Spelmode == Spelmode.TROEL) { Speler s = Kaarten.Keys.ElementAt(0); foreach(KeyValuePair<Speler, List<Kaart>> kvp in Kaarten) if(kvp.Value.Where(o => o.Nummer == 1).Count() == 1) { s = kvp.Key; break; } ReArrangePlayers(s); } else if(Spelmode == Spelmode.TROELA) { Speler s = SpelerTroelaHarte().Key; ReArrangePlayers(s); } } CurrentSlag = new Slag(this); //spelers[currentSlag.Kaarten.Count].sendturn(); }
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; }