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(); } }