# Zig zag and zoom level the function of (n) (Lua)

#1

the game did not translate this level or the one before it into Lua

I was able to pass the last level by guessing how to translate java into lua ( something I am getting good at now lol) however I did not understand how it worked or what I really did and now I am lost with out a clue.

so here I am.

Can any one explain what (n) dose IE:

``````local mod30 = function(n)
if (n >= 30) then
return n - 30
else
return n
end
end
``````

what dose any of that mean? and how did this

``````while (true) do
local time = hero:now()
local x = mod30(time) + 25
local y = mod40(time) + 10
hero.moveXY(x, y)
end
``````

using that make my hero move slower as he walked and seemingly randomly generate a move pattren
(the (time) + 25 added on is what made my char move slower right?)

#2

Question 1: Do you understand the concept of modulo ? (or mod )

If we have the number 7 and divide it by 3 we will get 2 with a remainder of 1 because 3 + 3 + 1 = 7 right?

All modulo does is to ask what is the remainder after I divide through by a number.

Â

Question 2: Were you asking about your special case of â€ś`if`â€ť or the codes actual case of using the `while` loop?

Â

Explanation of the code:

In the code the modulo is used to define an interval to diagonally walk up and to the right. Once you hit a maximum then it will reset and go back to 0. Thus the hero walks down.

So in the beginning from time 0 to 30 seconds, the hero has an interval of 15 seconds. Or `mod15()`, once the time is over fifteen seconds, 15 is then subtracted from its total and the Y value (up and down) goes back to 0. Or in this case 10 as ten was being added to the Y value to give an offset above the rocks below.

At time 0, Y is 10 right? At time 15, Y is also 10 right? Again if we take time and divide by 15 and ask what is the remainder, there is no remainder at a time of 0 and a time of 15. When the time is at 1 second or 16 seconds we have a remainder of 1 right?

Thus the Y value can increment upwards.

In this clever way the distance of the vertical walking lines were reset every so often so that the hero didnâ€™t bump into the rocks above or below. That is why the code uses mod9 after 30 seconds. The rocks above and below are closer, thus making for a need to reset the Y coordinate sooner.

They could have illustrated this further by making an even more narrow gap and using a smaller modulo like `mod5()`

The `mod15()` function just subtracts 15 from the number as many times as possible, leaving you with a remainder.

-HW