public void createGrid(List<string> doolhof) { BottomBord bottomBord = new BottomBord(doolhof, ""); TopBord topBord = new TopBord(doolhof, ""); this.VakkenView.Children.Add(bottomBord.toonGrid()); this.SpeelBord.Children.Add(topBord.toonGrid()); ResetTimer(); StartTimer(); verstrekenTijd.Content = "Tijd: " + _seconden; aantalZetten.Content = "Zetten: " + _zetten; }
// Key Events private void Game_KeyDown(object sender, KeyEventArgs e) { if (doolhof != null) { List<string> tempDoolhof = doolhof; string row; string verticalRow; string secondVerticalRow; int positieSpeler; int spelerRow; string richting; switch (e.Key) { case Key.Left: richting = "links"; // Vind de rij van de speler row = tempDoolhof[VindSpeler()]; // Vind de positie van de speler spelerRow = VindSpeler(); positieSpeler = row.IndexOf("@"); // Vind de nieuwe positie if (row[positieSpeler - 1].Equals(Convert.ToChar(" ")) || row[positieSpeler - 1].Equals(Convert.ToChar("x"))) { char[] temp = row.ToCharArray(); temp[positieSpeler - 1] = Convert.ToChar("@"); temp[positieSpeler] = Convert.ToChar(" "); tempDoolhof[VindSpeler()] = new string(temp); } // Staat er een doos? if (row[positieSpeler - 1].Equals(Convert.ToChar("o"))) { // Kan de doos bewegen? if (row[positieSpeler - 2].Equals(Convert.ToChar(" ")) || row[positieSpeler - 2].Equals(Convert.ToChar("x"))) { // Beweeg doos char[] temp = row.ToCharArray(); temp[positieSpeler - 2] = Convert.ToChar("o"); temp[positieSpeler - 1] = Convert.ToChar("@"); temp[positieSpeler] = Convert.ToChar(" "); tempDoolhof[VindSpeler()] = new string(temp); } } break; case Key.Right: richting = "rechts"; // Vind de rij van de speler row = tempDoolhof[VindSpeler()]; // Vind de positie van de speler spelerRow = VindSpeler(); positieSpeler = row.IndexOf("@"); // Vind de nieuwe positie if (row[positieSpeler + 1].Equals(Convert.ToChar(" ")) || row[positieSpeler + 1].Equals(Convert.ToChar("x"))) { char[] temp = row.ToCharArray(); temp[positieSpeler + 1] = Convert.ToChar("@"); temp[positieSpeler] = Convert.ToChar(" "); tempDoolhof[VindSpeler()] = new string(temp); } // Staat er een doos? if (row[positieSpeler + 1].Equals(Convert.ToChar("o"))) { // Kan de doos bewegen? if (row[positieSpeler + 2].Equals(Convert.ToChar(" ")) || row[positieSpeler + 2].Equals(Convert.ToChar("x"))) { // Beweeg doos char[] temp = row.ToCharArray(); temp[positieSpeler + 2] = Convert.ToChar("o"); temp[positieSpeler + 1] = Convert.ToChar("@"); temp[positieSpeler] = Convert.ToChar(" "); tempDoolhof[VindSpeler()] = new string(temp); } } break; case Key.Up: richting = "boven"; // Vind de rij van de speler row = tempDoolhof[VindSpeler()]; spelerRow = VindSpeler(); verticalRow = tempDoolhof[spelerRow - 1]; // Vind de positie van de speler positieSpeler = row.IndexOf("@"); // Vind de nieuwe positie if (verticalRow[positieSpeler].Equals(Convert.ToChar(" ")) || verticalRow[positieSpeler].Equals(Convert.ToChar("x"))) { // Verander in bovenste rij char[] temp = verticalRow.ToCharArray(); temp[positieSpeler] = Convert.ToChar("@"); tempDoolhof[spelerRow - 1] = new string(temp); // Verander in onderste rij char[] temp2 = row.ToCharArray(); temp2[positieSpeler] = Convert.ToChar(" "); tempDoolhof[spelerRow] = new string(temp2); } // Staat er een doos? if (verticalRow[positieSpeler].Equals(Convert.ToChar("o"))) { if ((spelerRow - 2) >= 0)// Voorkom out of bounds { secondVerticalRow = tempDoolhof[spelerRow - 2]; // Kan de doos bewegen? if (secondVerticalRow[positieSpeler].Equals(Convert.ToChar(" ")) || secondVerticalRow[positieSpeler].Equals(Convert.ToChar("x"))) { // Beweeg doos // Verander in bovenste rij char[] temp = secondVerticalRow.ToCharArray(); temp[positieSpeler] = Convert.ToChar("o"); tempDoolhof[spelerRow - 2] = new string(temp); // Verander in middelste rij char[] temp2 = verticalRow.ToCharArray(); temp2[positieSpeler] = Convert.ToChar("@"); tempDoolhof[spelerRow - 1] = new string(temp2); // Verander in onderste rij char[] temp3 = row.ToCharArray(); temp3[positieSpeler] = Convert.ToChar(" "); tempDoolhof[spelerRow] = new string(temp3); } } } break; case Key.Down: richting = "beneden"; // Vind de rij van de speler row = tempDoolhof[VindSpeler()]; spelerRow = VindSpeler(); verticalRow = tempDoolhof[spelerRow + 1]; // Vind de positie van de positieSpeler = row.IndexOf("@"); // Vind de nieuwe positie if (verticalRow[positieSpeler].Equals(Convert.ToChar(" ")) || verticalRow[positieSpeler].Equals(Convert.ToChar("x"))) { // Verander in bovenste rij char[] temp = row.ToCharArray(); temp[positieSpeler] = Convert.ToChar(" "); tempDoolhof[spelerRow] = new string(temp); // Verander in onderste rij char[] temp2 = verticalRow.ToCharArray(); temp2[positieSpeler] = Convert.ToChar("@"); tempDoolhof[spelerRow + 1] = new string(temp2); } // Staat er een doos? if (verticalRow[positieSpeler].Equals(Convert.ToChar("o"))) { if ((spelerRow + 2) <= tempDoolhof.Count)// Voorkom out of bounds { secondVerticalRow = tempDoolhof[spelerRow + 2]; // Kan de doos bewegen? if (secondVerticalRow[positieSpeler].Equals(Convert.ToChar(" ")) || secondVerticalRow[positieSpeler].Equals(Convert.ToChar("x"))) { // Beweeg doos // Verander in onderste rij char[] temp = secondVerticalRow.ToCharArray(); temp[positieSpeler] = Convert.ToChar("o"); tempDoolhof[spelerRow + 2] = new string(temp); // Verander in middelste rij char[] temp2 = verticalRow.ToCharArray(); temp2[positieSpeler] = Convert.ToChar("@"); tempDoolhof[spelerRow + 1] = new string(temp2); // Verander in onderste rij char[] temp3 = row.ToCharArray(); temp3[positieSpeler] = Convert.ToChar(" "); tempDoolhof[spelerRow] = new string(temp3); } } } break; default: return; } // Update doolhof doolhof = tempDoolhof; // Refresh TopBord this.SpeelBord.Children.Clear(); TopBord topBord = new TopBord(doolhof, richting); this.SpeelBord.Children.Add(topBord.toonGrid()); // Zet erbij _zetten++; aantalZetten.Content = ("Zetten: " + Convert.ToString(_zetten)); // Heeft Gewonnen? HeeftGewonnen(); } }