Have you tried somthing like this:
Rem
Cut & Go
EndRem
SuperStrict 'FTW
SeedRnd(MilliSecs())
Graphics 800, 600
Const FRAMESX% = 10
Const FRAMESY% = 10
Global image:TImage = LoadImage("background1.png")
Global cutImage:TImage
Type TImageCutta
Function CutImage:TImage(image:TImage, xTiles% = 2, yTiles% = 2)
Local fWidth% = image.width / xTiles
Local fHeight% = image.height / yTiles
Local tTotal% = xTiles * yTiles
Local cut:TImage = CreateImage(fWidth, fHeight, tTotal)
Cls
DrawImage image, 0, 0
Local xx%, yy%, cc%
For Local x% = 0 Until xTiles
For Local y% = 0 Until yTiles
xx = x * fWidth
yy = y * fHeight
GrabImage(cut, xx, yy, cc)
cc:+ 1
Next
Next
Return cut
End Function
End Type
cutImage = TImageCutta.CutImage(image, FRAMESX, FRAMESY)
Global puzzle%[FRAMESX, FRAMESY]
For Local x% = 0 Until FRAMESX
For Local y% = 0 Until FRAMESY
puzzle[x, y] = Rand(0, (FRAMESX * FRAMESY) - 1)
Next
Next
While Not KeyHit(KEY_ESCAPE)
Cls
For Local x% = 0 Until FRAMESX
For Local y% = 0 Until FRAMESY
DrawImage cutImage, x * cutImage.width, y * cutImage.height, puzzle[x, y]
Next
Next
Flip
Wend