listOfLines :: [Point] -> Int -> Int -> Bool -> Bool -> [[Point]] -> [[Point]]
listOfLines listOfPoint count pos theLast pointsYet acc
    | not pointsYet = acc
    | otherwise     = listOfLines listOfPoint count (myfst takingPoints) (fst (mysnd takingPoints)) (snd (mysnd takingPoints)) (acc ++ [trd takingPoints])
    where 
        takingPoints   = takeEveryPoint listOfPoint currentPoint foundDirection count (addSafePos pos count) theLast pointsYet ([currentPoint])
        currentPoint   = listOfPoint !! pos
        foundDirection = findDirection currentPoint (listOfPoint !! (addSafePos pos count))
listOfLines :: [Point] -> Int -> Int -> Bool -> Bool -> [[Point]] -> [[Point]]
listOfLines listOfPoint count pos theLast pointsYet acc
    | not pointsYet = acc
    | otherwise     = listOfLines listOfPoint count (myfst takingPoints) (fst (mysnd takingPoints)) (snd (mysnd takingPoints)) (acc ++ [trd takingPoints])
    where 
        takingPoints   = takeEveryPoint listOfPoint currentPoint foundDirection count (addSafePos pos count) theLast pointsYet ([currentPoint])
        currentPoint   = listOfPoint !! pos
        foundDirection = findDirection currentPoint (listOfPoint !! (addSafePos pos count))
listOfLines listOfPoint count pos theLast pointsYet acc
    | not pointsYet = acc
    | otherwise     = listOfLines listOfPoint count (myfst takingPoints) (fst (mysnd takingPoints)) (snd (mysnd takingPoints)) (acc ++ [trd takingPoints])
    where 
        takingPoints   = takeEveryPoint listOfPoint currentPoint foundDirection count (addSafePos pos count) theLast pointsYet ([currentPoint])
        currentPoint   = listOfPoint !! pos
        foundDirection = findDirection currentPoint (listOfPoint !! (addSafePos pos count))