public void SnakeGrows() { var snake = new Snake(CurrentParams); var cell1 = new GrassCell(CurrentParams); var cell2 = new GrassCell(CurrentParams); var cell3 = new GrassCell(CurrentParams); var cell4 = new GrassCell(CurrentParams); var cell5 = new GrassCell(CurrentParams); var cell6 = new GrassCell(CurrentParams); var cell7 = new GrassCell(CurrentParams); snake.Locations.Enqueue(cell1); snake.Locations.Enqueue(cell2); snake.Locations.Enqueue(cell3); snake.Locations.Enqueue(cell4); snake.MoveSnake(cell5); snake.MoveSnake(cell6); snake.MoveSnake(cell7); Assert.AreEqual(5, snake.Locations.Count); Assert.AreEqual(cell3, snake.Locations.Dequeue()); Assert.AreEqual(cell4, snake.Locations.Dequeue()); Assert.AreEqual(cell5, snake.Locations.Dequeue()); Assert.AreEqual(cell6, snake.Locations.Dequeue()); Assert.AreEqual(cell7, snake.Locations.Dequeue()); }
public void SnakeGetsToMinimalLength() { var snake = new Snake(CurrentParams); var cell1 = new GrassCell(CurrentParams); var cell2 = new GrassCell(CurrentParams); var cell3 = new GrassCell(CurrentParams); var cell5 = new GrassCell(CurrentParams); cell5.EnteredBySnake(); var cell6 = new GrassCell(CurrentParams); cell6.EnteredBySnake(); var cell7 = new GrassCell(CurrentParams); cell7.EnteredBySnake(); snake.Locations.Enqueue(cell1); snake.Locations.Enqueue(cell2); snake.Locations.Enqueue(cell3); snake.MoveSnake(cell5); snake.MoveSnake(cell6); snake.MoveSnake(cell7); Assert.AreEqual(CurrentParams.SnakeLengthToStop, snake.Locations.Count); Assert.That(snake.IsStarving); Assert.AreEqual(cell6, snake.Locations.Dequeue()); Assert.AreEqual(cell7, snake.Locations.Dequeue()); }
static void Main() { Random random = new Random(); Snake noName = new Snake(); //noName.DrawBorder(); noName.Setup(); noName.DrawSnake(); while (!noName.isOver) { if (noName.isEating) { noName.DrawFruit(random); } if (KeyAvailable) { var key = ReadKey(true).Key; noName.MoveSnake(noName.DirectionMove(key)); } var Timer = Stopwatch.StartNew(); while (Timer.ElapsedMilliseconds <= 500) { noName.MoveSnake(noName.LastMove); } } noName.GameOver(); }
public void StarvingSnakeEating() { var snake = new Snake(CurrentParams); var cell1 = new GrassCell(CurrentParams); var cell2 = new GrassCell(CurrentParams); var cell3 = new GrassCell(CurrentParams); cell3.EnteredBySnake(); snake.Locations.Enqueue(cell1); snake.Locations.Enqueue(cell2); Assert.That(!snake.IsStarving); snake.MoveSnake(cell3); Assert.That(snake.IsStarving); cell3.UpdateGrowth(CurrentParams.NeededAliveNeighborsTurnsToGrow); snake.StarvingSnakeTurn(); Assert.That(!snake.IsStarving); }
public void SnakeDying() { var snake = new Snake(CurrentParams); var cell1 = new GrassCell(CurrentParams); var cell2 = new GrassCell(CurrentParams); var cell3 = new GrassCell(CurrentParams); cell3.EnteredBySnake(); snake.Locations.Enqueue(cell1); snake.Locations.Enqueue(cell2); Assert.That(!snake.IsStarving); snake.MoveSnake(cell3); Assert.That(snake.IsStarving); var starvingSnakeTurn = snake.StarvingSnakeTurn(); Assert.That(!starvingSnakeTurn); starvingSnakeTurn = snake.StarvingSnakeTurn(); Assert.That(starvingSnakeTurn); Assert.AreEqual(cell2, snake.Locations.Dequeue()); Assert.AreEqual(cell3, snake.Locations.Dequeue()); }
private void MainGameLoop(object sender, EventArgs e) { Snake.MoveSnake(); CheckCollision(); CreateApple(); Draw(); }
public void MetronomeUpdate() { if (!snake) { return; } if (!snake.MoveSnake()) { Destroy(snake.gameObject); } foreach (Transform child in snake.transform) { if (child.localPosition.x >= grid.width || child.localPosition.x < 0 || child.localPosition.y >= grid.height || child.localPosition.y < 0) { Destroy(snake.gameObject); } if (child.position == grid.transform.GetChild(1).position) { Destroy(grid.transform.GetChild(1).gameObject); grid.SpawnObjective(snake.transform); snake.Grow(); UpdateBpm(10); } } }
private void Move() { SnakeBlock newHead = snake.GetNewHead(moveX, moveY); if (!CheckCollision(newHead)) { if (eating) { eatingCounter--; } snake.MoveSnake(moveX, moveY); if (snake.head.x == food.x && snake.head.y == food.y) { Debug.Log("eating"); newTail = food; Debug.Log(newTail.x); Debug.Log(newTail.y); eating = true; eatingCounter = snakeLength; foodAvailable = false; } } if (changingDirection) { changingDirection = false; } }
public override void StartGame() { Reward.GenerateRandom(Map, SnakeLeftPositions, SnakeTopPositions); while (IsGameOver == false) { Thread.Sleep(SnakeSpeedInMilliseconds); //Monitor is used to prevent situation when first element was moved and before second will inherit his direction of move, //first once more changes direction of move. So the change is possible only between calls of MoveSnake method Monitor.Enter(_snake); _snake.MoveSnake(); IsGameOver = GameRules.IsGameOver(_snake, Map); Monitor.Pulse(_snake); Monitor.Exit(_snake); _doesSnakeMoved = true; if (GameRules.IsRewardCollected(_snake, Reward)) { Score++; Reward.Collect(Score); _snake.GrowSnake(); Reward.GenerateRandom(Map, SnakeLeftPositions, SnakeTopPositions); } } Display.GameOver(); }
private void ProcessKeyboard() { if (Input.GetKeyDown(KeyCode.LeftArrow)) { snake.MoveSnake(SnakeDirection.LEFT); } if (Input.GetKeyDown(KeyCode.RightArrow)) { snake.MoveSnake(SnakeDirection.RIGHT); } if (Input.GetKeyDown(KeyCode.UpArrow)) { snake.MoveSnake(SnakeDirection.UP); } if (Input.GetKeyDown(KeyCode.DownArrow)) { snake.MoveSnake(SnakeDirection.DOWN); } }
public void MoveSnakeDoesNotThrowsArgumentOutOfRangeExceptionWhenSnakeLengthIsOneTest() { // arrange var snakeBody = new List <SnakeElement> { new SnakeElement(1, 1, DirectionOfMove.Right) }; var displayStub = new Display(); var snake = new Snake(snakeBody, displayStub); // act // assert Assert.DoesNotThrow(() => snake.MoveSnake()); }