コード例 #1
0
 public void InitBlocks()
 {
     InitBlockPosition();
     for (int i = 0; i < 4; i++)
     {
         Blocks[i] = new Blok(hBlockPos[i], vBlockPos[i], Color);
     }
     PositionChanged?.Invoke(this, null);
 }
コード例 #2
0
 //nieuw blok in random queue(2)
 private void OnKanNietZakken(object sender, EventArgs e)
 {
     _veld.CheckVerwijderVolleLijnen();
     _huidigBlok = _wachtrij.Dequeue();
     if (_huidigBlok.TrueForAll(pos => pos.Kleur == null))
     {
         _huidigBlok.NeemIn();
         Blok display = RandomBlok();
         _wachtrij.Enqueue(display);
         this.Dispatcher.Invoke(() =>
         {
             for (int i = 0; i < _volgendBlokLabels.Length; i++)
             {
                 _volgendBlokLabels[i].Background = Brushes.Black;
             }
             int[] indexen = display.GetDisplayIndexen();
             foreach (int i in indexen)
             {
                 _volgendBlokLabels[i].Background = display.Kleur;
             }
         });
         _huidigBlok.KanNietZakken += OnKanNietZakken; //OnKanNietZakken inschrijven bij new Blok
         ChangeColor();
     }
     else //game over
     {
         Pauze();
         _huidigBlok = null;
         _wachtrij.Clear();
         _veld.LijnenGemaakt -= OnLijnenGemaakt;
         this.Dispatcher.Invoke(() =>
         {
             _bord.Children.Add(_kiesRankBtn);
             _kiesRankComboBox.SelectedIndex = -1;
             _nieuwSpelBtn.Content           = "Nieuw spel";
             _tekstBlok.Text = StandaardText() + "\nGame Over!";
         });
     }
 }
コード例 #3
0
 //Nieuwspelbutton
 private void nieuwSpelBtn_Klik(object sender, RoutedEventArgs e)
 {
     //Stop
     if (_huidigBlok != null)
     {
         if (!_pauze)
         {
             Pauze();
         }
         var boodschap = "Wil je zeker stoppen?";
         var title     = "Stop";
         var venster   = MessageBox.Show(boodschap, title, MessageBoxButton.YesNo, MessageBoxImage.Question);
         switch (venster)
         {
         case MessageBoxResult.Yes:
             _wachtrij.Clear();
             _veld.LijnenGemaakt -= OnLijnenGemaakt;
             _huidigBlok          = null;
             foreach (Positie pos in _veld)
             {
                 pos.Kleur = null;
             }
             this.Dispatcher.Invoke(() =>
             {
                 _tekstBlok.Text       = "";
                 _nieuwSpelBtn.Content = "Nieuw spel";
                 foreach (Label lab in _volgendBlokLabels)
                 {
                     lab.Background = Brushes.Black;
                 }
                 _bord.Children.Add(_kiesRankBtn);
                 _kiesRankComboBox.SelectedIndex = -1;
             });
             ChangeColor();
             break;
         }
     }
     //Nieuw spel
     else
     {
         //rank bepalen (en timer)
         int rankIndex = _kiesRankComboBox.SelectedIndex;
         if (rankIndex != -1)
         {
             _rank           = _ranks[rankIndex];
             _timer.Interval = 550 - (rankIndex * 50);
         }
         else
         {
             //default
             _rank           = _ranks[0];
             _timer.Interval = 550;
         }
         //defaults
         foreach (Positie pos in _veld)
         {
             pos.Kleur = null;
         }
         _score               = 0;
         _aantalLijnen        = 0;
         _pauze               = false;
         _timer.Enabled       = true;
         _veld.LijnenGemaakt += OnLijnenGemaakt;
         //UI wijzigen
         this.Dispatcher.Invoke(() =>
         {
             _bord.Children.Remove(_kiesRankComboBox);
             _bord.Children.Remove(_kiesRankBtn);
             _nieuwSpelBtn.Content = "Stop";
             _tekstBlok.Text       = StandaardText();
         });
         ChangeColor();
         //start spel
         _wachtrij.Enqueue(RandomBlok());
         OnKanNietZakken(null, null);
     }
 }
コード例 #4
0
        static void Main(string[] args)
        {
            System.Console.OutputEncoding = System.Text.Encoding.Unicode;


            _timer.Interval = 500;
            _timer.Enabled  = true;
            _timer.Elapsed += new ElapsedEventHandler(TimerTikEvent);

            Console.WriteLine(Visual()); //flicker => wpf buttons
            while (true)                 //...
            {
                int random = _rnd.Next(7);
                switch (random)
                {
                case 0:
                    _huidigBlok = new Vierkant(_veld);
                    break;

                case 1:
                    _huidigBlok = new Lange(_veld);
                    break;

                case 2:
                    _huidigBlok = new Vork(_veld);
                    break;

                case 3:
                    _huidigBlok = new Z(_veld);
                    break;

                case 4:
                    _huidigBlok = new GespiegeldeZ(_veld);
                    break;

                case 5:
                    _huidigBlok = new El(_veld);
                    break;

                case 6:
                    _huidigBlok = new GespiegeldeEl(_veld);
                    break;
                }
                _nieuwBlokNodig = false;
                Console.Clear();
                Console.WriteLine(Visual());
                while (!_nieuwBlokNodig)
                {
                    if (Console.KeyAvailable)
                    {
                        ConsoleKeyInfo cki = Console.ReadKey();
                        switch (cki.Key)
                        {
                        case ConsoleKey.LeftArrow:
                            _huidigBlok.MoveHorizontal(_veld, -1);
                            Console.Clear();
                            Console.WriteLine(Visual());
                            break;

                        case ConsoleKey.RightArrow:
                            _huidigBlok.MoveHorizontal(_veld, 1);
                            Console.Clear();
                            Console.WriteLine(Visual());
                            break;

                        case ConsoleKey.UpArrow:
                            _huidigBlok.Kantel(_veld);
                            Console.Clear();
                            Console.WriteLine(Visual());
                            break;

                        case ConsoleKey.DownArrow:
                            _huidigBlok.MoveDown(_veld);
                            Console.Clear();
                            Console.WriteLine(Visual());
                            if (!_huidigBlok.KanZakken(_veld))
                            {
                                _nieuwBlokNodig = true;                                   //efficienter, eerst op kanzakken check
                            }
                            break;
                        }
                    }
                }
                _veld.CheckVerwijderVolleLijnen();
                Console.Clear();
                Console.WriteLine(Visual());
            }
        }