Beispiel #1
0
        //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;
        }
Beispiel #2
0
        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;
        }
Beispiel #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;
            }
        }
Beispiel #4
0
 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();
      }));
 }
Beispiel #5
0
        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;
            }
        }
Beispiel #6
0
        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;
        }
Beispiel #7
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;
        }
Beispiel #8
0
        public bool PlayKaart(Kaart k)
        {
            if(Game.CurrentSpel.PlayKaart(ForClientID((int)CurrentClient.ClientId), k))
                return true;

            return false;
        }