You are using integer variables for the u and v
These need to be floats - change to u# and v#
if you want it to do a full cycle, you should also reset back to a minus value rather than zero - but this depends on what your final goal is.
Try this instead to demo the effect
SetDisplayAspect( 4.0/3.0 )
setviewzoom(0.25)
img_play = loadimage("playn.png")
spr_play = createsprite(img_play)
setspritepositionbyoffset(spr_play, 200, 200)
u# = 0.0
v# = 0.0
do
u# = u# + 0.01
v# = v# + 0.01
if u# > 0.99 then u# = -0.99
if v# > 0.99 then v# = -0.99
setspriteuvoffset(spr_play, u#, v#)
Sync()
loop
I've also reduced the amount it moves to make it more visible
edit: added code changes