Ejemplo n.º 1
0
        public void move()
        {
            if (_gamePaused || _gameOver)
            {
                return;
            }

            Int32 newX = _snake.DirectionX + _snake.getHead()._posX;
            Int32 newY = _snake.DirectionY + _snake.getHead()._posY;

            if (ValidStep(newX, newY))
            {
                if (_table.GetValue(newX, newY) == 2) // ha kajába ütköztem, akkor a farok az marad ami volt
                {
                    _table.SetValue(newX, newY, 1);   // a fejet mozgatom egyel a megfelelő irányba
                    _snake.AddElementToSnake(new SnakeBodyPart(newX, newY));
                    _gameScore++;
                    Table.Score = _gameScore;

                    SnakeMoved(this, new SnakeEventArgs(_gameScore, false, _snake.getHead()._posX, _snake.getHead()._posY, _snake.getLast()._posX,
                                                        _snake.getLast()._posY, true));
                    GenerateRandomFood(GameTableSize);
                }
                else if (_table.GetValue(newX, newY) == 0)                              // ha nem kajába ütköztem, akkor leveszem a farkat.
                {
                    _table.SetValue(newX, newY, 1);                                     // a fejet mozgatom egyel a megfelelő irányba
                    _table.SetValue(_snake.getLast()._posX, _snake.getLast()._posY, 0); // s a faroknak pedig új helye lesz.
                    _snake.AddElementToSnake(new SnakeBodyPart(newX, newY));            // ToDo: directiont beállítani.
                    Int32 oldPosXofTail = _snake.getLast()._posX;                       // ez a két kordináta azért kell, hogy tudjam léptetni a kígyót a felületen
                    Int32 oldPosYofTail = _snake.getLast()._posY;
                    _snake.StepTheTailOfTheSnake();
                    if (SnakeMoved != null)
                    {
                        SnakeMoved(this, new SnakeEventArgs(_gameScore, false, _snake.getHead()._posX, _snake.getHead()._posY, oldPosXofTail,
                                                            oldPosYofTail, false));
                    }
                }
                else // ha saját magának megy a kígyó akkor legyen vége
                {
                    _gameOver = true;
                    GameOver(this, new SnakeEventArgs(_gameScore, true, _snake.getHead()._posX, _snake.getHead()._posY, _snake.getLast()._posX,
                                                      _snake.getLast()._posY, false));
                    _gameTimer.Stop();
                }
                OnMoveChange();
            }
            else // ha falnak megy a kígyó akkor legyen vége
            {
                _gameOver = true;
                GameOver(this, new SnakeEventArgs(_gameScore, true, _snake.getHead()._posX, _snake.getHead()._posY, _snake.getLast()._posX,
                                                  _snake.getLast()._posY, false));
                _gameTimer.Stop();
            }
        }