public void InitBlocks() { InitBlockPosition(); for (int i = 0; i < 4; i++) { Blocks[i] = new Blok(hBlockPos[i], vBlockPos[i], Color); } PositionChanged?.Invoke(this, null); }
//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!"; }); } }
//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); } }
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()); } }