예제 #1
0
파일: Spel.cs 프로젝트: Roconda/Barricade
	    /// <summary>
        /// Doorloop alle stappen van een beurt
        /// </summary>
        private async Task VolgendeBeurt(int gedobbeld, Speler speler, ISpeler controller)
        {
            // Geef dobbelwaarde neer
            _game.Gedobbeld = gedobbeld;
            controller.Gedobbeld = gedobbeld;

            // Selecteer alle pionnen die kunnen lopen
            var pionnen = speler.Pionnen.Where(pion => pion.MogelijkeZetten(gedobbeld).Count != 0).ToList();

            // Wanneer er geen zetten mogelijk zijn doorspelen
            if (!pionnen.Any())
            {
                return;
            }
            
            // Laat speler een pion kiezen
            var gekozen = await controller.KiesPion(pionnen, gedobbeld);

            // Markeer alle kiesbare velden
            var mogelijk = gekozen.MogelijkeZetten(gedobbeld);

            // Laat speler een veld kiezen
            var veld = await controller.VerplaatsPion(gekozen, mogelijk);

            // Het spel de zet laten zetten
            gekozen.Oppakken();

            while(true)
            {
                Logic.Barricade barricade;
                try
                {
                    gekozen.Verplaats(veld);
                    return;
                }
                catch (BarricadeVerplaatsException e)
                {
                    barricade = e.Barricade;
                }
                // Barricade verplaatsen
                if (barricade == null) continue;
                var target = await controller.VerplaatsBarricade(barricade, a => a.MagBarricade);
                barricade.Verplaats(target as Veld);
            }
        }
예제 #2
0
 public Vriendelijk(Speler speler, Spel spel)
     : base(speler, spel)
 {
     _speler = speler;
     _random = spel.Random;
 }
예제 #3
0
파일: Rusher.cs 프로젝트: Roconda/Barricade
 public Rusher(Speler speler, Spel spel)
     : base(speler, spel)
 {
     _random = spel.Random;
 }
예제 #4
0
 public async Task<Tuple<Speler, int>> DobbelTask(Speler speler, int gedobbeld)
 {
     return new Tuple<Speler, int>(speler, gedobbeld);
 }
예제 #5
0
 protected BaseBot(Speler speler, Spel spel)
 {
     Speler = speler;
     Spel = spel;
 }
예제 #6
0
 public void Gewonnen(Speler speler)
 {
     Console.WriteLine(@"Speler " + speler.Name + @" heeft gewonnen!");
 }
예제 #7
0
        public async Task<Tuple<Speler, int>> DobbelTask(Speler speler, int gedobbeld)
        {
            _speler = speler;
            _gedobbeld = gedobbeld;

            DobbelKnop.IsEnabled = true;
            GetalLabel.IsEnabled = true;
            SpelerKiezer.IsEnabled = true;
            KnopRand.Visibility = Visibility.Visible;
            GetalLabel.Clear();

            var result = await _wachter.Wait();

            DobbelKnop.IsEnabled = false;
            GetalLabel.IsEnabled = false;
            SpelerKiezer.IsEnabled = false;
            KnopRand.Visibility = Visibility.Hidden;

            return result;
        }
예제 #8
0
 private void SpelerKiezer_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     IsAanBeurt = (Speler) SpelerKiezer.SelectedItem;
 }
예제 #9
0
파일: Pion.cs 프로젝트: Roconda/Barricade
 public Pion(Speler speler)
 {
     Speler = speler;
 }
예제 #10
0
 public Willekeurig(Speler speler, Spel spel)
     : base(speler, spel)
 {
     _random = spel.Random;
 }
예제 #11
0
        public void Gewonnen(Speler speler)
        {
            MessageBox.Show("Speler " + speler.Name + " heeft gewonnen!", "Er is een winnaar!", MessageBoxButton.OK,
                            MessageBoxImage.Information);

        }
예제 #12
0
 public Task<Tuple<Speler, int>> DobbelTask(Speler speler, int gedobbeld)
 {
     return _userControls.DobbelTask(speler, gedobbeld);
 }