' *******************************************************
' MOUSE SUPPORT ADDED 13-apr-2019
'   ****************
'    aLPHABET PUZZLE
'   ****************
'   wRITTEN bY          Paul Mackay
'   WORKS GREAT / JUST A LOT OF CODE
'  Wednesday 2,2019 Text Only / No move counter, No sound
' *******************************************************
_TITLE "aLPHABET PUZZLE": SCREEN _NEWIMAGE(264, 281, 32): RANDOMIZE VAL(RIGHT$(TIME$, 2)): S& = _SNDOPEN(".\data\tick.mp3"): GL& = _SNDOPEN(".\data\ingame.ogg"): _SNDVOL S&, 1: A& = _LOADIMAGE(".\data\1.jpg", 32): B& = _LOADIMAGE(".\data\2.jpg", 32): C& = _LOADIMAGE(".\data\3.jpg", 32): D& = _LOADIMAGE(".\data\4.jpg", 32): E& = _LOADIMAGE(".\data\5.jpg", 32): F& = _LOADIMAGE(".\data\6.jpg", 32): G& = _LOADIMAGE(".\data\7.jpg", 32): H& = _LOADIMAGE(".\data\8.jpg", 32): I& = _LOADIMAGE(".\data\9.jpg", 32): _DISPLAY: SQUARE$ = "123456789": GOSUB RANDOMSTART
_SNDLOOP GL&
START: GOSUB SHOWSQUARES: GOSUB KEYINPUT: IF SQUARE$ = "123456789" THEN GOSUB SHOWSQUARES: END ELSE GOTO START
SHOWSQUARES: FOR I = 1 TO 9: CURRENT$ = MID$(SQUARE$, I, 1): CURRENT = VAL(CURRENT$): SELECT CASE I: CASE 1: X = 1: Y = 1: CASE 2: X = 88: Y = 1: CASE 3: X = 175: Y = 1: CASE 4: X = 1: Y = 95: CASE 5: X = 88: Y = 95: CASE 6: X = 175: Y = 95: CASE 7: X = 1: Y = 189: CASE 8: X = 88: Y = 189: CASE 9: X = 175: Y = 189: END SELECT: GOSUB DISPSHOW: NEXT I: _DISPLAY: RETURN
SWAPPED: SWAP SW2$, SW1$: _SNDPLAYCOPY S&, 1: RETURN
OVER: _SNDSTOP GL&: _FREEIMAGE A&: _FREEIMAGE B&: _FREEIMAGE C&: _FREEIMAGE D&: _FREEIMAGE E&: _FREEIMAGE F&: _FREEIMAGE G&: _FREEIMAGE H&: _FREEIMAGE I&: END
DISPSHOW: SELECT CASE CURRENT: CASE 1: _PUTIMAGE (X, Y), A&: CASE 2: _PUTIMAGE (X, Y), B&: CASE 3: _PUTIMAGE (X, Y), C&: CASE 4: _PUTIMAGE (X, Y), D&: CASE 5: _PUTIMAGE (X, Y), E&: CASE 6: _PUTIMAGE (X, Y), F&: CASE 7: _PUTIMAGE (X, Y), G&: CASE 8: _PUTIMAGE (X, Y), H&: CASE 9: _PUTIMAGE (X, Y), I&: END SELECT: RETURN


RANDOMSTART: S1$ = "": FOR I = 1 TO 9: DO: X = INT(RND(1) * 9) + 1: IF MID$(SQUARE$, X, 1) <> "0" THEN S1$ = S1$ + MID$(SQUARE$, X, 1): MID$(SQUARE$, X, 1) = "0" ELSE IF SQUARE$ = "000000000" THEN EXIT DO
LOOP: NEXT I: SQUARE$ = S1$: RETURN


KEYINPUT: DO: I$ = INKEY$: DO WHILE _MOUSEINPUT: MX = _MOUSEX: MY = _MOUSEY: GOSUB MOUSEPOS: LOOP: Z = 1: DO: IF MID$(SQUARE$, Z, 1) = "9" THEN EXIT DO ELSE Z = Z + 1
    LOOP: IF I$ = "+" THEN SQUARE$ = "123456789": GOSUB RANDOMSTART: RETURN
    IF SQUARE$ = "123456789" THEN RETURN
    LOOP WHILE I$ = "": SELECT CASE Z
    CASE 1: IF I$ = "8" THEN SW1$ = MID$(SQUARE$, 1, 1): SW2$ = MID$(SQUARE$, 4, 1): GOSUB SWAPPED: MID$(SQUARE$, 1, 1) = SW1$: MID$(SQUARE$, 4, 1) = SW2$ ELSE IF I$ = "4" THEN SW1$ = MID$(SQUARE$, 1, 1): SW2$ = MID$(SQUARE$, 2, 1): GOSUB SWAPPED: MID$(SQUARE$, 1, 1) = SW1$: MID$(SQUARE$, 2, 1) = SW2$
    CASE 2: IF I$ = "8" THEN SW1$ = MID$(SQUARE$, 2, 1): SW2$ = MID$(SQUARE$, 5, 1): GOSUB SWAPPED: MID$(SQUARE$, 2, 1) = SW1$: MID$(SQUARE$, 5, 1) = SW2$ ELSE IF I$ = "4" THEN SW1$ = MID$(SQUARE$, 2, 1): SW2$ = MID$(SQUARE$, 3, 1): GOSUB SWAPPED: MID$(SQUARE$, 2, 1) = SW1$: MID$(SQUARE$, 3, 1) = SW2$ ELSE IF I$ = "6" THEN SW1$ = MID$(SQUARE$, 2, 1): SW2$ = MID$(SQUARE$, 1, 1): GOSUB SWAPPED: MID$(SQUARE$, 2, 1) = SW1$: MID$(SQUARE$, 1, 1) = SW2$
    CASE 3: IF I$ = "6" THEN SW1$ = MID$(SQUARE$, 3, 1): SW2$ = MID$(SQUARE$, 2, 1): GOSUB SWAPPED: MID$(SQUARE$, 3, 1) = SW1$: MID$(SQUARE$, 2, 1) = SW2$ ELSE IF I$ = "8" THEN SW1$ = MID$(SQUARE$, 3, 1): SW2$ = MID$(SQUARE$, 6, 1): GOSUB SWAPPED: MID$(SQUARE$, 3, 1) = SW1$: MID$(SQUARE$, 6, 1) = SW2$
    CASE 4: IF I$ = "2" THEN SW1$ = MID$(SQUARE$, 4, 1): SW2$ = MID$(SQUARE$, 1, 1): GOSUB SWAPPED: MID$(SQUARE$, 4, 1) = SW1$: MID$(SQUARE$, 1, 1) = SW2$ ELSE IF I$ = "4" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 4, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 4, 1) = SW2$ ELSE IF I$ = "8" THEN SW1$ = MID$(SQUARE$, 4, 1): SW2$ = MID$(SQUARE$, 7, 1): GOSUB SWAPPED: MID$(SQUARE$, 4, 1) = SW1$: MID$(SQUARE$, 7, 1) = SW2$
    CASE 5: IF I$ = "2" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 2, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 2, 1) = SW2$ ELSE IF I$ = "4" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 6, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 6, 1) = SW2$ ELSE IF I$ = "6" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 4, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 4, 1) = SW2$ ELSE IF I$ = "8" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 8, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 8, 1) = SW2$
    CASE 6: IF I$ = "2" THEN SW1$ = MID$(SQUARE$, 6, 1): SW2$ = MID$(SQUARE$, 3, 1): GOSUB SWAPPED: MID$(SQUARE$, 6, 1) = SW1$: MID$(SQUARE$, 3, 1) = SW2$ ELSE IF I$ = "6" THEN SW1$ = MID$(SQUARE$, 6, 1): SW2$ = MID$(SQUARE$, 5, 1): GOSUB SWAPPED: MID$(SQUARE$, 6, 1) = SW1$: MID$(SQUARE$, 5, 1) = SW2$ ELSE IF I$ = "8" THEN SW1$ = MID$(SQUARE$, 6, 1): SW2$ = MID$(SQUARE$, 9, 1): GOSUB SWAPPED: MID$(SQUARE$, 6, 1) = SW1$: MID$(SQUARE$, 9, 1) = SW2$
    CASE 7: IF I$ = "2" THEN SW1$ = MID$(SQUARE$, 7, 1): SW2$ = MID$(SQUARE$, 4, 1): GOSUB SWAPPED: MID$(SQUARE$, 7, 1) = SW1$: MID$(SQUARE$, 4, 1) = SW2$ ELSE IF I$ = "4" THEN SW1$ = MID$(SQUARE$, 7, 1): SW2$ = MID$(SQUARE$, 8, 1): GOSUB SWAPPED: MID$(SQUARE$, 7, 1) = SW1$: MID$(SQUARE$, 8, 1) = SW2$
    CASE 8: IF I$ = "2" THEN SW1$ = MID$(SQUARE$, 8, 1): SW2$ = MID$(SQUARE$, 5, 1): GOSUB SWAPPED: MID$(SQUARE$, 8, 1) = SW1$: MID$(SQUARE$, 5, 1) = SW2$ ELSE IF I$ = "4" THEN SW1$ = MID$(SQUARE$, 8, 1): SW2$ = MID$(SQUARE$, 9, 1): GOSUB SWAPPED: MID$(SQUARE$, 8, 1) = SW1$: MID$(SQUARE$, 9, 1) = SW2$ ELSE IF I$ = "6" THEN SW1$ = MID$(SQUARE$, 8, 1): SW2$ = MID$(SQUARE$, 7, 1): GOSUB SWAPPED: MID$(SQUARE$, 8, 1) = SW1$: MID$(SQUARE$, 7, 1) = SW2$
    CASE 9: IF I$ = "2" THEN SW1$ = MID$(SQUARE$, 9, 1): SW2$ = MID$(SQUARE$, 6, 1): GOSUB SWAPPED: MID$(SQUARE$, 9, 1) = SW1$: MID$(SQUARE$, 6, 1) = SW2$ ELSE IF I$ = "6" THEN SW1$ = MID$(SQUARE$, 9, 1): SW2$ = MID$(SQUARE$, 8, 1): GOSUB SWAPPED: MID$(SQUARE$, 9, 1) = SW1$: MID$(SQUARE$, 8, 1) = SW2$
END SELECT: RETURN
MOUSEPOS:
M% = 0: B = _MOUSEBUTTON(1): IF B = 0 THEN RETURN
IF MX > 1 AND MX < 89 AND MY > 1 AND MY < 93 AND B = -1 THEN M% = 1
IF MX > 90 AND MX < 175 AND MY > 1 AND MY < 93 AND B = -1 THEN M% = 2
IF MX > 176 AND MX < 263 AND MY > 1 AND MY < 93 AND B = -1 THEN M% = 3
IF MX > 1 AND MX < 89 AND MY > 92 AND MY < 188 AND B = -1 THEN M% = 4
IF MX > 90 AND MX < 175 AND MY > 92 AND MY < 188 AND B = -1 THEN M% = 5
IF MX > 176 AND MX < 263 AND MY > 92 AND MY < 188 AND B = -1 THEN M% = 6
IF MX > 1 AND MX < 89 AND MY > 187 AND MY < 279 AND B = -1 THEN M% = 7
IF MX > 90 AND MX < 175 AND MY > 187 AND MY < 279 AND B = -1 THEN M% = 8
IF MX > 176 AND MX < 263 AND MY > 187 AND MY < 279 AND B = -1 THEN M% = 9
IF M% = 0 THEN RETURN
SELECT CASE M%
    CASE 1: IF MID$(SQUARE$, 2, 1) = "9" THEN SW1$ = MID$(SQUARE$, 1, 1): SW2$ = MID$(SQUARE$, 2, 1): GOSUB SWAPPED: MID$(SQUARE$, 1, 1) = SW1$: MID$(SQUARE$, 2, 1) = SW2$ ELSE IF MID$(SQUARE$, 4, 1) = "9" THEN SW1$ = MID$(SQUARE$, 1, 1): SW2$ = MID$(SQUARE$, 4, 1): GOSUB SWAPPED: MID$(SQUARE$, 1, 1) = SW1$: MID$(SQUARE$, 4, 1) = SW2$
    CASE 2: IF MID$(SQUARE$, 1, 1) = "9" THEN SW1$ = MID$(SQUARE$, 1, 1): SW2$ = MID$(SQUARE$, 2, 1): GOSUB SWAPPED: MID$(SQUARE$, 1, 1) = SW1$: MID$(SQUARE$, 2, 1) = SW2$ ELSE IF MID$(SQUARE$, 3, 1) = "9" THEN SW1$ = MID$(SQUARE$, 2, 1): SW2$ = MID$(SQUARE$, 3, 1): GOSUB SWAPPED: MID$(SQUARE$, 2, 1) = SW1$: MID$(SQUARE$, 3, 1) = SW2$ ELSE IF MID$(SQUARE$, 5, 1) = "9" THEN SW1$ = MID$(SQUARE$, 2, 1): SW2$ = MID$(SQUARE$, 5, 1): GOSUB SWAPPED: MID$(SQUARE$, 2, 1) = SW1$: MID$(SQUARE$, 5, 1) = SW2$
    CASE 3: IF MID$(SQUARE$, 2, 1) = "9" THEN SW1$ = MID$(SQUARE$, 2, 1): SW2$ = MID$(SQUARE$, 3, 1): GOSUB SWAPPED: MID$(SQUARE$, 2, 1) = SW1$: MID$(SQUARE$, 3, 1) = SW2$ ELSE IF MID$(SQUARE$, 6, 1) = "9" THEN SW1$ = MID$(SQUARE$, 3, 1): SW2$ = MID$(SQUARE$, 6, 1): GOSUB SWAPPED: MID$(SQUARE$, 3, 1) = SW1$: MID$(SQUARE$, 6, 1) = SW2$
    CASE 4: IF MID$(SQUARE$, 5, 1) = "9" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 4, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 4, 1) = SW2$ ELSE IF MID$(SQUARE$, 1, 1) = "9" THEN SW1$ = MID$(SQUARE$, 1, 1): SW2$ = MID$(SQUARE$, 4, 1): GOSUB SWAPPED: MID$(SQUARE$, 1, 1) = SW1$: MID$(SQUARE$, 4, 1) = SW2$ ELSE IF MID$(SQUARE$, 7, 1) = "9" THEN SW1$ = MID$(SQUARE$, 4, 1): SW2$ = MID$(SQUARE$, 7, 1): GOSUB SWAPPED: MID$(SQUARE$, 4, 1) = SW1$: MID$(SQUARE$, 7, 1) = SW2$
    CASE 5: IF MID$(SQUARE$, 2, 1) = "9" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 2, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 2, 1) = SW2$ ELSE IF MID$(SQUARE$, 4, 1) = "9" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 4, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 4, 1) = SW2$ ELSE IF MID$(SQUARE$, 6, 1) = "9" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 6, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 6, 1) = SW2$ ELSE IF MID$(SQUARE$, 8, 1) = "9" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 8, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 8, 1) = SW2$
    CASE 6: IF MID$(SQUARE$, 3, 1) = "9" THEN SW1$ = MID$(SQUARE$, 3, 1): SW2$ = MID$(SQUARE$, 6, 1): GOSUB SWAPPED: MID$(SQUARE$, 3, 1) = SW1$: MID$(SQUARE$, 6, 1) = SW2$ ELSE IF MID$(SQUARE$, 5, 1) = "9" THEN SW1$ = MID$(SQUARE$, 5, 1): SW2$ = MID$(SQUARE$, 6, 1): GOSUB SWAPPED: MID$(SQUARE$, 5, 1) = SW1$: MID$(SQUARE$, 6, 1) = SW2$ ELSE IF MID$(SQUARE$, 9, 1) = "9" THEN SW1$ = MID$(SQUARE$, 6, 1): SW2$ = MID$(SQUARE$, 9, 1): GOSUB SWAPPED: MID$(SQUARE$, 6, 1) = SW1$: MID$(SQUARE$, 9, 1) = SW2$
    CASE 7: IF MID$(SQUARE$, 4, 1) = "9" THEN SW1$ = MID$(SQUARE$, 7, 1): SW2$ = MID$(SQUARE$, 4, 1): GOSUB SWAPPED: MID$(SQUARE$, 7, 1) = SW1$: MID$(SQUARE$, 4, 1) = SW2$ ELSE IF MID$(SQUARE$, 8, 1) = "9" THEN SW1$ = MID$(SQUARE$, 7, 1): SW2$ = MID$(SQUARE$, 8, 1): GOSUB SWAPPED: MID$(SQUARE$, 7, 1) = SW1$: MID$(SQUARE$, 8, 1) = SW2$
    CASE 8: IF MID$(SQUARE$, 7, 1) = "9" THEN SW1$ = MID$(SQUARE$, 7, 1): SW2$ = MID$(SQUARE$, 8, 1): GOSUB SWAPPED: MID$(SQUARE$, 7, 1) = SW1$: MID$(SQUARE$, 8, 1) = SW2$ ELSE IF MID$(SQUARE$, 5, 1) = "9" THEN SW1$ = MID$(SQUARE$, 8, 1): SW2$ = MID$(SQUARE$, 5, 1): GOSUB SWAPPED: MID$(SQUARE$, 8, 1) = SW1$: MID$(SQUARE$, 5, 1) = SW2$ ELSE IF MID$(SQUARE$, 9, 1) = "9" THEN SW1$ = MID$(SQUARE$, 8, 1): SW2$ = MID$(SQUARE$, 9, 1): GOSUB SWAPPED: MID$(SQUARE$, 8, 1) = SW1$: MID$(SQUARE$, 9, 1) = SW2$
    CASE 9: IF MID$(SQUARE$, 8, 1) = "9" THEN SW1$ = MID$(SQUARE$, 8, 1): SW2$ = MID$(SQUARE$, 9, 1): GOSUB SWAPPED: MID$(SQUARE$, 8, 1) = SW1$: MID$(SQUARE$, 9, 1) = SW2$ ELSE IF MID$(SQUARE$, 6, 1) = "9" THEN SW1$ = MID$(SQUARE$, 6, 1): SW2$ = MID$(SQUARE$, 9, 1): GOSUB SWAPPED: MID$(SQUARE$, 6, 1) = SW1$: MID$(SQUARE$, 9, 1) = SW2$
END SELECT
GOSUB SHOWSQUARES
RETURN
