private SnakeAction RandomMove(GameBoard gameBoard) { var random = new Random(); var currentPosition = gameBoard.GetMyHead(); do { var direction = (Direction)random.Next(Enum.GetValues(typeof(Direction)).Length - 1); BoardPoint nextPosition = currentPosition.Value; switch (direction) { case Direction.Down: nextPosition = currentPosition.Value.ShiftTop(); break; case Direction.Left: nextPosition = currentPosition.Value.ShiftRight(); break; case Direction.Right: nextPosition = currentPosition.Value.ShiftLeft(); break; case Direction.Up: nextPosition = currentPosition.Value.ShiftBottom(); break; case Direction.Stop: continue; break; } if (gameBoard.IsBadThingAt(nextPosition)) { continue; } return(new SnakeAction(false, direction)); } while (false); var act = random.Next() % 2 == 0; return(new SnakeAction(false, Direction.Right)); }