Ejemplo n.º 1
0
        void client_GetGameStateCompleted(object sender, ServiceReference1.GetGameStateCompletedEventArgs e)
        {
            gameState = e.Result; //Get de game state.
            #region Update Map
            int        tellerRow      = 0;
            int        tellerColumn   = 0;
            int        evenOfOneven   = 0; //Deze variabele dient voor te weten als de tegels op de even of oneven kollomen moeten komen.
            Visibility hulpVisibility = Visibility.Visible;

            foreach (var item in gameState.AllIjsschots)
            {
                //De tegels moeten iedere rij in de helft van de vorige tegel beginnen.
                tellerRow = item.Row;
                if (tellerRow % 2 == 0)
                {
                    evenOfOneven = 0;
                }
                else
                {
                    evenOfOneven = 1;
                }
                tellerColumn = item.Column * 2 + evenOfOneven;

                //Gaat alle tegels af en zet deze zichtbaar of niet, naargelang de situatie is veranderd of niet.
                foreach (var tegel in SpelBord.Children)
                {
                    if (tegel is SpelTile)
                    {
                        SpelTile hulpTegel = tegel as SpelTile;
                        if (hulpTegel.Row == tellerRow && hulpTegel.Column == tellerColumn)
                        {
                            if (item.Visibility == "Visible")
                            {
                                hulpVisibility = Visibility.Visible;
                            }
                            else
                            {
                                hulpVisibility = Visibility.Collapsed;
                            }
                            hulpTegel.Visibility = hulpVisibility;
                            break;
                        }
                    }
                }
            }
            #endregion
            #region Update Pion
            tellerRow    = 0;
            tellerColumn = 0;
            bool bestaat = false; //Voor te zien als de pinguin bestaat.
            tellerAantalPinguins = 0;
            foreach (var pinguin in SpelBord.Children)
            {
                if (pinguin is SpelSpeelstuk)
                {
                    pinguin.Visibility = Visibility.Collapsed;
                    tellerAantalPinguins++; //Aantal pinguins tellen.
                }
            }
            foreach (var item in gameState.AllPion)
            {
                tellerRow    = item.Row;    //Welke row het is.
                tellerColumn = item.Column; //Welke column het is.
                bestaat      = false;
                foreach (var pinguin in SpelBord.Children)
                {
                    if (pinguin is SpelSpeelstuk)
                    {
                        SpelSpeelstuk hulpPinguin = pinguin as SpelSpeelstuk;
                        if (hulpPinguin.Column == tellerColumn && hulpPinguin.Row == tellerRow) //Zien als de pinguin is blijven staan.
                        {
                            hulpPinguin.Visibility = Visibility.Visible;                        //Laat pinguin staan.
                            bestaat = true;
                            break;
                        }
                    }
                }
                if (bestaat == false)                                   //Indien pinguin niet bestaat.
                {
                    AddPinguin(item.Row, item.Column, kleurAanDeBeurt); //Voeg nieuwe pinguin toe.
                }
            }
            #endregion
            #region Update Kleur
            kleurAanDeBeurt = gameState.KleurSpeler; //Achterhaal de kleur van de speler die aan de beurt is.
            #endregion
            #region Update Info
            if (kleurVanSpeler == kleurAanDeBeurt)
            {
                InfoBar.Text = "Het is jouw beurt. " + kleurVanSpeler + " is je kleur.";
            }
            else
            {
                InfoBar.Text = "Wachten op je beurt.";
            }
            string text = "Score: ";
            foreach (var item in gameState.AllSpeler)
            {
                text += item.NickName + ": " + item.Punten + "\t\t";
            }
            Punten.Text = text;
            #endregion
            #region Update Speler status
            foreach (var item in gameState.AllSpeler)
            {
                if (kanNogSpelen > 30 && item.Kleur == kleurVanSpeler)
                {
                    item.IsReady = "Out";
                    ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
                    client.UpdateGameStateCompleted += client_UpdateGameStateCompleted;
                    client.UpdateGameStateAsync(tellerLobbyID, gameState);
                }
            }
            #endregion
            #region Update Game Status
            ServiceReference1.Service1Client client2 = new ServiceReference1.Service1Client();
            client2.LetGameBeginCompleted += client_LetGameBeginCompleted; //check als spel ten einde is.
            client2.LetGameBeginAsync(tellerLobbyID);
            if (status == "Zwart")
            {
                newTimer.Stop();
                string gameOverString = "Game over!";
                string hulpString     = "";
                int    stopFor        = 0;
                for (int i = 200; i > 0; i--)
                {
                    foreach (var item in gameState.AllSpeler)
                    {
                        if (item.Punten == i)
                        {
                            hulpString = "\n" + item.NickName + ": " + item.Punten;
                            stopFor++;
                        }
                    }
                    gameOverString += hulpString;
                    if (stopFor == aantalSpelers)
                    {
                        break;
                    }
                }
                MessageBox.Show(gameOverString);
                if (hostID == tellerSpelerID)
                {
                    client2.EndGameCompleted += client2_EndGameCompleted;
                    client2.EndGameAsync(tellerLobbyID);
                }
                NavigationService.Navigate(new Uri("/Hoofdmenu.xaml", UriKind.Relative)); //Ga naar het hoofdmenu.
            }
            #endregion
        }
Ejemplo n.º 2
0
        void PushTile_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (kleurAanDeBeurt == kleurVanSpeler)
            {
                #region Tijdens het spel (Verplaatsen van Pinguin)
                SpelTile hulp = sender as SpelTile;                  //Maak een hulptegel aan zondat we met de waarde van de sender kunnen werken.

                if (opZetFace == false && verplaatsingsface == true) //Wanneer we een pinguin willen verplaatsen. Dit is het moment dat we op de nieuwe tegel drukken.
                {
                    int rowVerschil    = hulp.Row - hulpTegel2.Row;
                    int columnVerschil = hulp.Column - hulpTegel2.Column;
                    int zoekTussenliggendeRows;
                    int zoekTussenliggendeColumns;
                    if ((Math.Abs(rowVerschil) == Math.Abs(columnVerschil)) || (hulp.Row == hulpTegel2.Row))
                    {
                        magVerplaatsen = true;
                        if (rowVerschil > 0)
                        {
                            zoekTussenliggendeRows = 1;
                        }
                        else
                        {
                            zoekTussenliggendeRows = -1;
                        }
                        if (columnVerschil > 0)
                        {
                            zoekTussenliggendeColumns = 1;
                        }
                        else
                        {
                            zoekTussenliggendeColumns = -1;
                        }


                        for (int i = 1; i <= Math.Abs(columnVerschil); i++)
                        {
                            foreach (var pinguin in SpelBord.Children)
                            {
                                SpelSpeelstuk eenSpeelstuk = pinguin as SpelSpeelstuk;
                                if (eenSpeelstuk != null)
                                {
                                    if ((Math.Abs(rowVerschil) == Math.Abs(columnVerschil) &&
                                         Grid.GetRow(eenSpeelstuk) == hulpTegel2.Row + i * zoekTussenliggendeRows &&
                                         Grid.GetColumn(eenSpeelstuk) == hulpTegel2.Column + i * zoekTussenliggendeColumns) ||
                                        (hulp.Row == hulpTegel2.Row &&
                                         Grid.GetRow(eenSpeelstuk) == hulpTegel2.Row &&
                                         Grid.GetColumn(eenSpeelstuk) == hulpTegel2.Column + i * zoekTussenliggendeColumns))
                                    {
                                        magVerplaatsen = false;
                                        MessageBox.Show("Invalid action!\nJe mag niet over gaten en andere pinguins springen.");
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("Invalid action!\nJe mag je alleen over de horizontale en diagonale lijnen verplaantsen.");
                    }
                }
                #endregion
                #region Opzetface (Wanneer de pinguins geplaats moeten worden)
                if (opZetFace == true || magVerplaatsen == true) //Wanneer we een pinguin mogen plaatsen of verplaatsen.
                {
                    ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
                    client.OpzetFaseCompleted += new EventHandler <ServiceReference1.OpzetFaseCompletedEventArgs>(client_OpzetFaseCompleted);
                    client.OpzetFaseAsync();

                    VorigeTegel    = hulpTegel2; //Onthoud van waar de pinguin kwam.
                    hulpTegel2     = hulp;       //Onthound waar de pinguin op gezet wordt.
                    magVerplaatsen = false;      //De pinguin mag niet meer verpaatst worden.

                    punten[teller] += hulp.RandomNummer;

                    eigenPunten += hulp.RandomNummer;
                    //kleurVanSpeler = CheckKleurVanSpeler(kleurVanSpeler);
                    //MessageBox.Show("Speler: " + kleur + "\nteller: " + teller + "\nPunten: " + punten[teller]);
                }
                #endregion
            }
            else
            {
                MessageBox.Show("Wacht tot het jouw beurt is.");
            }
        }