Beispiel #1
0
        public void StartGameLoop()
        {
            while (_window.IsOpen)
            {
                // check wave progress
                if (_targets.Count == 0)
                {
                    NextWave();
                }

                _window.DispatchEvents();
                _window.Clear(Color.Black);

                DrawScore();

                // Move player
                if (_arrowKeyDown != Direction.NONE)
                {
                    _player.Move(_arrowKeyDown, screenRect);
                }

                // draw player
                _player.Draw(_window);

                // draw all targets to the screen
                foreach (Target t in _targets)
                {
                    if (!_isSolving)
                    {
                        t.Oscillate(_waveOscilatingDir);
                    }
                    t.Draw(_window);
                }

                // revert target direction when outer targets hit the screen edge
                if (_targets.Count > 0 && Target.HasOuterTargetHitScreenEdge(_targets))
                {
                    if (_waveOscilatingDir == Direction.LEFT)
                    {
                        _waveOscilatingDir = Direction.RIGHT;
                    }
                    else if (_waveOscilatingDir == Direction.RIGHT)
                    {
                        _waveOscilatingDir = Direction.LEFT;
                    }
                }

                if (_isSolving)
                {
                    DrawEquationSolver();
                }
                else
                {
                    HandleTargetCollision();
                }

                // refresh screen
                _window.Display();
            }
        }