Пример #1
0
        public void LoadSpelers(List<Speler> spelers, Speler you)
        {
            int index = 0;
            foreach (Speler s in spelers)
                if (s.ID == you.ID)
                    index = spelers.IndexOf(s);

            switch(index)
            {
                case 0:
                    TextBlock1.Text = spelers[1].Name;
                    TextBlock2.Text = spelers[2].Name;
                    TextBlock3.Text = spelers[3].Name;
                    break;
                case 1:
                    TextBlock1.Text = spelers[2].Name;
                    TextBlock2.Text = spelers[3].Name;
                    TextBlock3.Text = spelers[0].Name;
                    break;
                case 2:
                    TextBlock1.Text = spelers[3].Name;
                    TextBlock2.Text = spelers[0].Name;
                    TextBlock3.Text = spelers[1].Name;
                    break;
                case 3:
                    TextBlock1.Text = spelers[0].Name;
                    TextBlock2.Text = spelers[1].Name;
                    TextBlock3.Text = spelers[2].Name;
                    break;
            }
        }
Пример #2
0
        private void ReArrangePlayers(Speler first)
        {
            List<Speler> nieuw = new List<Speler>();
            nieuw.Add(first);

            int index = spelers.IndexOf(first);

            if (index == 0)
                return;
            else if(index == 1)
            {
                nieuw.Add(spelers[2]);
                nieuw.Add(spelers[3]);
                nieuw.Add(spelers[0]);
            }
            else if(index == 2)
            {
                nieuw.Add(spelers[3]);
                nieuw.Add(spelers[0]);
                nieuw.Add(spelers[1]);
            }
            else if(index == 3)
            {
                nieuw.Add(spelers[0]);
                nieuw.Add(spelers[1]);
                nieuw.Add(spelers[2]);
            }

            this.spelers = nieuw;
        }
Пример #3
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;
        }
Пример #4
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;
            }
        }
Пример #5
0
        public List<Spelmode> BeschikbareModes(Speler s)
        {
            List<Spelmode> result = new List<Spelmode>();

            result.Add(Spelmode.PASS);

            if (s.ID == 3 && GekozenModes.Where(o => o.Key.Prioriteit > Spelmode.SOLO5.Prioriteit).Count() == 0)
                result.Add(Spelmode.SOLO5);
            else if (GekozenModes.Where(o => o.Key.ID == Spelmode.DUO.ID).Count() < 2 && GekozenModes.Where(o => o.Key.Prioriteit > Spelmode.DUO.Prioriteit).Count() == 0)
                result.Add(Spelmode.DUO); //Als vraag & meegaan -- word in client vertaald

            if (GekozenModes.Where(o => o.Key.Prioriteit >= Spelmode.SOLO9.Prioriteit).Count() == 0)
                result.Add(Spelmode.SOLO9);
            if ((Kaarten[s].Where(o => o.Nummer == 1).Count() == 3 && GekozenModes.Where(o => o.Key.Prioriteit > Spelmode.TROEL.Prioriteit).Count() == 0) || (GekozenModes.Where(o => o.Key == Spelmode.TROELA).Count() == 1 && Kaarten[s].Where(o => o.Nummer == 1).Count() == 1))
                result.Add(Spelmode.TROEL);

            if (GekozenModes.Where(o => o.Key.Prioriteit >= Spelmode.MISERIE.Prioriteit).Count() == 0)
                result.Add(Spelmode.MISERIE);

            if ((Kaarten[s].Where(o => o.Nummer == 1).Count() == 4 && GekozenModes.Where(o => o.Key.Prioriteit > Spelmode.TROELA.Prioriteit).Count() == 0) || (GekozenModes.Where(o => o.Key == Spelmode.TROELA).Count() == 1 && SpelerTroelaHarte().Key == s))
                result.Add(Spelmode.TROELA);

            if (GekozenModes.Where(o => o.Key.Prioriteit >= Spelmode.OPEMISERIE.Prioriteit).Count() == 0)
                result.Add(Spelmode.OPEMISERIE);
            if (GekozenModes.Where(o => o.Key.Prioriteit >= Spelmode.SOLOLOEMP.Prioriteit).Count() == 0)
                result.Add(Spelmode.SOLOLOEMP);
            result.Add(Spelmode.SOLOSLUM);

            return result;
        }
Пример #6
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();
      }));
 }
Пример #7
0
 public void ReceiveWinner(Speler s)
 {
     Write(s.Name + " heeft de slag gewonnen!");
 }
Пример #8
0
 public void ReceiveSpelers(List<Speler> spelers, Speler you)
 {
     App.Current.Dispatcher.BeginInvoke(new Action(() =>
     {
         MainWindow.Hide();
         GameWindow.Show();
         GameWindow.LoadSpelers(spelers, you);
     }));
 }
Пример #9
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;
            }
        }
Пример #10
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;
        }