Move method stuttering when MoveXY does not

I have moved this post from another thread

In python, the following code makes you move reasonably smoothly using moveXY. It makes you move towards a green flag, but you do not have to move all the way, which is the intended benefit of having move instead of moveXY. Note that the code uses removeFlag, for which you have to buy a flag shaped item.

#this means green flag close distance
gFCDist = 5

loop:
    sPos = self.pos
    sX = sPos.x
    sY = sPos.y
    greenFlag = self.findFlag("green")

    if greenFlag :
        gFPos = greenFlag.pos
        gFDist = self.distanceTo(greenFlag)
        gFDiffX = gFPos.x - sX
        gFDiffY = gFPos.y - sY
        div = 2
        
        if gFDist > 30:
            div =  10
        elif gFDist > 15 :
            div =  5
        elif gFDist <= gFCDist :
            self.removeFlag(greenFlag)
            
        gFTX = sX + gFDiffX / div
        gFTY = sY + gFDiffY / div
            
        self.moveXY(gFTX, gFTY)
    #this is just so that there is no infinite loop. Really we should use self.wait
    else:
        self.moveXY(sX, sY)
        #self.wait()

Bonus

  • you can solve the level keeping-time using only this code.

  • the green flag gets removed if you are close to it, so that it is easier to remove the green flag from the battlefield.

Remark

The code will not give your character an instruction if the green flag is too close. This should really be handled differently, but the code would more complex/longer.

Related

The issue on github