Пример #1
0
        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));
        }
Пример #2
0
 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++;
     }
 }
Пример #3
0
        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;
            }
        }
Пример #4
0
 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();
 }
Пример #5
0
        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;
        }