void AddPinguin(int row, int column, string kleur) { Grid parent = SpelBord; string fotoString = "/PhoneApp1;component/Images/Pinguwin" + kleur + ".png"; //Locatie van afbeelding, welke kleur het moet zijn. SpelSpeelstuk Ss = new SpelSpeelstuk(row, column, kleur); //Maak een usercontrol aan. Ss.Afbeelding = fotoString; //Geef de afbeelding mee. parent.Children.Add(Ss); //Voef de pinguin toe aan de grid. Grid.SetRow(Ss, row); Grid.SetColumn(Ss, column); Grid.SetColumnSpan(Ss, 2); Ss.MouseLeftButtonDown += new MouseButtonEventHandler(PushPinguin_MouseLeftButtonDown); //Laat een pinguin reageren als op hem gedrukt wordt. teller++; //Volgende speler if (teller == 4) { teller = 0; } }
void PushPinguin_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (kleurAanDeBeurt == kleurVanSpeler) { if (opZetFace == false) //Er mag alleen iets gebeuren wanneer het spel bezig is. { SpelSpeelstuk hulp = sender as SpelSpeelstuk; //Hulp speelstuk aanmaken zodat we aan de waarde van de sender kunnen. hulpSpeelstuk2 = hulp; //kleurVanSpeler = CheckKleurVanSpeler(kleurVanSpeler); if (hulpSpeelstuk2.Kleur == kleurVanSpeler) { foreach (SpelTile tile in SpelBord.Children) //Gaat alle tegels af. { if (hulp.Row == Grid.GetRow(tile) && hulp.Column == Grid.GetColumn(tile)) //Wanneer hij een tegel vind die gelijk is aan de coördinaten van de pinguin.. { hulpTegel2 = tile; //Krijgt de hulptegel de coördinaten van de pinguin. Op deze manier want anders zit je met referentie problemen. kanNogSpelen = 0; break; } } verplaatsingsface = true; //Nu mag de pinguin verplaatst worden. } else { MessageBox.Show("Invalid action!\nJe mag alleen een pinguin van je eigen kleur verplaatsen."); } } else { MessageBox.Show("Invalid action!\nJe kan geen meerdere pinguins op de zelfde tegel paatsen."); } } else { MessageBox.Show("Wacht tot het jouw beurt is."); } }
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 }
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."); } }