Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interpret : TurtlePar -> List String -> List (Svg.Svg msg)
- interpret turtlePar commands =
- if isEmpty commands then
- [ drawTurtle first (first turtlePar) first (second turtlePar) second turtlePar ]
- else
- let
- cmdType : String -> String
- cmdType str =
- Maybe.withDefault "" (head (split " " str))
- cmdArg : String -> String
- cmdArg str =
- Maybe.withDefault "" (head (Maybe.withDefault [] (tail (split " " str))))
- posTrans : TurtlePar -> String -> String -> TurtlePar
- posTrans prevTurtle cmdTip cmdOp =
- if cmdTip == "F" then
- ( ( round (toFloat (first (first prevTurtle)) + (cos (toFloat (second prevTurtle)) * toFloat cmdOp)), round (toFloat (second (first prevTurtle)) + (sin (toFloat (second prevTurtle)) * toFloat cmdOp)) ), second prevTurtle )
- else if cmdTip == "R" then
- ( first prevTurtle, (second prevTurtle + toInt cmdOp) % 360 )
- else
- ( ( -1, -1 ), -1 )
- calcPoint : TurtlePar -> String
- calcPoint turtle =
- toString (first (first turtle)) ++ "," ++ toString (second (first turtle))
- in
- if cmdTip == "F" then
- [ Svg.polyline [ points (calcPoint turtle ++ " " ++ calcPoint (posTrans turtlePar cmdType commands cmdArg commands)), fill "none", stroke "black" ] [] ] ++ interpret (posTrans turtlePar cmdType commands cmdArg commands) (Maybe.withDefault [] (tail commands))
- else if cmdTip == "R" then
- interpret (posTrans turtlePar cmdType commands cmdArg commands) (Maybe.withDefault [] (tail commands))
- else
- []
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement