QB64 Phoenix Edition
Find the ball - classic shell game - Printable Version

+- QB64 Phoenix Edition (https://staging.qb64phoenix.com)
+-- Forum: QB64 Rising (https://staging.qb64phoenix.com/forumdisplay.php?fid=1)
+--- Forum: Code and Stuff (https://staging.qb64phoenix.com/forumdisplay.php?fid=3)
+---- Forum: Programs (https://staging.qb64phoenix.com/forumdisplay.php?fid=7)
+---- Thread: Find the ball - classic shell game (/showthread.php?tid=380)

Pages: 1 2 3


Find the ball - classic shell game - Dav - 05-09-2022

I put this together last night for a younger relative to play.  It's the classic cups and ball, or shell game.  The ball hides under a cup, cups are shuffled around, you click on the cup you think the ball is under.  There's no score keeping, it just keeps looping over with a new game.  Mildly entertaining to play for a while I suppose.  The fun for me was making it.  This uses the power of RotoZoom3 to animate/shuffle the cups. 

- Dav

Code: (Select All)
'============
'FINDBALL.BAS
'============
'Classic Cups & Ball game (shell game)
'Coded by Dav, MAY/2022

'Cups will shuffle.  Click the cup with the ball.
'If selected correctly, screen flashes green.  If not,
'screen will flash red.  This could be turned into a
'game easy, with score keeping and speed changes.
'For now it just loops over and over.

RANDOMIZE TIMER

SCREEN _NEWIMAGE(1000, 600, 32)

cup& = BASIMAGE1& 'decode cup image to use
ball& = BASIMAGE2& 'decode ball image to use

'=== draw background
CLS , _RGB(232, 232, 255)
LINE (0, 350)-(_WIDTH, _HEIGHT), _RGB(128, 255, 128), BF

'=== grab background image
back& = _COPYIMAGE(_DISPLAY)

speed = 75 'speed for _LIMIT
moves = 15 'how many shuffle moves to do


DO

    cupball = INT(RND * 3) + 1 'make random cupball number (1,2,or 3)

    GOSUB ShowBall 'show where ball is first

    'shuffle the cups
    FOR m = 1 TO moves
        SELECT CASE INT(RND * 6) + 1 'random move
            CASE 1: GOSUB move1to2
            CASE 2: GOSUB move1to3
            CASE 3: GOSUB move2to1
            CASE 4: GOSUB move2to3
            CASE 5: GOSUB move3to1
            CASE 6: GOSUB move3to2
        END SELECT
    NEXT

    GOSUB PlaceCups 'make sure they are placed right

    selected = 0 'not selected yet

    DO
        WHILE _MOUSEINPUT: WEND
        IF _MOUSEBUTTON(1) THEN
            mx = _MOUSEX: my = _MOUSEY
            'clicked cup 1
            IF mx > 114 AND mx < 316 AND my > 146 AND my < 439 THEN
                IF cupball = 1 THEN selected = 1
                EXIT DO
            END IF
            'clicked cup 2
            IF mx > 378 AND mx < 600 AND my > 146 AND my < 439 THEN
                IF cupball = 2 THEN selected = 1
                EXIT DO
            END IF
            'clicked cup 3
            IF mx > 694 AND mx < 911 AND my > 146 AND my < 439 THEN
                IF cupball = 3 THEN selected = 1
                EXIT DO
            END IF
        END IF
    LOOP

    'make sure mouse button up to continue
    DO UNTIL _MOUSEBUTTON(1) = 0: m = _MOUSEINPUT: LOOP

    'flash screen based on selection
    IF selected = 0 THEN
        'flash red - wrong one
        LINE (0, 0)-(_WIDTH, _HEIGHT), _RGBA(255, 0, 0, 100), BF
        _DISPLAY
        _DELAY .25
    ELSE
        'flash green - selected right
        LINE (0, 0)-(_WIDTH, _HEIGHT), _RGBA(0, 255, 0, 100), BF
        _DISPLAY
        _DELAY .25
    END IF

    GOSUB ShowBall 'show where ball is

LOOP

END

'===================================================================
PlaceCups: 'shows all cups in place
'=========
'Place all cups first
_PUTIMAGE (0, 0), back&
RotoZoom3 200, 300, cup&, 1, 1, 0
RotoZoom3 500, 300, cup&, 1, 1, 0
RotoZoom3 800, 300, cup&, 1, 1, 0
_DISPLAY
RETURN
'=====

'===================================================================
ShowBall: 'Raises cup to show ball
'=======

'make sure showing all cups first
GOSUB PlaceCups

_DISPLAY: _DELAY 1

'raise a cup based on cupball number
SELECT CASE cupball
    CASE IS = 1 'raise cup 1
        _PUTIMAGE (0, 0), back&
        FOR y = 300 TO 175 STEP -7
            _PUTIMAGE (0, 0), back&
            RotoZoom3 500, 300, cup&, 1, 1, 0
            RotoZoom3 800, 300, cup&, 1, 1, 0
            RotoZoom3 210, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 200, y, cup&, 1, 1, 0 'cup over
            _DISPLAY
            _LIMIT 50
        NEXT
    CASE IS = 2 'raise cup 2
        _PUTIMAGE (0, 0), back&
        FOR y = 300 TO 175 STEP -7
            _PUTIMAGE (0, 0), back&
            RotoZoom3 200, 300, cup&, 1, 1, 0
            RotoZoom3 800, 300, cup&, 1, 1, 0
            RotoZoom3 510, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 500, y, cup&, 1, 1, 0 'cup over
            _DISPLAY
            _LIMIT 50
        NEXT
    CASE IS = 3 'raise cup 3
        _PUTIMAGE (0, 0), back&
        FOR y = 300 TO 175 STEP -7
            _PUTIMAGE (0, 0), back&
            RotoZoom3 200, 300, cup&, 1, 1, 0
            RotoZoom3 500, 300, cup&, 1, 1, 0
            RotoZoom3 810, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 800, y, cup&, 1, 1, 0 'cup over
            _DISPLAY
            _LIMIT 50
        NEXT
END SELECT

_DELAY 1 'pause to see ball

'now lower the same a cup
SELECT CASE cupball
    CASE IS = 1 'lower cup 1
        _PUTIMAGE (0, 0), back&
        FOR y = 175 TO 300 STEP 7
            _PUTIMAGE (0, 0), back&
            RotoZoom3 500, 300, cup&, 1, 1, 0
            RotoZoom3 800, 300, cup&, 1, 1, 0
            RotoZoom3 210, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 200, y, cup&, 1, 1, 0 'cup over
            _DISPLAY
            _LIMIT 50
        NEXT
    CASE IS = 2 'lower cup 2
        _PUTIMAGE (0, 0), back&
        FOR y = 175 TO 300 STEP 7
            _PUTIMAGE (0, 0), back&
            RotoZoom3 200, 300, cup&, 1, 1, 0
            RotoZoom3 800, 300, cup&, 1, 1, 0
            RotoZoom3 510, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 500, y, cup&, 1, 1, 0 'cup over
            _DISPLAY
            _LIMIT 50
        NEXT
    CASE IS = 3 'lower cup 3
        _PUTIMAGE (0, 0), back&
        FOR y = 175 TO 300 STEP 7
            _PUTIMAGE (0, 0), back&
            RotoZoom3 200, 300, cup&, 1, 1, 0
            RotoZoom3 500, 300, cup&, 1, 1, 0
            RotoZoom3 810, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 800, y, cup&, 1, 1, 0 'cup over
            _DISPLAY
            _LIMIT 50
        NEXT
END SELECT

RETURN
'=====


'===================================================================
move1to2: 'moves cup 1 over to cup 2
'=======
cup1z = 1: cup2z = 1: cup3z = 1
FOR move = 1 TO 300 STEP 15
    _PUTIMAGE (0, 0), back& 'redraw background
    'cup 3 stays in place
    RotoZoom3 800, 300, cup&, cup3z, cup3z, 0
    'cup 2 shrinks, going under cup 1, moving left
    RotoZoom3 500 - move, 300 - cup2z, cup&, cup2z, cup2z, 0
    IF move > 150 THEN cup2z = cup2z + .03 ELSE cup2z = cup2z - .03
    'cup 1 enlarges, going over cup 2, moving right
    RotoZoom3 200 + move, 300 * cup1z, cup&, cup1z, cup1z, 0
    IF move > 150 THEN cup1z = cup1z - .03 ELSE cup1z = cup1z + .03
    _DISPLAY
    _LIMIT speed
NEXT
'swap ball placement
SELECT CASE cupball
    CASE 1: cupball = 2
    CASE 2: cupball = 1
END SELECT

RETURN
'=====


'===================================================================
move1to3: 'move cup 1 over to cup 3
'=======
cup1z = 1: cup2z = 1: cup3z = 1
FOR move = 1 TO 300 STEP 8
    _PUTIMAGE (0, 0), back&
    'cup 3 shrinks, moves left two places
    RotoZoom3 800 - (move * 2), 300 - cup3z, cup&, cup3z, cup3z, 0
    IF move > 150 THEN cup3z = cup3z + .02 ELSE cup3z = cup3z - .02
    'cup 2 stays in place
    RotoZoom3 500, 300, cup&, cup2z, cup2z, 0
    'cup 1 enlarges, moving right two places
    RotoZoom3 200 + (move * 2), 300 * cup1z, cup&, cup1z, cup1z, 0
    IF move > 150 THEN cup1z = cup1z - .02 ELSE cup1z = cup1z + .02
    _DISPLAY
    _LIMIT speed * 1.7
NEXT
SELECT CASE cupball
    CASE 1: cupball = 3
    CASE 3: cupball = 1
END SELECT

RETURN
'=====

'===================================================================
move2to1: 'move cup 2 over to cup 1
'=======
cup1z = 1: cup2z = 1: cup3z = 1
FOR move = 1 TO 300 STEP 15
    _PUTIMAGE (0, 0), back&
    '3rd cup stays in place
    RotoZoom3 800, 300, cup&, cup3z, cup3z, 0
    'cup 1 shrinks, moving right
    RotoZoom3 200 + move, 300 - cup1z, cup&, cup1z, cup1z, 0
    IF move > 150 THEN cup1z = cup1z + .03 ELSE cup1z = cup1z - .03
    'cup 2 enlarges, moving left
    RotoZoom3 500 - move, 300 * cup2z, cup&, cup2z, cup2z, 0
    IF move > 150 THEN cup2z = cup2z - .03 ELSE cup2z = cup2z + .03
    _DISPLAY
    _LIMIT speed
NEXT
SELECT CASE cupball
    CASE 1: cupball = 2
    CASE 2: cupball = 1
END SELECT

RETURN
'=====

'===================================================================
move2to3: 'move cup 2 over to cup 3
'=======
cup1z = 1: cup2z = 1: cup3z = 1
FOR move = 1 TO 300 STEP 15
    _PUTIMAGE (0, 0), back&
    'cup 1 stays in place
    RotoZoom3 200, 300, cup&, cup1z, cup1z, 0
    'cup 3 shrinks under, moves left 1 cup,
    RotoZoom3 800 - move, 300 - cup3z, cup&, cup3z, cup3z, 0
    IF move > 150 THEN cup3z = cup3z + .03 ELSE cup3z = cup3z - .03
    'cup 2 enlarges over, moves right 1 cup
    RotoZoom3 500 + move, 300 * cup2z, cup&, cup2z, cup2z, 0
    IF move > 150 THEN cup2z = cup2z - .03 ELSE cup2z = cup2z + .03
    _DISPLAY
    _LIMIT speed
NEXT
SELECT CASE cupball
    CASE 2: cupball = 3
    CASE 3: cupball = 2
END SELECT

RETURN

'===================================================================
move3to1: 'move cup 3 over to cup 1
'=======
cup1z = 1: cup2z = 1: cup3z = 1
FOR move = 1 TO 300 STEP 8
    _PUTIMAGE (0, 0), back&
    'cup 1 shrinks under, moving right two cup places,
    RotoZoom3 200 + (move * 2), 300 - cup1z, cup&, cup1z, cup1z, 0
    IF move > 150 THEN cup1z = cup1z + .02 ELSE cup1z = cup1z - .02
    'cup2 stays in place
    RotoZoom3 500, 300, cup&, cup2z, cup2z, 0
    'cup 3 enlarges over, moving left two cup places,
    RotoZoom3 800 - (move * 2), 300 * cup3z, cup&, cup3z, cup3z, 0
    IF move > 150 THEN cup3z = cup3z - .02 ELSE cup3z = cup3z + .02
    _DISPLAY
    _LIMIT speed * 1.7
NEXT
SELECT CASE cupball
    CASE 3: cupball = 1
    CASE 1: cupball = 3
END SELECT

RETURN
'=====

'===================================================================
move3to2: 'move cup 3 over to cup2
'=======
cup1z = 1: cup2z = 1: cup3z = 1
FOR move = 1 TO 300 STEP 15
    _PUTIMAGE (0, 0), back&
    'cup1 stays in place
    RotoZoom3 200, 300, cup&, cup1z, cup1z, 0
    'cup 2 shrinks under, moves right 1 cup
    RotoZoom3 500 + move, 300 - cup2z, cup&, cup2z, cup2z, 0
    IF move > 150 THEN cup2z = cup2z + .03 ELSE cup2z = cup2z - .03
    'cup 3 enlarges over, moves left 1 cup,
    RotoZoom3 800 - move, 300 * cup3z, cup&, cup3z, cup3z, 0
    IF move > 150 THEN cup3z = cup3z - .03 ELSE cup3z = cup3z + .03
    _DISPLAY
    _LIMIT speed
NEXT
SELECT CASE cupball
    CASE 3: cupball = 2
    CASE 2: cupball = 3
END SELECT

RETURN


SUB RotoZoom3 (X AS LONG, Y AS LONG, Image AS LONG, xScale AS SINGLE, yScale AS SINGLE, radianRotation AS SINGLE)
    ' This assumes you have set your drawing location with _DEST or default to screen.
    ' X, Y - is where you want to put the middle of the image
    ' Image - is the handle assigned with _LOADIMAGE
    ' xScale, yScale - are shrinkage < 1 or magnification > 1 on the given axis, 1 just uses image size.
    ' These are multipliers so .5 will create image .5 size on given axis and 2 for twice image size.
    ' radianRotation is the Angle in Radian units to rotate the image
    ' note: Radian units for rotation because it matches angle units of other Basic Trig functions
    '       and saves a little time converting from degree.
    '       Use the _D2R() function if you prefer to work in degree units for angles.

    DIM px(3) AS SINGLE: DIM py(3) AS SINGLE ' simple arrays for x, y to hold the 4 corners of image
    DIM W&, H&, sinr!, cosr!, i&, x2&, y2& '   variables for image manipulation
    W& = _WIDTH(Image&): H& = _HEIGHT(Image&)
    px(0) = -W& / 2: py(0) = -H& / 2 'left top corner
    px(1) = -W& / 2: py(1) = H& / 2 ' left bottom corner
    px(2) = W& / 2: py(2) = H& / 2 '  right bottom
    px(3) = W& / 2: py(3) = -H& / 2 ' right top
    sinr! = SIN(-radianRotation): cosr! = COS(-radianRotation) ' rotation helpers
    FOR i& = 0 TO 3 ' calc new point locations with rotation and zoom
        x2& = xScale * (px(i&) * cosr! + sinr! * py(i&)) + X: y2& = yScale * (py(i&) * cosr! - px(i&) * sinr!) + Y
        px(i&) = x2&: py(i&) = y2&
    NEXT
    _MAPTRIANGLE _SEAMLESS(0, 0)-(0, H& - 1)-(W& - 1, H& - 1), Image TO(px(0), py(0))-(px(1), py(1))-(px(2), py(2))
    _MAPTRIANGLE _SEAMLESS(0, 0)-(W& - 1, 0)-(W& - 1, H& - 1), Image TO(px(0), py(0))-(px(3), py(3))-(px(2), py(2))
END SUB

FUNCTION BASIMAGE1& 'cup.png
    v& = _NEWIMAGE(235, 336, 32)
    DIM m AS _MEM: m = _MEMIMAGE(v&)
    A$ = ""
    A$ = A$ + "haIkM^Z\ULK50=O66UZ<`h1KZ=gP;dLGYlg`DVIP13l0SQikHh14H0Q5BZ:h"
    A$ = A$ + "4JZ9gn<GecFZgjEgB]N]0[JNN?W^E_GmFB]d^odWndOhC000L9nOoWomW<lO"
    A$ = A$ + "oWoeRbojS?^d?_lH[e]C0DKTaknla=Wj<l?n;o9_lgocoX:nno7jk1G661RU"
    A$ = A$ + "c;G?JgKNlR5o]?lMQignf3lago^RSegQhkOoHeagce_acQBRVOjjQ6OK;>f4"
    A$ = A$ + "WokodgHa_nSOmdQllCee=N]`YCaUaI1G2iPblQblObLKbhBO^i_l3oaZA[Me"
    A$ = A$ + "#^[?7f=?M>iXaUG;TnYd9=i4U^fV?lcOoGU5ed=kI?EbI>?dlLY[od[OeWaK"
    A$ = A$ + "W7BY?[?cEZdWEILF^>:^jiLE]c9ON\9_\<?\_l^h`m;^i;gmagj[J\nUfcNi"
    A$ = A$ + "8iYUfOmM>kVkeTgeh_Tg]?`=gYjllhhXYjU]boVE7]Fn^Vk:ck:ciRgf67Ej"
    A$ = A$ + "VKNY_aI:mbFkHhVg;76W[`MaI[WKjjWVnfjVcLDcER[FFLKkTmCfeIaK;SSJ"
    A$ = A$ + "=^CWlWb[;mlh:aIKW[jfnY=fFcmoaG_VSn\?^:i?G5o4W]\>[i_?DNfF7o?2"
    A$ = A$ + "4J<XVfmEa7?S_R7W?BOe<oah[nAV7mYSnKOkd?6dBk\alHh8Vf:[i>6O=ZSj"
    A$ = A$ + ">GAaLDLedLH8^[Zi[dOHM?eMlXmnJ#HdXe>aXPKoQgR=K]WdJliYKaES`j5J"
    A$ = A$ + "DYe^#_Sel3oJL9c=lGV3Y[hYhZh[e`EUkoW]aU]b^jfinEjg;^:^J]`Moj]j"
    A$ = A$ + "^jF>eWkm<ajdM;6Zgg?;c2]f7jEdfS][\[J6WjfhfUk1][hZcZcFjHALe`]9"
    A$ = A$ + "J^jFLjZ>G`bWQJYMeIbKe^WOY8D<k8B9SILmEcL1_RiFMG_3VfT]hUBjZSZ_"
    A$ = A$ + "6ZoIedE7EO]da<K]3ba\^b?WE;GED[R^bl;MG>K9n>JMOG;aaaMd>Mg>ZaCU"
    A$ = A$ + "[72ijj7Ge^fIFCO=gHVJM?QBi7gmWAZ^J_L]h\NjQJZ:^ZU[^GC0cH=0G;W]"
    A$ = A$ + "VnOYbcNGLgikJQSJ^68mDI=Z4Gm;^jQJG]ccai^^VECOLdLfJM>fj[MJG7?D"
    A$ = A$ + "WeLZSjhZnMEI>fLZg3m\OfJg[7miFN]dT7eJLYNR3aE?f7HIMLFn^RXde1dJ"
    A$ = A$ + "hY]dI>clmf;^lMO=DjXk[?OUH>j3LV^ZX]c]ff[Ekc^K7m>M_LMdcncg:_]f"
    A$ = A$ + "^YEmAc=?ZBl6^JR^ZFKXkkU2AoS;]cfC>J[HDMFO>ZUOj9^bgkl;LeS?cVLl"
    A$ = A$ + "E]L]YlNTY7mdFkUg]cNEOemJQkalQgG>nbQVPWR[VQ[V1aN?#icIKiHAK];f"
    A$ = A$ + "bL\ij]QjG[d;;J\4^JELeH>K<^khDLEo]1IoNQ]Fa#hZEeE3RWgYgV[?YdOj"
    A$ = A$ + "FjYSlgKXS1O_WFC]?[U6Le>fECHL;aN_QgjlOm4Nco5jmRn5^>Q[>Q^JTH2i"
    A$ = A$ + "kWgHhK^Y?;nRece?>[CMfnPj[?YbfgCe^NS^9^j0hZ>>kIME[[abl7GdOSVO"
    A$ = A$ + "bC^:OoOZnaRWWEnEKGaEk0G]2c;#?A:nC87B]m9cn1hmiM5Y_0Q>NkVkaFk["
    A$ = A$ + "K\oEG6GmP_V2alQ2hZN_?BV7[]^]5G]^\G33kYn03P0]n0_Re`5=G]eGK69T"
    A$ = A$ + "]IYVkSfi;d>S[niJ>:a#W:ni:djcQA1CkUimlh:kZTGmla?hZgGKm:WG=imI"
    A$ = A$ + "34=>27]n]a[jL;9kokcfS0k9O0J9kc3lSGFbn1_o^ah3OGeFge0D2T?;[]ol"
    A$ = A$ + ":UKeTCehYbebVFMY2PFR97R<nLEb]J6WZaC=ki2b[2i`MllXT[52inoI5b]:"
    A$ = A$ + "7Wjfi]LO6CoPQD8Wi#[Tc[V\_O[`hFU?W6CNEcnnWa]2Y#9N>Ei6O]moG>F]"
    A$ = A$ + "]o^EbEMOGHX]>eaIQFR\?`bm9hfofF^eI^O`K^jncYA<gBKnZjNkPWE8L38O"
    A$ = A$ + "^<FoMRaZ:SA=[SYIfE=?[6IKAfk3;UmTE[_F3c3JcWdQWGa2iZZi9C`=mjdT"
    A$ = A$ + "_5^0^aQAgKm;Z[j[m:emRMdJS0^;88DNRD[;=[R[VjnE=TgVMM51gMj9ii3>"
    A$ = A$ + "ch9_a#_67_4^JRSe\h]g9Fc3JML7DVHR[F[Ylfg_gZC4C_[nhUTMeT_NUCOH"
    A$ = A$ + "BLnZ`Sk#O<Sa7MF7E^fOmNLmfon:iZ1_VUH=\cgea;=obW`UKMlm8bIbAV[c"
    A$ = A$ + "UZ;kN]=hal2jZU>6o\m;:WHScT;NUMjBUSl\>J>gc=icU9gEgGcBEdE;am]C"
    A$ = A$ + "mnhU>_lXjj9MLGPLT9gnGafAGGMFGWQ]`E;I\eIMeRf?l6h`Ga5;QSVKKa]4"
    A$ = A$ + "k\P^J[c9TE\i9m[RWG^2iZ;Y7FdkOeQm_H5Lemj[DWkZIk`96CGEG]RL;7gM"
    A$ = A$ + "V?VS[>SSIMdMe;iaE:odMjXWfE[dH7aE_9GM0_6M;nL7ilUL^LJMKO=^>>[^"
    A$ = A$ + "jFOjefS=]^MOdXY>lRhRYN=HkgKFC`cdHF?DSAG`[agAlC=YeWSm2^^j\=oB"
    A$ = A$ + "hZ`\`\kZVaZR[2S>J^j<=VENOH0c4ka`Chk=3LEHVHfMEjo;<;X=G`]fa`EQ"
    A$ = A$ + "NTF7o<k^jNoOW\e\4\NH57?Ie72LEHVHjMe7_H]6HJMk=0W5ij4Kk?S[2#Ob"
    A$ = A$ + "<kZbggZhZ`XSaE=ej`]hkFkHhZ0L4LE063`E1H<HFMEcN\1G5V5dLeIH_fP["
    A$ = A$ + "2c6hZ0<6<[^ZI?fHEWA`EQ16gHiIH_fHZcBF^:[MOH`aZ6G9LeA>g:^:<S\B"
    A$ = A$ + "^J[K[1hZ<[^jfNl3G5V9Tacc#]7EFo2aEQI2GGMdW;HLEHFIfLEI]6Uj2=<C"
    A$ = A$ + "8SWWQJ?:^:<[<[^Z\FSR[2c0FacC#]7M_n5R[2C6^^jXG?3eZeXhZ`<PKll<"
    A$ = A$ + "jZ]^=6PBa\iZKm?`ml2PI0[Hj1_fSJEGPaEQ93ga\>l^ZkiD7d63#9`=^6G5"
    A$ = A$ + "PnTIbEOn\EOl2k5>H:A^ghfncSL=BSm]:<cX]?FK]cE:G]e]]0DJ`E1H<H6L"
    A$ = A$ + "EIm;Tn03c8Jm1N4gGLF^:N:<Y8S_aE1XOI6LE[JR6n:<Qh6K?Zk;>[JR6^:<"
    A$ = A$ + "Qh6K?R[Oo3e_#lDHBAcE7Yn1C]K1F56mJiRV[fjfD0Z5hZ0<6<3^ZL_[fjfC"
    A$ = A$ + "0Z5SL=B3G5F96MGe]n5fjfC0Z5SLm<dZVXajf7VLTkQeAcE=momii1^:<i8M"
    A$ = A$ + "ECoPK]3VU[n`No2ejfC0Z5^aihZ0dW<j^jna?^:<ih6[S[2#Ob`kZ_NLoago"
    A$ = A$ + ">LEHjahZVhmAcEg>^aEQE0Y[^1^:0m9SZ[JZM;hZ`ZPV[>2kQELEHeHDMEcj"
    A$ = A$ + "f7G5F5dLeAHM6JF;`k^:N:\0\5WKRi7Qe4\EMFb<7fhZ`2PaEgRk7Qj^T[[B"
    A$ = A$ + "oOQE1ijQ0G5Pn5LE0636=GMkh3G5FAdLeNNnU\ZOQhZ`2Q[[fk?g6LEHE1G5"
    A$ = A$ + "PaPAeEUe_#LEH5`:NO0ZmXJeJDLEH5`eEkme^4^:\Z<\^ZkaN7dF2#=a=N_g"
    A$ = A$ + "ME[j2<^:\#L8N_c[C`Jc[4^:\2L8VO4LE]Sk>X]4PJRF<oXiZ]^=4Pk2LE06"
    A$ = A$ + "36=GUno2[:^anhZ0dW<:^ZYn5R[2[:J^J?^7FaEQEWAbEO^oJ`EQ55gHo=OX"
    A$ = A$ + "7Memj11^:\XXiZmhj<DcEKMK70g=m^[JECd`EQ56=G]Wj7\?G5O5F9le7hNc"
    A$ = A$ + "Eg[M;hY`2S[[fKc5\EMF2G5FHdLeNJ<[DWU0hcX]_hjFGm]JG8^:\R\kZ_j1"
    A$ = A$ + "hZ0d_<2^jNMFRJ2<\h\kZ?j_j^TINUNNLR[2;>^^J?]OK`E1h;dk^jNm;4G5"
    A$ = A$ + "FLT^J_ESd\NN=hZ`RSU7dA^ZI=;9?6KMK50]6I>[NI];I]7cOkmTE[KW0Xe8"
    A$ = A$ + "O?9R[2#oB_jZF__EaE1`b7jUj3QdEohkO7^:0?Nab7jFGUi06PWN#_iZVeGh"
    A$ = A$ + "fa5^:0O6S[^A_\>3aE1h8hZ0<6P[2`H#_iZFe4=acCZe]C0dJT[gPNX6YQ[2"
    A$ = A$ + "P>hZ0<6dK^ZEm;4G5PMLMeFG;G>DWU`E1h9F[?n>X^;Q[2P>hZ0<6de^:e`K"
    A$ = A$ + "0fYgZYghZ0XC?jZke_#LE0fae7JmJGbZFSR[2`>J^J[ZAJbgSSJ7K0\bhcEK"
    A$ = A$ + "ajQH_n5JZ;`hZ0\c1Oh]a\fJGUgUi0Hc1WX7LE]S[>X]2PFRVCdK^J[KS0XG"
    A$ = A$ + "XWLEVG90lSfl;eBGUno2P>^^1^:0m9mR[^_7caE1#5=G]5[M9=G]e]=0dKdE"
    A$ = A$ + "^jKk3>LE0>b^[:ZU;]`EgggZhZ0XRdEgl5LE0jCJ][JZOQhZ046=Gm>W;H[e"
    A$ = A$ + "2<^:0NaeE_ke^dQj\4^:0ZXiZgIoPgMe7_P[2#0\Le7_P[2#WB?jZ]^=1PNU"
    A$ = A$ + "FjZFe^5LE02RdE_kj^4^:0YC[Le3e4=LE02RV[N7?g6LE0bSFkZke4=LE02R"
    A$ = A$ + "UWLS[72LE0bSFiZ7N_HlF^M00o8cYMGk=>[mH^iMFG7dF0#?SlMN:^:0m;MQ"
    A$ = A$ + "[bHE18:BOi>MEN?V3#NHe?dKJ?WS[2#nd<GmaWkom7Ook`E181flTWnbKc_c"
    A$ = A$ + "MjZKO_hZ0T66GMS]olMkZd7H0B3COP_;GejM37SG5PTamILFke^4^:0W3LE0"
    A$ = A$ + "63^KGm#]K1G5PT#cE[iHFaE1hLP[2`H`MjZVg;6hZ0T?nLeJ<VEEGUj2<09Q"
    A$ = A$ + "_j4l]hZl>B6PTaeGZ][JECd`E18ILmUJFSdT^Zlk5G5Phhj<hZ0dWLW^ZI\Z"
    A$ = A$ + "hZ0T?nLeJlLK\NW[R[2#FL`IZhkRe3eJDLE0B6=WYFeM9O^J[K30HD0G5PaP"
    A$ = A$ + "kdEI\Z0LNd6cJEMEaJ;4G5PdabE[Hm<DFo2aE18O>hZ?ZCMGbZVXQ[2#f8mV"
    A$ = A$ + "JFSd`E1hJLG^ZIoe8MeFO^3`XQ[[^iEebEIO[2`iAKO\FB?m#m;4G5PCQV[F"
    A$ = A$ + "be_?^:0UQJkZDkF0X<h[F^DJGM_n>Q[2`Y#jZKoJ9MEIMF2G5P[Q?G]4m3fh"
    A$ = A$ + "ZkkaLLE0>=^^ZImkG2Gm#mP0G5PCSV[FZn1S[2#i0G5PaPk`EggkZhZ0LJLM"
    A$ = A$ + "eBFgU`E1XLDKGeZf]`kK:0^4^NDYZU;F^:_Kh0hb\kZ_]fU:][BoO1X<hkI\"
    A$ = A$ + "F2GUaZ2#i#K<[U`E]N7>R[2`UiP[nX<kSE]gSihZ0LN\Le2^Wc=[IoWe^5LE"
    A$ = A$ + "0^<BGeDCT:V[Jn<aE1hbL`EOmGaE1XoX6^ZYf]\miI0G5P[Q\F6JhZeb5LE0"
    A$ = A$ + ":?hZ0<6DJGMkWceEIlZ0LML7_ZdE?S_:[cBhZ0D>liZW]F^HECdHNP1XHhKN"
    A$ = A$ + "PaE1X_XF^jcmH3^:053=Gm:ec`]O>LE0:?QLec\OK\Z9JhZ0D<liZW]F^hjZ"
    A$ = A$ + "\?K0X<h^?K`E1X?YF^jcJ21^:053=Gm:ec#LE0Z3e`EOFo2U^Zik0G5PCSdS"
    A$ = A$ + "T^jI[AJnZeXhY0LMdZS;WaE=[Iom?CbY2#Ai#^EA=B;ee3QjkKEbY2#ai`hF"
    A$ = A$ + "o#N_?FgWCY77kk;^:0U3ea]nhUTVS9IOOef7LhZ0D>LMESc]m_5Z_`J[EOgJ"
    A$ = A$ + "1Q;]nL5PA3O^TU_5I]l;ONZbO>LE0:7YhZ?c]6hi]j^>maE1XlTZ[JVW9gJA"
    A$ = A$ + "ZILZbOVOoWn6LE0:<YjZn6gjf_OcQUNZQ#^:n:0YC8?BcE=SKEjZViD:V[Zm"
    A$ = A$ + "mejcO065dLW#^j6bebTLnO?S[R_2#Lli=YTGe<O`J^ZdGaE1hjTS[jKM<9gC"
    A$ = A$ + "iJ^j6QjW=^:0a9V3M`EOk_G^7dmmLEoeOl[ObCGeI];Q[2#N4dEMGkAbeO_h"
    A$ = A$ + "i\6cEg#K]6R[2#jTZWJe7HWmP^?GM;OZdE3i[]^M0PNWchY^^jnjeGI]5^i["
    A$ = A$ + "ob?l7SVK]e]30dk4J<ZbeMT_lZVWaZ_e\_9gjV_^?W`h[0T5abY6bEM[E4BG"
    A$ = A$ + "ePlciWon_JgGINV08=bI<ZYjZbe3\V_Jb]^A\iI2W5FMbI>O3>NeGoo[]?Fg"
    A$ = A$ + "[_X2OeML[YdGHlEHU9TSV[WJ6[JXJgRfWSGO=an4So2c6nRa?USjTcMkccgn"
    A$ = A$ + "Ge]VXiji^c;\eNV;QWmZV[Rk2S4Ja_NMeLLDWn7_mkSESddZgBk[7HQ_:GCC"
    A$ = A$ + "Yj[idoHb13]RLR??KNd#NZ<WJ\JIXEM<<#nE=OEkHh\]EhZ#;8Wh_LWgXDbW"
    A$ = A$ + "^miVck:3gj>ZkgQkcNEeI_P_AOUQkTLRg:J^d?lMFoKKOnin>]A^oKf?nn]_"
    A$ = A$ + "=Z_j[Oaid>4[]YeGGQiQHaFAS7MF?PihXFmIe9OJZeMOOef#gk18ocBW=VgN"
    A$ = A$ + "Un6OU[7Gic0j;l=G8WmcjDOgW]o^>o\?on_`k8>Oc?lcSEWkUX=6FScVbL6G"
    A$ = A$ + "j[MnV;;b;?n4L>M^`LINZ_OWeOP\f<h>>#OiRgn<ciMRAfm9fImBhn\Qdba:"
    A$ = A$ + "?Gl^f7c\=Eno=e[QhZS=iLMfgemLSaliWJNJ`e9TWei#9mD]n47:7[_kg8ck"
    A$ = A$ + "jj_WaK3Uo<deeF7_1egES5GTegCRnI\nljV;]4mi=UL\knZ97[km=lh[^^Jb"
    A$ = A$ + "iLCHm<R[>oDR[oA9`l45:FegcRa:gcK_?TcimfHYba:ccjNN6;7[[kj;WKXl"
    A$ = A$ + "^aLALeiRLj[KbnJ2i=SiX7b[hTSa]V9MG>Z_aa^g_h0]1Ydgh#NKXkSMf[_]"
    A$ = A$ + ">nKeidiobhJIXlValbH>J\iNAjYgI^dH>[Vg6kl;FOT3i_U`IKM\jZC=MD[?"
    A$ = A$ + "O5o<DOibaA]Nn;>nI_hXI=NfCT_eGNgHS[G;6#N][eaW#HG=eO^HGCeRgBI^"
    A$ = A$ + ">C>7ZkaMS6?jEAVWmPkVhcA>dmibY?;7bknjaQYMERi_o996GEkn_e;nc]NN"
    A$ = A$ + ";^>hmJTcaZKLS_WKH:aFYjYBg\eS7]TN[ilAmic6hinLEWFK\4^a4YjZ]8F^"
    A$ = A$ + "dnM[?VCjHGaEEMd4F;>nF_j9?fC?cGTiiSN7?kUk6gadjV_ednWBkF>]iiBb"
    A$ = A$ + "?SX;NlLfkAYMlM9O=bm<_jmAE?OSdV6jNbYL?j[>^cmSi?lUnQ9cO>2S5]6i"
    A$ = A$ + "KeFO5Q^>7jJOXl7Qb5WT;UHldMAZ[KT#NIY>FZQWh>VBgLU^[kLOcMQil>Fk"
    A$ = A$ + "XfOoFkG?llFj52U_eZo?:cEPJoJC8F]dNC^gO?7R=7UYj1elHl\WGQVSOge;"
    A$ = A$ + "CB?oMUhP#^ZKNC3[Lnc[h`FmE>R_Jm[1j_EBmA<QnS5;><ghD=dbW4:7C^ol"
    A$ = A$ + "iL\TjcD;Wc[DOFj1c;ZLm:DOgUgOgM^Q`9_V_VENg#g7=B>Hg?3OmG<eL6Ge"
    A$ = A$ + "C;Q_F;G]4NZFoHU^ZI>L>#\lU:ckO\lVhYeeSEcmJ^FjLMdmjGBNMTafEbnn"
    A$ = A$ + "MeHMghmDLfkfASegmHcmZln\n^nI6WYfcCa4cdjHgEVHiNCjIVNaWED[6GH?"
    A$ = A$ + "<VjBN<kKl;aNn>abIfjHD8<VkSjKn[>hcAjKE?BdW5b=m\^:jiSWn_jN]Cfg"
    A$ = A$ + "EbI>O4J<`n67\aQ?eJ=X#?ObTleCl<;;bm8llmWJkU<7Y_aEbH;1Y3k3I<R?"
    A$ = A$ + "7?enM?BinbNnd3dODO>WF^AGJM\1<fTS3k^VFeh\^]jLX5ImTLFg;4ihT]nJ"
    A$ = A$ + "70BB9o\?O_Gagi0i110P_`o7c`W^%%%0"
    btemp$ = ""
    FOR i& = 1 TO LEN(A$) STEP 4: B$ = MID$(A$, i&, 4)
        IF INSTR(1, B$, "%") THEN
            FOR C% = 1 TO LEN(B$): F$ = MID$(B$, C%, 1)
                IF F$ <> "%" THEN C$ = C$ + F$
            NEXT: B$ = C$: END IF: FOR j = 1 TO LEN(B$)
            IF MID$(B$, j, 1) = "#" THEN
        MID$(B$, j) = "@": END IF: NEXT
        FOR t% = LEN(B$) TO 1 STEP -1
            B& = B& * 64 + ASC(MID$(B$, t%)) - 48
            NEXT: X$ = "": FOR t% = 1 TO LEN(B$) - 1
            X$ = X$ + CHR$(B& AND 255): B& = B& \ 256
    NEXT: btemp$ = btemp$ + X$: NEXT
    btemp$ = _INFLATE$(btemp$,m.SIZE)
    _MEMPUT m, m.OFFSET, btemp$: _MEMFREE m
    BASIMAGE1& = _COPYIMAGE(v&): _FREEIMAGE v&
END FUNCTION

FUNCTION BASIMAGE2& 'ball.png
    v& = _NEWIMAGE(100, 99, 32)
    DIM m AS _MEM: m = _MEMIMAGE(v&)
    A$ = ""
    A$ = A$ + "haIkM^SSULL45EK5jB#j#j#K^1X?g3L=X=S\4Xf3bAN22#0bAK1jC718d2i8"
    A$ = A$ + "L8>jP8cZNmlYkIdHTXNeWg_hVghNS8[ne?mdCo^Wn8Jl[ojonY7mj^kcicS7"
    A$ = A$ + "37niOnGNjWnYoiCOkgnGNjkn^ojCOogogNj7oaoaK6[Sch7nQonK6L>6[Woj"
    A$ = A$ + "eiGnUoeKfnILjnanePhmJ;ajenP7L\eiiJhjIo5^hWkjh[S]N=Fk3flBoMne"
    A$ = A$ + "fPHBSIlHfB\MM^_iKncoF\gL2oLlSGl3S]`ghinILioR34?Fah6G1CFaNNlj"
    A$ = A$ + "LLm[S_h:6o<Wal4b[ak1SbSFSoO0Khk8iS#3PHZWccSGKoj_n?mK7O]e77L0"
    A$ = A$ + "\TLIFSYhDaTV?cL8`V?Ua77g0;J>V_j[nS_I0^\Rm>?5KiiKL4L[ijHdg;[3"
    A$ = A$ + "EO0\oWJhajk3cWGOoH>oJ[c]\fWcicclOOLh5`7<N`ila<6DMWV_bL6kQkC1"
    A$ = A$ + "LQio<?VHIe\]NPSUFOQ[5>bjJIh[Qg_6kW`2^^VcZibFjo<nH5GPC`lJ`Sef"
    A$ = A$ + "_l;o3o?j1Mn]SINn^7P9h3^NcjnljHLfh>hajc4HE[YiS9=O[IcgEVo1>HMF"
    A$ = A$ + "66Chk^a:N<n[hh53Lle_g4OMLfl8S?L=>nk]`AFWOEob;M<o:lXnR<W`NT#["
    A$ = A$ + "`i_LlKYWcccaGWCSg7k9XNPkFc]Vh7UghSaaMN\efGjhn^QW;_RWV?\3?jS;"
    A$ = A$ + "6Jl`ajeS9FiJ8Jm:E?gL1beE<QGGV3<EkB[KiU>fGN1cG17:oPib;M3Vkcn["
    A$ = A$ + "]niQ^`jHe?\WWRnTc_\N^[hSeE\6d47Qc3NJl`nPkk??VJmO=XYPGFW_`iR\"
    A$ = A$ + "gDcAje0NDM2b7I^1WOM>fjjnJn?S9^F3cOZ?\ZW=i?cjkXYlBS9N^b:V^V_c"
    A$ = A$ + "LNc1ji:7aOGao5N`\7Gh46;L]KT7cNQiHegKk;cTWRbGVZ]deX\`UG:NQ[;f"
    A$ = A$ + "iK86kloCnEij<naSA3bJ?>>^>VcQKM5S[CnMM]ifCUmT]c;\emme1N\^n?de"
    A$ = A$ + "X#o`]_DV_kh[i5P;LN?0;9>ae3G`ccWVW2FD_34OmjVh1H2_^Xghn]H?FmmU"
    A$ = A$ + "i2UO`[k72L0]k>oN:7ediikD?GcAINW[Qca:[oC>:RYXEhHF[C1<\LGN^]Nm"
    A$ = A$ + "jMXc9<?1\im9?1]Kc5\F\e8^3nhLCLMPcNOdGLLScI\ShWkkEm2kLB`KlaL^"
    A$ = A$ + ">[a<M=Ci]\NRGGbg7h1a]El1N]cg<EC1h5HXW[GM3O=P1]F2l137S_oT?[nJ"
    A$ = A$ + "MmfnJ\nSk=Yi3Pa6;]oH[1IlP_OPg_?jIo2WGOf8>eikkh7nlClSRa^>Ub3J"
    A$ = A$ + "ODLmUPG]WTMnKi34[K_RWZmXi]LLg7W??_?l1K=3g3SV7JbK[c[17bJ?niHn"
    A$ = A$ + "6aIZ7T_O^ol`SJOiiL=7Ue6\VMmmB>8g3IS5>?f4oYH6Hek:O`P5NN\kAKi1"
    A$ = A$ + "TOZJ3NOO<SaCh2ji6?LmO4C\gFc=L=l>GFkSYS]6?VZiPSgJJ#cXjj_;efa?"
    A$ = A$ + "X[YXLRF_AgWL863m[UgjN]hGofWBfB\cm6YJbV;dLknh>>jNhkJB0G;_Y[[8"
    A$ = A$ + "_7P_LM_]LS9O#]7DCa`6gGO7nR_hg?VcRSGOIF[`NKkajlI^^FOX_?Q0K[n="
    A$ = A$ + "eb<M?MiNTdj5mLQbChinf`AH=<H>Xk_Ti8lmRhjTVM7[[cl2Z3O5;\O1oJCL"
    A$ = A$ + "_lYV;bHVi7fSUaTCjd=fglFFKcNOkmdRgOMm?7oFN]<#K]iS:_ahAmJI^ROM"
    A$ = A$ + "<WYL3cA\nQeI\7;?GaJg>7_WokJk9Nfm;_`7OjNO`jk5C`[ecAKO]fGFgce1"
    A$ = A$ + "F=4??gjkFKOGmP>6Jn`dLL`4?_dcEF7gehhJ48nHN1JSlhNO<<iEfnfZGHSm"
    A$ = A$ + "mn8RmG_O?7lXaT9OCEcM:WD[=_ihhj]_:Z3H:gUO\i0lIbHg^J4LOZJMe>ob"
    A$ = A$ + "^Jm:gYNb<G\m\Q]?bm6^[]bi=8>K_>CiVFG3i^J^]jCKb_\a57WI>Q_oi`C;"
    A$ = A$ + "iI\6m^jUGGSi0f[TciH_JWdBlj<feVWgCS7`G^;g0Mcj_MZWjWh6\MB7W7kn"
    A$ = A$ + "oB]6`1H[mRaaMnYFWNS;fkZa1N>63J>^^FiMM2]6R[i_HYeUNTeh5Ml67WlK"
    A$ = A$ + "JmK7k=NhAe>\7PbA8V?E3Ze<J=RnnmRH#7XohLCP;PAfCTSQMoNOcIO^VSJ<"
    A$ = A$ + "5]mkLoY#<Qi]4;[o5VSklH>?e4F`cah8io[?FkOXn]#GQlZlLZfQmCanPONm"
    A$ = A$ + ":ZoDjE7iijlJkcZiiVlkJN67WgS[dAXWQ5CfYKK?[>7d>^1c]]>Ni2nhTCZn"
    A$ = A$ + "j#W_N;Z?Wfk9RAT_kT6Na:[QDoC>VkgO`=SU<FGcMbEe_S^nPFgPa6S3E3_i"
    A$ = A$ + "NVRm]>4k3NZ70f?3jl]7F6;JM7=fajnfn4bfYJgM]7]o8<gHB3RS][f`ngRA"
    A$ = A$ + "[=PhBcgH=3`Sj_]i\VdULlgLYRW^n2S9]OiN[cOG]SF;Q_?M9W5m6Xi\:7ae"
    A$ = A$ + "WG=WjgV?CWZ5aeefJ;LLNZ^^CNZZ^OaVR3<O`H2iiVZGTL?NhN\he`]aD?_W"
    A$ = A$ + "jWK?1I=aWdfieXN\=6<i9cO6fU[Zc3kjMdHoT>Bef[>dT_=O==7W?>n`;VdN"
    A$ = A$ + "WS^=l0FCaYNP`lId:\647SccXiTLN#_F:EGYikhLCi[lkAScCNHW`Vb30?kc"
    A$ = A$ + "amj]l3jYH7CmX1_7CHR[W0]UYid6;lJNgijklSI<^i7giAfhgJkT_GdkVR1C"
    A$ = A$ + "ik;fd7?QUV3ihkjHF?X_gX7cSYnJ[kKn\WoiLF4cZ_FR=`9hhCmC\nFKO6M="
    A$ = A$ + "oXUK\OjeI:WEe^mlmYhnD<_hada>U_ceH2?Uh??Vjm<F\nnhG3lcjih4[0O\"
    A$ = A$ + "WFhF`=VbAI]4WgJWOFS7W`eMJ85;HnfD\KBo^HDm2<EoMeThjJOR[>6a?R7\"
    A$ = A$ + "n9N=XjmHGkiT[ScaG7o[f#aRYHMa7kg]mGaioZ6bT?c9L`aZCeSGn#iCCJD^"
    A$ = A$ + "nS^N8lHjY1KiiiiJPM^GF^>mMnT<NhJcMl]L3[7ILZeWLE=;UOdoNFMlgcCg"
    A$ = A$ + "YY_;WfEiYVl=dN;F_g>g:GgTVZeh[gO[KPfIeVMl_lXZEG=jZ]DNAW3dOcEl"
    A$ = A$ + "mHVSYf_IcYM:f_;of4^HMn9<Rgkf3;^6h4MMX<7QScl[YN;eloCcgW6f[PGO"
    A$ = A$ + "4ZAehe4NDnab_5i8LOXJ^nMnYVdD^3_HGo`f]F_X5cn>7T[K`miemNWJc]fC"
    A$ = A$ + "a3h0=7h9\`[cB[=deA^[g`^6Mn]cQGg9>`ELRChd^lJnjFOGVhR5GHNVcQiJ"
    A$ = A$ + "dmn^_DN0NI?^FGfmKdj4f3l^NkF?0=Wf4V`SK]P`g[VaEH`^LEChDaEl]Bm7"
    A$ = A$ + "CNl\f5O>]N_mNI\HZWRM=YVjUUkGKaP9]W9lYHbM`3[OPomYk7QMnJ?YQgmi"
    A$ = A$ + "eag7Y6gJMSN=A0gJ^:gW=OOGH\`[52eNH>C[93mTfCFGkA[UKROdjj_:OeJD"
    A$ = A$ + "lPiX>G`DLNW6nMh>ne`g;kU;jkW1`WN<c7LoBXgRnNN`J<CmZ]e8<]n9=6Fn"
    A$ = A$ + "a^QcQ]cSejL>O5n][?ZMj0Mnm9OEk`Dc=\>2_oCanZognNRn7?o^N]L=FKWW"
    A$ = A$ + "CWcGNcDl_i[V`7SmklF=Q7^?RCha>_BCLQMJ?^Fm9mofC`nnEo_nm0ojd;G`"
    A$ = A$ + "5G?a>mNO]Fk`e\?5cgQ7Ga5JmU5?FSeW1jk`^ii=?oSZc_S;IlJmnG_FM\[g"
    A$ = A$ + "l<_Wmm_S34Wih>?V[Aam4_m:L:VOWLFneZ[?b^nUh_GWl4M7oCGQ3khHMn#k"
    A$ = A$ + "EBmeJo1>Vje]ZeT<U_ae`ihV_?_#gN2G>UCbeW<igjDoBVFkY9>a9Na9?0dO"
    A$ = A$ + "BkgZigLlOGmifOUel]_:[=P_17o\FcTW7RaLM^O8]^V[l?=QIEKZ[=hdgARI"
    A$ = A$ + "kd3jlmkTkj4?aiS:FP^=L2VojW7OnWhB>NRf^[=dSf?hYj:?YG\cWeT7]Yj1"
    A$ = A$ + "MoMM>[YNafN:NEM9nLljjlCClRZIEoFnNJLJm[LmOU;`iLn0l1H]V9nd9=4c"
    A$ = A$ + "=Z7gN]5oW^W6FO?X^#VGMU^jEiX>]n9CHLaTR=]O:^?m`MljWkLGV?hn2ihN"
    A$ = A$ + "koD[5gcYkLoYadjmfJcYF`ZW_>Oio4;gMoB_C;ac]?Yi?eGGkWXNJgMOJQ70"
    A$ = A$ + "VoklE<ggHBgWhWo]C[j0Ge?ZCiY>mJ]>o^koZ^NMG=_NG>[9<M]UeSMgLn[N"
    A$ = A$ + "?mJP`nhWbJ7nJL]<^>NkkbeRSnn^eEdahCe6^kjVdkgMon<ekRYNR_SG\3;Z"
    A$ = A$ + "7]9lSLj`KfmgaC_?7lehLAnnU`eNHM4h2>_2LZYNW_[FlMhb>OGNoCgCengS"
    A$ = A$ + "5RGkF3ZYl?Wd#Vb?aa?E3:i_jW3goTnlMmQ\_[U`mC1>2j\DWQaQnk;`9oEC"
    A$ = A$ + "[ga4NLRKDO_liMBGm4OH7WaL\nl\_YeW_MiYhcE[?RmKoNjejeRfmAdeoeN8"
    A$ = A$ + "FOEWFSYR7WbAI_gW`SePL0ecc^hn4?IjlWZoHW^nJ;N<jJd>E3YcA]R1]OE`"
    A$ = A$ + "CFa2>6cCkmjhD]l6;fUGJG=9Cn1X^SCo=7PgAgkd9]f[h9mJfYI?QgP1ncAi"
    A$ = A$ + "I4KK=k>V^>6aNbOimmm7TeDjnUgdjgiLklF1nD<i>o=4b_emkddWl3]S[L2C"
    A$ = A$ + "L_WVjKBe4:oXO^Xf9nnKMJd88ninIe[gecio^0[G;>NoMJhD=R]nS[`2cAfU"
    A$ = A$ + "3OBGO27:>E?CgQWHmh9mJ[=`ekJ^K=SP5eg[a3d^]n^i4lJhJh;FDmTF32_f"
    A$ = A$ + "g5?H^VeJWbK_37:FLjJ?i]ZL3dfL_XaW<WWcQnAm0gn>Jo`Nn^kaKc=A]SU?"
    A$ = A$ + "hlBCJ<>OeSlkc0go?Cl46m_9]MNIgUoJJ>o9>9HQe\I;aLN<HR[WgeThk78S"
    A$ = A$ + "?mN?iD?5_ZG96K:oHmJMG\PaZ7GCOo?UcJga>Ec^SKnlnmU7glGLL_^96Clm"
    A$ = A$ + "5Q_ON1oLmFL<RO>GVebkJI=QGClQW;g`3gOK[WOE?>fi9k46iib=6?U_dKml"
    A$ = A$ + "OgG:N<eMklE]fkMeNH_0Wh1WZo[jh?GlPkC_VoHZ__]?RGY_L:?5[ij4W`J_"
    A$ = A$ + "]O]L>_68DgW_o]\f=HU[Ygj6kZ=\SYjEVFCZgVOCbhnjm^i\JoZNTad_mR4G"
    A$ = A$ + "m[;mkc[OQiB^f?bk0FhNQhNX#\bhl4VLEoBVjWnSF?nMeAlJfEOFG]>7EgOJ"
    A$ = A$ + "=7_Rc0g0^YkOUmo26dkEGgk:kgU[Uh=iVV`RMieVjQeD_ZNGmKJ9cMJ>[CLT"
    A$ = A$ + "N\MheSR;=o5mS2^1l1[U0ND__eOeTnb9naDOfGSYkcdgUoNF^f>e_X7M<ekg"
    A$ = A$ + "VcZgCYkd_M>=WoghBe5PkhNTHoA^W_CNMWh9]NLkAci[NGP55GJ=fWF;g7E_"
    A$ = A$ + "h>LVMn[ZWFSKeSUe80?PchLFfck>LXm>am:fJj__nmY6o9kRICnP_;VE=YF;"
    A$ = A$ + "Ji>E;caNfgL7gO4g;AWcbl8S=eOl^OKA=VlXm4ii<Fe]OEOh;NLG>a9nQa:l"
    A$ = A$ + "6i1jKESWSeOW\ZFQSo5[fE3Xa2G;^kWnkSlDCSk\fjk`TCHDm\i[clUE\XeT"
    A$ = A$ + "KlXl4cGL_D:g`iWfYG0nP_k9?_L]O8`26>VMelnCmRgHaTfT?6aoNoGiof7Q"
    A$ = A$ + "7dj2WZS\[32aiMm\jT7;GCnjeh3mogRH]MW`RWSo[YJJ>MM=GUa<Zecjgf?E"
    A$ = A$ + "eBLN9?__gOLk`3[K\^^Gbo7B=e[fkP;CmhjAmEQ6?i^lJKB\dh1LPZOKlZ[]"
    A$ = A$ + "adm8Wi:eSk;mo?_N4mTkb=fQY^WVClUjUbkG]4ogSSoo2BSc5;Ln\ZOlJ0;H"
    A$ = A$ + "<M_^m^HH_]^fRfgUZQkHOkCRmG1gXo__Ym:LGM7nnBhedH=g0lhdjH]S3<e?"
    A$ = A$ + "aFSQeamlMOO?HmlbEjS]nQ[5Qh]m3_KlBmog^k>FOnfMOdMUf\i4ChSO=K_A"
    A$ = A$ + "le<U_Zm#YeKHmMk[eeJknd^>n[moO2K^bEiN^SfOe>lPed`l3n]<YeKDNAm="
    A$ = A$ + "a_g<U_d17o>ggD_67k^O3_S7<j5eD_AZnMa]YjnJ=PP=C[IKcGiJDnHQC<aA"
    A$ = A$ + ">aEN>N`8oTi0ESOWg:hCCnJWjI5l4gG`?FaRMhcMmOeenKJ^_eb=6ioWC#<e"
    A$ = A$ + "eUglBFGIJ]VN=jMjM5N`h^hBej]V^cI]fgiE<6eofKVZi^m]RJ?nHCOhiR;\"
    A$ = A$ + "Uee[LSM[;UmmBlfJ==7Ui9FSgnJ13Ho?Ei3?:_I57Vh=E3_LUjSMbS[[kfL4"
    A$ = A$ + "NmH=Sno1n`EHAOlJk:OadmgK__kWlIinG=]N8XWlJ[o6O<<\V3[=Ia9b]=eG"
    A$ = A$ + "4^VeSGNSl[g;mg]?U7Cl\??nlh]MlOPD%%L2"
    btemp$ = ""
    FOR i& = 1 TO LEN(A$) STEP 4: B$ = MID$(A$, i&, 4)
        IF INSTR(1, B$, "%") THEN
            FOR C% = 1 TO LEN(B$): F$ = MID$(B$, C%, 1)
                IF F$ <> "%" THEN C$ = C$ + F$
            NEXT: B$ = C$: END IF: FOR j = 1 TO LEN(B$)
            IF MID$(B$, j, 1) = "#" THEN
        MID$(B$, j) = "@": END IF: NEXT
        FOR t% = LEN(B$) TO 1 STEP -1
            B& = B& * 64 + ASC(MID$(B$, t%)) - 48
            NEXT: X$ = "": FOR t% = 1 TO LEN(B$) - 1
            X$ = X$ + CHR$(B& AND 255): B& = B& \ 256
    NEXT: btemp$ = btemp$ + X$: NEXT
    btemp$ = _INFLATE$(btemp$,m.SIZE)
    _MEMPUT m, m.OFFSET, btemp$: _MEMFREE m
    BASIMAGE2& = _COPYIMAGE(v&): _FREEIMAGE v&
END FUNCTION



RE: Find the ball - classic shell game - bplus - 05-09-2022

Oh man are you going to make me ask this?!

There are 2 balls?


RE: Find the ball - classic shell game - Dav - 05-09-2022

There should be only 1 ball per turn, unless I screwed up the code somewhere (which I do VERY often) I have to leave for work now, will have to double check the code when I get back later.  

-Dav


RE: Find the ball - classic shell game - Coolman - 05-09-2022

impressive. only the sound is missing.


RE: Find the ball - classic shell game - OldMoses - 05-09-2022

(05-09-2022, 01:38 PM)bplus Wrote: Oh man are you going to make me ask this?!

There are 2 balls?

I thought the same thing at first, but I think it was the prior turn reveal and then the next turn start that I was confused about. Pretty cool idea though.


RE: Find the ball - classic shell game - Dav - 05-09-2022

Yeah I think that’s it, Oldmoses. It is confusing. I will update this, make it less confusing, and maybe add sounds.

- Dav


RE: Find the ball - classic shell game - bplus - 05-09-2022

Ah, not 2 balls then, the end of one is too close to start of next. Makes sense now!

What helped me allot was a longer delay with the flash of red or green. I didn't even notice it until I read over the code and made it last 1 second.


RE: Find the ball - classic shell game - bplus - 05-10-2022

OK somebody's got to get the show on the road ;-))

A little b+ Mod and 5% please:
Code: (Select All)
_Title "Shell Game $5" 'b+ mod 2022-05-09
'============
'FINDBALL.BAS
'============
'Classic Cups & Ball game (shell game)
'Coded by Dav, MAY/2022

'Cups will shuffle.  Click the cup with the ball.
'If selected correctly, screen flashes green.  If not,
'screen will flash red.  This could be turned into a
'game easy, with score keeping and speed changes.
'For now it just loops over and over.

Randomize Timer

Screen _NewImage(1000, 600, 32)
_ScreenMove 200, 60
cup& = BASIMAGE1& 'decode cup image to use
ball& = BASIMAGE2& 'decode ball image to use

'=== draw background
Cls , _RGB(232, 232, 255)
Line (0, 350)-(_Width, _Height), _RGB(128, 255, 128), BF

'=== grab background image
back& = _CopyImage(_Display)

speed = 75 'speed for _LIMIT
moves = 15 'how many shuffle moves to do

Color &HFF000000
_PrintMode _KeepBackground
Dim winnings As Long
Do

    _PutImage , back&, 0
    Locate 2, 2: Print "Winnings: $"; winnings
    Locate 10, 39: Input "Enter to Pay $5 to Play Shell Game, any other quits "; yes$
    If Len(yes$) Then End

    cupball = Int(Rnd * 3) + 1 'make random cupball number (1,2,or 3)

    GoSub ShowBall 'show where ball is first

    'shuffle the cups
    For m = 1 To moves
        Select Case Int(Rnd * 6) + 1 'random move
            Case 1: GoSub move1to2
            Case 2: GoSub move1to3
            Case 3: GoSub move2to1
            Case 4: GoSub move2to3
            Case 5: GoSub move3to1
            Case 6: GoSub move3to2
        End Select
    Next

    GoSub PlaceCups 'make sure they are placed right

    selected = 0 'not selected yet

    Do
        While _MouseInput: Wend
        If _MouseButton(1) Then
            mx = _MouseX: my = _MouseY
            'clicked cup 1
            If mx > 114 And mx < 316 And my > 146 And my < 439 Then
                If cupball = 1 Then selected = 1
                Exit Do
            End If
            'clicked cup 2
            If mx > 378 And mx < 600 And my > 146 And my < 439 Then
                If cupball = 2 Then selected = 1
                Exit Do
            End If
            'clicked cup 3
            If mx > 694 And mx < 911 And my > 146 And my < 439 Then
                If cupball = 3 Then selected = 1
                Exit Do
            End If
        End If
    Loop

    'make sure mouse button up to continue
    Do Until _MouseButton(1) = 0: m = _MouseInput: Loop

    'flash screen based on selection
    If selected = 0 Then
        'flash red - wrong one
        Line (0, 0)-(_Width, _Height), _RGBA(255, 0, 0, 100), BF
        winnings = winnings - 5
        _Display
        _Delay 1
    Else
        'flash green - selected right
        Line (0, 0)-(_Width, _Height), _RGBA(0, 255, 0, 100), BF
        winnings = winnings + 5
        _Display
        _Delay 1
    End If

    GoSub ShowBall 'show where ball is
    If winnings > 50 Then speed = speed + 5
Loop

End

'===================================================================
PlaceCups: 'shows all cups in place
'=========
'Place all cups first
_PutImage (0, 0), back&
RotoZoom3 200, 300, cup&, 1, 1, 0
RotoZoom3 500, 300, cup&, 1, 1, 0
RotoZoom3 800, 300, cup&, 1, 1, 0
_Display
Return
'=====

'===================================================================
ShowBall: 'Raises cup to show ball
'=======

'make sure showing all cups first
GoSub PlaceCups

_Display: _Delay 1

'raise a cup based on cupball number
Select Case cupball
    Case Is = 1 'raise cup 1
        _PutImage (0, 0), back&
        For y = 300 To 175 Step -7
            _PutImage (0, 0), back&
            RotoZoom3 500, 300, cup&, 1, 1, 0
            RotoZoom3 800, 300, cup&, 1, 1, 0
            RotoZoom3 210, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 200, y, cup&, 1, 1, 0 'cup over
            _Display
            _Limit 50
        Next
    Case Is = 2 'raise cup 2
        _PutImage (0, 0), back&
        For y = 300 To 175 Step -7
            _PutImage (0, 0), back&
            RotoZoom3 200, 300, cup&, 1, 1, 0
            RotoZoom3 800, 300, cup&, 1, 1, 0
            RotoZoom3 510, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 500, y, cup&, 1, 1, 0 'cup over
            _Display
            _Limit 50
        Next
    Case Is = 3 'raise cup 3
        _PutImage (0, 0), back&
        For y = 300 To 175 Step -7
            _PutImage (0, 0), back&
            RotoZoom3 200, 300, cup&, 1, 1, 0
            RotoZoom3 500, 300, cup&, 1, 1, 0
            RotoZoom3 810, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 800, y, cup&, 1, 1, 0 'cup over
            _Display
            _Limit 50
        Next
End Select

_Delay 1 'pause to see ball

'now lower the same a cup
Select Case cupball
    Case Is = 1 'lower cup 1
        _PutImage (0, 0), back&
        For y = 175 To 300 Step 7
            _PutImage (0, 0), back&
            RotoZoom3 500, 300, cup&, 1, 1, 0
            RotoZoom3 800, 300, cup&, 1, 1, 0
            RotoZoom3 210, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 200, y, cup&, 1, 1, 0 'cup over
            _Display
            _Limit 50
        Next
    Case Is = 2 'lower cup 2
        _PutImage (0, 0), back&
        For y = 175 To 300 Step 7
            _PutImage (0, 0), back&
            RotoZoom3 200, 300, cup&, 1, 1, 0
            RotoZoom3 800, 300, cup&, 1, 1, 0
            RotoZoom3 510, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 500, y, cup&, 1, 1, 0 'cup over
            _Display
            _Limit 50
        Next
    Case Is = 3 'lower cup 3
        _PutImage (0, 0), back&
        For y = 175 To 300 Step 7
            _PutImage (0, 0), back&
            RotoZoom3 200, 300, cup&, 1, 1, 0
            RotoZoom3 500, 300, cup&, 1, 1, 0
            RotoZoom3 810, 400, ball&, 1, 1, 0 'ball first
            RotoZoom3 800, y, cup&, 1, 1, 0 'cup over
            _Display
            _Limit 50
        Next
End Select

Return
'=====


'===================================================================
move1to2: 'moves cup 1 over to cup 2
'=======
cup1z = 1: cup2z = 1: cup3z = 1
For move = 1 To 300 Step 15
    _PutImage (0, 0), back& 'redraw background
    'cup 3 stays in place
    RotoZoom3 800, 300, cup&, cup3z, cup3z, 0
    'cup 2 shrinks, going under cup 1, moving left
    RotoZoom3 500 - move, 300 - cup2z, cup&, cup2z, cup2z, 0
    If move > 150 Then cup2z = cup2z + .03 Else cup2z = cup2z - .03
    'cup 1 enlarges, going over cup 2, moving right
    RotoZoom3 200 + move, 300 * cup1z, cup&, cup1z, cup1z, 0
    If move > 150 Then cup1z = cup1z - .03 Else cup1z = cup1z + .03
    _Display
    _Limit speed
Next
'swap ball placement
Select Case cupball
    Case 1: cupball = 2
    Case 2: cupball = 1
End Select

Return
'=====


'===================================================================
move1to3: 'move cup 1 over to cup 3
'=======
cup1z = 1: cup2z = 1: cup3z = 1
For move = 1 To 300 Step 8
    _PutImage (0, 0), back&
    'cup 3 shrinks, moves left two places
    RotoZoom3 800 - (move * 2), 300 - cup3z, cup&, cup3z, cup3z, 0
    If move > 150 Then cup3z = cup3z + .02 Else cup3z = cup3z - .02
    'cup 2 stays in place
    RotoZoom3 500, 300, cup&, cup2z, cup2z, 0
    'cup 1 enlarges, moving right two places
    RotoZoom3 200 + (move * 2), 300 * cup1z, cup&, cup1z, cup1z, 0
    If move > 150 Then cup1z = cup1z - .02 Else cup1z = cup1z + .02
    _Display
    _Limit speed * 1.7
Next
Select Case cupball
    Case 1: cupball = 3
    Case 3: cupball = 1
End Select

Return
'=====

'===================================================================
move2to1: 'move cup 2 over to cup 1
'=======
cup1z = 1: cup2z = 1: cup3z = 1
For move = 1 To 300 Step 15
    _PutImage (0, 0), back&
    '3rd cup stays in place
    RotoZoom3 800, 300, cup&, cup3z, cup3z, 0
    'cup 1 shrinks, moving right
    RotoZoom3 200 + move, 300 - cup1z, cup&, cup1z, cup1z, 0
    If move > 150 Then cup1z = cup1z + .03 Else cup1z = cup1z - .03
    'cup 2 enlarges, moving left
    RotoZoom3 500 - move, 300 * cup2z, cup&, cup2z, cup2z, 0
    If move > 150 Then cup2z = cup2z - .03 Else cup2z = cup2z + .03
    _Display
    _Limit speed
Next
Select Case cupball
    Case 1: cupball = 2
    Case 2: cupball = 1
End Select

Return
'=====

'===================================================================
move2to3: 'move cup 2 over to cup 3
'=======
cup1z = 1: cup2z = 1: cup3z = 1
For move = 1 To 300 Step 15
    _PutImage (0, 0), back&
    'cup 1 stays in place
    RotoZoom3 200, 300, cup&, cup1z, cup1z, 0
    'cup 3 shrinks under, moves left 1 cup,
    RotoZoom3 800 - move, 300 - cup3z, cup&, cup3z, cup3z, 0
    If move > 150 Then cup3z = cup3z + .03 Else cup3z = cup3z - .03
    'cup 2 enlarges over, moves right 1 cup
    RotoZoom3 500 + move, 300 * cup2z, cup&, cup2z, cup2z, 0
    If move > 150 Then cup2z = cup2z - .03 Else cup2z = cup2z + .03
    _Display
    _Limit speed
Next
Select Case cupball
    Case 2: cupball = 3
    Case 3: cupball = 2
End Select

Return

'===================================================================
move3to1: 'move cup 3 over to cup 1
'=======
cup1z = 1: cup2z = 1: cup3z = 1
For move = 1 To 300 Step 8
    _PutImage (0, 0), back&
    'cup 1 shrinks under, moving right two cup places,
    RotoZoom3 200 + (move * 2), 300 - cup1z, cup&, cup1z, cup1z, 0
    If move > 150 Then cup1z = cup1z + .02 Else cup1z = cup1z - .02
    'cup2 stays in place
    RotoZoom3 500, 300, cup&, cup2z, cup2z, 0
    'cup 3 enlarges over, moving left two cup places,
    RotoZoom3 800 - (move * 2), 300 * cup3z, cup&, cup3z, cup3z, 0
    If move > 150 Then cup3z = cup3z - .02 Else cup3z = cup3z + .02
    _Display
    _Limit speed * 1.7
Next
Select Case cupball
    Case 3: cupball = 1
    Case 1: cupball = 3
End Select

Return
'=====

'===================================================================
move3to2: 'move cup 3 over to cup2
'=======
cup1z = 1: cup2z = 1: cup3z = 1
For move = 1 To 300 Step 15
    _PutImage (0, 0), back&
    'cup1 stays in place
    RotoZoom3 200, 300, cup&, cup1z, cup1z, 0
    'cup 2 shrinks under, moves right 1 cup
    RotoZoom3 500 + move, 300 - cup2z, cup&, cup2z, cup2z, 0
    If move > 150 Then cup2z = cup2z + .03 Else cup2z = cup2z - .03
    'cup 3 enlarges over, moves left 1 cup,
    RotoZoom3 800 - move, 300 * cup3z, cup&, cup3z, cup3z, 0
    If move > 150 Then cup3z = cup3z - .03 Else cup3z = cup3z + .03
    _Display
    _Limit speed
Next
Select Case cupball
    Case 3: cupball = 2
    Case 2: cupball = 3
End Select

Return


Sub RotoZoom3 (X As Long, Y As Long, Image As Long, xScale As Single, yScale As Single, radianRotation As Single)
    ' This assumes you have set your drawing location with _DEST or default to screen.
    ' X, Y - is where you want to put the middle of the image
    ' Image - is the handle assigned with _LOADIMAGE
    ' xScale, yScale - are shrinkage < 1 or magnification > 1 on the given axis, 1 just uses image size.
    ' These are multipliers so .5 will create image .5 size on given axis and 2 for twice image size.
    ' radianRotation is the Angle in Radian units to rotate the image
    ' note: Radian units for rotation because it matches angle units of other Basic Trig functions
    '       and saves a little time converting from degree.
    '       Use the _D2R() function if you prefer to work in degree units for angles.

    Dim px(3) As Single: Dim py(3) As Single ' simple arrays for x, y to hold the 4 corners of image
    Dim W&, H&, sinr!, cosr!, i&, x2&, y2& '   variables for image manipulation
    W& = _Width(Image&): H& = _Height(Image&)
    px(0) = -W& / 2: py(0) = -H& / 2 'left top corner
    px(1) = -W& / 2: py(1) = H& / 2 ' left bottom corner
    px(2) = W& / 2: py(2) = H& / 2 '  right bottom
    px(3) = W& / 2: py(3) = -H& / 2 ' right top
    sinr! = Sin(-radianRotation): cosr! = Cos(-radianRotation) ' rotation helpers
    For i& = 0 To 3 ' calc new point locations with rotation and zoom
        x2& = xScale * (px(i&) * cosr! + sinr! * py(i&)) + X: y2& = yScale * (py(i&) * cosr! - px(i&) * sinr!) + Y
        px(i&) = x2&: py(i&) = y2&
    Next
    _MapTriangle _Seamless(0, 0)-(0, H& - 1)-(W& - 1, H& - 1), Image To(px(0), py(0))-(px(1), py(1))-(px(2), py(2))
    _MapTriangle _Seamless(0, 0)-(W& - 1, 0)-(W& - 1, H& - 1), Image To(px(0), py(0))-(px(3), py(3))-(px(2), py(2))
End Sub

Function BASIMAGE1& 'cup.png
    v& = _NewImage(235, 336, 32)
    Dim m As _MEM: m = _MemImage(v&)
    A$ = ""
    A$ = A$ + "haIkM^Z\ULK50=O66UZ<`h1KZ=gP;dLGYlg`DVIP13l0SQikHh14H0Q5BZ:h"
    A$ = A$ + "4JZ9gn<GecFZgjEgB]N]0[JNN?W^E_GmFB]d^odWndOhC000L9nOoWomW<lO"
    A$ = A$ + "oWoeRbojS?^d?_lH[e]C0DKTaknla=Wj<l?n;o9_lgocoX:nno7jk1G661RU"
    A$ = A$ + "c;G?JgKNlR5o]?lMQignf3lago^RSegQhkOoHeagce_acQBRVOjjQ6OK;>f4"
    A$ = A$ + "WokodgHa_nSOmdQllCee=N]`YCaUaI1G2iPblQblObLKbhBO^i_l3oaZA[Me"
    A$ = A$ + "#^[?7f=?M>iXaUG;TnYd9=i4U^fV?lcOoGU5ed=kI?EbI>?dlLY[od[OeWaK"
    A$ = A$ + "W7BY?[?cEZdWEILF^>:^jiLE]c9ON\9_\<?\_l^h`m;^i;gmagj[J\nUfcNi"
    A$ = A$ + "8iYUfOmM>kVkeTgeh_Tg]?`=gYjllhhXYjU]boVE7]Fn^Vk:ck:ciRgf67Ej"
    A$ = A$ + "VKNY_aI:mbFkHhVg;76W[`MaI[WKjjWVnfjVcLDcER[FFLKkTmCfeIaK;SSJ"
    A$ = A$ + "=^CWlWb[;mlh:aIKW[jfnY=fFcmoaG_VSn\?^:i?G5o4W]\>[i_?DNfF7o?2"
    A$ = A$ + "4J<XVfmEa7?S_R7W?BOe<oah[nAV7mYSnKOkd?6dBk\alHh8Vf:[i>6O=ZSj"
    A$ = A$ + ">GAaLDLedLH8^[Zi[dOHM?eMlXmnJ#HdXe>aXPKoQgR=K]WdJliYKaES`j5J"
    A$ = A$ + "DYe^#_Sel3oJL9c=lGV3Y[hYhZh[e`EUkoW]aU]b^jfinEjg;^:^J]`Moj]j"
    A$ = A$ + "^jF>eWkm<ajdM;6Zgg?;c2]f7jEdfS][\[J6WjfhfUk1][hZcZcFjHALe`]9"
    A$ = A$ + "J^jFLjZ>G`bWQJYMeIbKe^WOY8D<k8B9SILmEcL1_RiFMG_3VfT]hUBjZSZ_"
    A$ = A$ + "6ZoIedE7EO]da<K]3ba\^b?WE;GED[R^bl;MG>K9n>JMOG;aaaMd>Mg>ZaCU"
    A$ = A$ + "[72ijj7Ge^fIFCO=gHVJM?QBi7gmWAZ^J_L]h\NjQJZ:^ZU[^GC0cH=0G;W]"
    A$ = A$ + "VnOYbcNGLgikJQSJ^68mDI=Z4Gm;^jQJG]ccai^^VECOLdLfJM>fj[MJG7?D"
    A$ = A$ + "WeLZSjhZnMEI>fLZg3m\OfJg[7miFN]dT7eJLYNR3aE?f7HIMLFn^RXde1dJ"
    A$ = A$ + "hY]dI>clmf;^lMO=DjXk[?OUH>j3LV^ZX]c]ff[Ekc^K7m>M_LMdcncg:_]f"
    A$ = A$ + "^YEmAc=?ZBl6^JR^ZFKXkkU2AoS;]cfC>J[HDMFO>ZUOj9^bgkl;LeS?cVLl"
    A$ = A$ + "E]L]YlNTY7mdFkUg]cNEOemJQkalQgG>nbQVPWR[VQ[V1aN?#icIKiHAK];f"
    A$ = A$ + "bL\ij]QjG[d;;J\4^JELeH>K<^khDLEo]1IoNQ]Fa#hZEeE3RWgYgV[?YdOj"
    A$ = A$ + "FjYSlgKXS1O_WFC]?[U6Le>fECHL;aN_QgjlOm4Nco5jmRn5^>Q[>Q^JTH2i"
    A$ = A$ + "kWgHhK^Y?;nRece?>[CMfnPj[?YbfgCe^NS^9^j0hZ>>kIME[[abl7GdOSVO"
    A$ = A$ + "bC^:OoOZnaRWWEnEKGaEk0G]2c;#?A:nC87B]m9cn1hmiM5Y_0Q>NkVkaFk["
    A$ = A$ + "K\oEG6GmP_V2alQ2hZN_?BV7[]^]5G]^\G33kYn03P0]n0_Re`5=G]eGK69T"
    A$ = A$ + "]IYVkSfi;d>S[niJ>:a#W:ni:djcQA1CkUimlh:kZTGmla?hZgGKm:WG=imI"
    A$ = A$ + "34=>27]n]a[jL;9kokcfS0k9O0J9kc3lSGFbn1_o^ah3OGeFge0D2T?;[]ol"
    A$ = A$ + ":UKeTCehYbebVFMY2PFR97R<nLEb]J6WZaC=ki2b[2i`MllXT[52inoI5b]:"
    A$ = A$ + "7Wjfi]LO6CoPQD8Wi#[Tc[V\_O[`hFU?W6CNEcnnWa]2Y#9N>Ei6O]moG>F]"
    A$ = A$ + "]o^EbEMOGHX]>eaIQFR\?`bm9hfofF^eI^O`K^jncYA<gBKnZjNkPWE8L38O"
    A$ = A$ + "^<FoMRaZ:SA=[SYIfE=?[6IKAfk3;UmTE[_F3c3JcWdQWGa2iZZi9C`=mjdT"
    A$ = A$ + "_5^0^aQAgKm;Z[j[m:emRMdJS0^;88DNRD[;=[R[VjnE=TgVMM51gMj9ii3>"
    A$ = A$ + "ch9_a#_67_4^JRSe\h]g9Fc3JML7DVHR[F[Ylfg_gZC4C_[nhUTMeT_NUCOH"
    A$ = A$ + "BLnZ`Sk#O<Sa7MF7E^fOmNLmfon:iZ1_VUH=\cgea;=obW`UKMlm8bIbAV[c"
    A$ = A$ + "UZ;kN]=hal2jZU>6o\m;:WHScT;NUMjBUSl\>J>gc=icU9gEgGcBEdE;am]C"
    A$ = A$ + "mnhU>_lXjj9MLGPLT9gnGafAGGMFGWQ]`E;I\eIMeRf?l6h`Ga5;QSVKKa]4"
    A$ = A$ + "k\P^J[c9TE\i9m[RWG^2iZ;Y7FdkOeQm_H5Lemj[DWkZIk`96CGEG]RL;7gM"
    A$ = A$ + "V?VS[>SSIMdMe;iaE:odMjXWfE[dH7aE_9GM0_6M;nL7ilUL^LJMKO=^>>[^"
    A$ = A$ + "jFOjefS=]^MOdXY>lRhRYN=HkgKFC`cdHF?DSAG`[agAlC=YeWSm2^^j\=oB"
    A$ = A$ + "hZ`\`\kZVaZR[2S>J^j<=VENOH0c4ka`Chk=3LEHVHfMEjo;<;X=G`]fa`EQ"
    A$ = A$ + "NTF7o<k^jNoOW\e\4\NH57?Ie72LEHVHjMe7_H]6HJMk=0W5ij4Kk?S[2#Ob"
    A$ = A$ + "<kZbggZhZ`XSaE=ej`]hkFkHhZ0L4LE063`E1H<HFMEcN\1G5V5dLeIH_fP["
    A$ = A$ + "2c6hZ0<6<[^ZI?fHEWA`EQ16gHiIH_fHZcBF^:[MOH`aZ6G9LeA>g:^:<S\B"
    A$ = A$ + "^J[K[1hZ<[^jfNl3G5V9Tacc#]7EFo2aEQI2GGMdW;HLEHFIfLEI]6Uj2=<C"
    A$ = A$ + "8SWWQJ?:^:<[<[^Z\FSR[2c0FacC#]7M_n5R[2C6^^jXG?3eZeXhZ`<PKll<"
    A$ = A$ + "jZ]^=6PBa\iZKm?`ml2PI0[Hj1_fSJEGPaEQ93ga\>l^ZkiD7d63#9`=^6G5"
    A$ = A$ + "PnTIbEOn\EOl2k5>H:A^ghfncSL=BSm]:<cX]?FK]cE:G]e]]0DJ`E1H<H6L"
    A$ = A$ + "EIm;Tn03c8Jm1N4gGLF^:N:<Y8S_aE1XOI6LE[JR6n:<Qh6K?Zk;>[JR6^:<"
    A$ = A$ + "Qh6K?R[Oo3e_#lDHBAcE7Yn1C]K1F56mJiRV[fjfD0Z5hZ0<6<3^ZL_[fjfC"
    A$ = A$ + "0Z5SL=B3G5F96MGe]n5fjfC0Z5SLm<dZVXajf7VLTkQeAcE=momii1^:<i8M"
    A$ = A$ + "ECoPK]3VU[n`No2ejfC0Z5^aihZ0dW<j^jna?^:<ih6[S[2#Ob`kZ_NLoago"
    A$ = A$ + ">LEHjahZVhmAcEg>^aEQE0Y[^1^:0m9SZ[JZM;hZ`ZPV[>2kQELEHeHDMEcj"
    A$ = A$ + "f7G5F5dLeAHM6JF;`k^:N:\0\5WKRi7Qe4\EMFb<7fhZ`2PaEgRk7Qj^T[[B"
    A$ = A$ + "oOQE1ijQ0G5Pn5LE0636=GMkh3G5FAdLeNNnU\ZOQhZ`2Q[[fk?g6LEHE1G5"
    A$ = A$ + "PaPAeEUe_#LEH5`:NO0ZmXJeJDLEH5`eEkme^4^:\Z<\^ZkaN7dF2#=a=N_g"
    A$ = A$ + "ME[j2<^:\#L8N_c[C`Jc[4^:\2L8VO4LE]Sk>X]4PJRF<oXiZ]^=4Pk2LE06"
    A$ = A$ + "36=GUno2[:^anhZ0dW<:^ZYn5R[2[:J^J?^7FaEQEWAbEO^oJ`EQ55gHo=OX"
    A$ = A$ + "7Memj11^:\XXiZmhj<DcEKMK70g=m^[JECd`EQ56=G]Wj7\?G5O5F9le7hNc"
    A$ = A$ + "Eg[M;hY`2S[[fKc5\EMF2G5FHdLeNJ<[DWU0hcX]_hjFGm]JG8^:\R\kZ_j1"
    A$ = A$ + "hZ0d_<2^jNMFRJ2<\h\kZ?j_j^TINUNNLR[2;>^^J?]OK`E1h;dk^jNm;4G5"
    A$ = A$ + "FLT^J_ESd\NN=hZ`RSU7dA^ZI=;9?6KMK50]6I>[NI];I]7cOkmTE[KW0Xe8"
    A$ = A$ + "O?9R[2#oB_jZF__EaE1`b7jUj3QdEohkO7^:0?Nab7jFGUi06PWN#_iZVeGh"
    A$ = A$ + "fa5^:0O6S[^A_\>3aE1h8hZ0<6P[2`H#_iZFe4=acCZe]C0dJT[gPNX6YQ[2"
    A$ = A$ + "P>hZ0<6dK^ZEm;4G5PMLMeFG;G>DWU`E1h9F[?n>X^;Q[2P>hZ0<6de^:e`K"
    A$ = A$ + "0fYgZYghZ0XC?jZke_#LE0fae7JmJGbZFSR[2`>J^J[ZAJbgSSJ7K0\bhcEK"
    A$ = A$ + "ajQH_n5JZ;`hZ0\c1Oh]a\fJGUgUi0Hc1WX7LE]S[>X]2PFRVCdK^J[KS0XG"
    A$ = A$ + "XWLEVG90lSfl;eBGUno2P>^^1^:0m9mR[^_7caE1#5=G]5[M9=G]e]=0dKdE"
    A$ = A$ + "^jKk3>LE0>b^[:ZU;]`EgggZhZ0XRdEgl5LE0jCJ][JZOQhZ046=Gm>W;H[e"
    A$ = A$ + "2<^:0NaeE_ke^dQj\4^:0ZXiZgIoPgMe7_P[2#0\Le7_P[2#WB?jZ]^=1PNU"
    A$ = A$ + "FjZFe^5LE02RdE_kj^4^:0YC[Le3e4=LE02RV[N7?g6LE0bSFkZke4=LE02R"
    A$ = A$ + "UWLS[72LE0bSFiZ7N_HlF^M00o8cYMGk=>[mH^iMFG7dF0#?SlMN:^:0m;MQ"
    A$ = A$ + "[bHE18:BOi>MEN?V3#NHe?dKJ?WS[2#nd<GmaWkom7Ook`E181flTWnbKc_c"
    A$ = A$ + "MjZKO_hZ0T66GMS]olMkZd7H0B3COP_;GejM37SG5PTamILFke^4^:0W3LE0"
    A$ = A$ + "63^KGm#]K1G5PT#cE[iHFaE1hLP[2`H`MjZVg;6hZ0T?nLeJ<VEEGUj2<09Q"
    A$ = A$ + "_j4l]hZl>B6PTaeGZ][JECd`E18ILmUJFSdT^Zlk5G5Phhj<hZ0dWLW^ZI\Z"
    A$ = A$ + "hZ0T?nLeJlLK\NW[R[2#FL`IZhkRe3eJDLE0B6=WYFeM9O^J[K30HD0G5PaP"
    A$ = A$ + "kdEI\Z0LNd6cJEMEaJ;4G5PdabE[Hm<DFo2aE18O>hZ?ZCMGbZVXQ[2#f8mV"
    A$ = A$ + "JFSd`E1hJLG^ZIoe8MeFO^3`XQ[[^iEebEIO[2`iAKO\FB?m#m;4G5PCQV[F"
    A$ = A$ + "be_?^:0UQJkZDkF0X<h[F^DJGM_n>Q[2`Y#jZKoJ9MEIMF2G5P[Q?G]4m3fh"
    A$ = A$ + "ZkkaLLE0>=^^ZImkG2Gm#mP0G5PCSV[FZn1S[2#i0G5PaPk`EggkZhZ0LJLM"
    A$ = A$ + "eBFgU`E1XLDKGeZf]`kK:0^4^NDYZU;F^:_Kh0hb\kZ_]fU:][BoO1X<hkI\"
    A$ = A$ + "F2GUaZ2#i#K<[U`E]N7>R[2`UiP[nX<kSE]gSihZ0LN\Le2^Wc=[IoWe^5LE"
    A$ = A$ + "0^<BGeDCT:V[Jn<aE1hbL`EOmGaE1XoX6^ZYf]\miI0G5P[Q\F6JhZeb5LE0"
    A$ = A$ + ":?hZ0<6DJGMkWceEIlZ0LML7_ZdE?S_:[cBhZ0D>liZW]F^HECdHNP1XHhKN"
    A$ = A$ + "PaE1X_XF^jcmH3^:053=Gm:ec`]O>LE0:?QLec\OK\Z9JhZ0D<liZW]F^hjZ"
    A$ = A$ + "\?K0X<h^?K`E1X?YF^jcJ21^:053=Gm:ec#LE0Z3e`EOFo2U^Zik0G5PCSdS"
    A$ = A$ + "T^jI[AJnZeXhY0LMdZS;WaE=[Iom?CbY2#Ai#^EA=B;ee3QjkKEbY2#ai`hF"
    A$ = A$ + "o#N_?FgWCY77kk;^:0U3ea]nhUTVS9IOOef7LhZ0D>LMESc]m_5Z_`J[EOgJ"
    A$ = A$ + "1Q;]nL5PA3O^TU_5I]l;ONZbO>LE0:7YhZ?c]6hi]j^>maE1XlTZ[JVW9gJA"
    A$ = A$ + "ZILZbOVOoWn6LE0:<YjZn6gjf_OcQUNZQ#^:n:0YC8?BcE=SKEjZViD:V[Zm"
    A$ = A$ + "mejcO065dLW#^j6bebTLnO?S[R_2#Lli=YTGe<O`J^ZdGaE1hjTS[jKM<9gC"
    A$ = A$ + "iJ^j6QjW=^:0a9V3M`EOk_G^7dmmLEoeOl[ObCGeI];Q[2#N4dEMGkAbeO_h"
    A$ = A$ + "i\6cEg#K]6R[2#jTZWJe7HWmP^?GM;OZdE3i[]^M0PNWchY^^jnjeGI]5^i["
    A$ = A$ + "ob?l7SVK]e]30dk4J<ZbeMT_lZVWaZ_e\_9gjV_^?W`h[0T5abY6bEM[E4BG"
    A$ = A$ + "ePlciWon_JgGINV08=bI<ZYjZbe3\V_Jb]^A\iI2W5FMbI>O3>NeGoo[]?Fg"
    A$ = A$ + "[_X2OeML[YdGHlEHU9TSV[WJ6[JXJgRfWSGO=an4So2c6nRa?USjTcMkccgn"
    A$ = A$ + "Ge]VXiji^c;\eNV;QWmZV[Rk2S4Ja_NMeLLDWn7_mkSESddZgBk[7HQ_:GCC"
    A$ = A$ + "Yj[idoHb13]RLR??KNd#NZ<WJ\JIXEM<<#nE=OEkHh\]EhZ#;8Wh_LWgXDbW"
    A$ = A$ + "^miVck:3gj>ZkgQkcNEeI_P_AOUQkTLRg:J^d?lMFoKKOnin>]A^oKf?nn]_"
    A$ = A$ + "=Z_j[Oaid>4[]YeGGQiQHaFAS7MF?PihXFmIe9OJZeMOOef#gk18ocBW=VgN"
    A$ = A$ + "Un6OU[7Gic0j;l=G8WmcjDOgW]o^>o\?on_`k8>Oc?lcSEWkUX=6FScVbL6G"
    A$ = A$ + "j[MnV;;b;?n4L>M^`LINZ_OWeOP\f<h>>#OiRgn<ciMRAfm9fImBhn\Qdba:"
    A$ = A$ + "?Gl^f7c\=Eno=e[QhZS=iLMfgemLSaliWJNJ`e9TWei#9mD]n47:7[_kg8ck"
    A$ = A$ + "jj_WaK3Uo<deeF7_1egES5GTegCRnI\nljV;]4mi=UL\knZ97[km=lh[^^Jb"
    A$ = A$ + "iLCHm<R[>oDR[oA9`l45:FegcRa:gcK_?TcimfHYba:ccjNN6;7[[kj;WKXl"
    A$ = A$ + "^aLALeiRLj[KbnJ2i=SiX7b[hTSa]V9MG>Z_aa^g_h0]1Ydgh#NKXkSMf[_]"
    A$ = A$ + ">nKeidiobhJIXlValbH>J\iNAjYgI^dH>[Vg6kl;FOT3i_U`IKM\jZC=MD[?"
    A$ = A$ + "O5o<DOibaA]Nn;>nI_hXI=NfCT_eGNgHS[G;6#N][eaW#HG=eO^HGCeRgBI^"
    A$ = A$ + ">C>7ZkaMS6?jEAVWmPkVhcA>dmibY?;7bknjaQYMERi_o996GEkn_e;nc]NN"
    A$ = A$ + ";^>hmJTcaZKLS_WKH:aFYjYBg\eS7]TN[ilAmic6hinLEWFK\4^a4YjZ]8F^"
    A$ = A$ + "dnM[?VCjHGaEEMd4F;>nF_j9?fC?cGTiiSN7?kUk6gadjV_ednWBkF>]iiBb"
    A$ = A$ + "?SX;NlLfkAYMlM9O=bm<_jmAE?OSdV6jNbYL?j[>^cmSi?lUnQ9cO>2S5]6i"
    A$ = A$ + "KeFO5Q^>7jJOXl7Qb5WT;UHldMAZ[KT#NIY>FZQWh>VBgLU^[kLOcMQil>Fk"
    A$ = A$ + "XfOoFkG?llFj52U_eZo?:cEPJoJC8F]dNC^gO?7R=7UYj1elHl\WGQVSOge;"
    A$ = A$ + "CB?oMUhP#^ZKNC3[Lnc[h`FmE>R_Jm[1j_EBmA<QnS5;><ghD=dbW4:7C^ol"
    A$ = A$ + "iL\TjcD;Wc[DOFj1c;ZLm:DOgUgOgM^Q`9_V_VENg#g7=B>Hg?3OmG<eL6Ge"
    A$ = A$ + "C;Q_F;G]4NZFoHU^ZI>L>#\lU:ckO\lVhYeeSEcmJ^FjLMdmjGBNMTafEbnn"
    A$ = A$ + "MeHMghmDLfkfASegmHcmZln\n^nI6WYfcCa4cdjHgEVHiNCjIVNaWED[6GH?"
    A$ = A$ + "<VjBN<kKl;aNn>abIfjHD8<VkSjKn[>hcAjKE?BdW5b=m\^:jiSWn_jN]Cfg"
    A$ = A$ + "EbI>O4J<`n67\aQ?eJ=X#?ObTleCl<;;bm8llmWJkU<7Y_aEbH;1Y3k3I<R?"
    A$ = A$ + "7?enM?BinbNnd3dODO>WF^AGJM\1<fTS3k^VFeh\^]jLX5ImTLFg;4ihT]nJ"
    A$ = A$ + "70BB9o\?O_Gagi0i110P_`o7c`W^%%%0"
    btemp$ = ""
    For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
        If InStr(1, B$, "%") Then
            For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
                If F$ <> "%" Then C$ = C$ + F$
            Next: B$ = C$: End If: For j = 1 To Len(B$)
            If Mid$(B$, j, 1) = "#" Then
        Mid$(B$, j) = "@": End If: Next
        For t% = Len(B$) To 1 Step -1
            B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
            Next: X$ = "": For t% = 1 To Len(B$) - 1
            X$ = X$ + Chr$(B& And 255): B& = B& \ 256
    Next: btemp$ = btemp$ + X$: Next
    btemp$ = _Inflate$(btemp$)
    _MemPut m, m.OFFSET, btemp$: _MemFree m
    BASIMAGE1& = _CopyImage(v&): _FreeImage v&
End Function

Function BASIMAGE2& 'ball.png
    v& = _NewImage(100, 99, 32)
    Dim m As _MEM: m = _MemImage(v&)
    A$ = ""
    A$ = A$ + "haIkM^SSULL45EK5jB#j#j#K^1X?g3L=X=S\4Xf3bAN22#0bAK1jC718d2i8"
    A$ = A$ + "L8>jP8cZNmlYkIdHTXNeWg_hVghNS8[ne?mdCo^Wn8Jl[ojonY7mj^kcicS7"
    A$ = A$ + "37niOnGNjWnYoiCOkgnGNjkn^ojCOogogNj7oaoaK6[Sch7nQonK6L>6[Woj"
    A$ = A$ + "eiGnUoeKfnILjnanePhmJ;ajenP7L\eiiJhjIo5^hWkjh[S]N=Fk3flBoMne"
    A$ = A$ + "fPHBSIlHfB\MM^_iKncoF\gL2oLlSGl3S]`ghinILioR34?Fah6G1CFaNNlj"
    A$ = A$ + "LLm[S_h:6o<Wal4b[ak1SbSFSoO0Khk8iS#3PHZWccSGKoj_n?mK7O]e77L0"
    A$ = A$ + "\TLIFSYhDaTV?cL8`V?Ua77g0;J>V_j[nS_I0^\Rm>?5KiiKL4L[ijHdg;[3"
    A$ = A$ + "EO0\oWJhajk3cWGOoH>oJ[c]\fWcicclOOLh5`7<N`ila<6DMWV_bL6kQkC1"
    A$ = A$ + "LQio<?VHIe\]NPSUFOQ[5>bjJIh[Qg_6kW`2^^VcZibFjo<nH5GPC`lJ`Sef"
    A$ = A$ + "_l;o3o?j1Mn]SINn^7P9h3^NcjnljHLfh>hajc4HE[YiS9=O[IcgEVo1>HMF"
    A$ = A$ + "66Chk^a:N<n[hh53Lle_g4OMLfl8S?L=>nk]`AFWOEob;M<o:lXnR<W`NT#["
    A$ = A$ + "`i_LlKYWcccaGWCSg7k9XNPkFc]Vh7UghSaaMN\efGjhn^QW;_RWV?\3?jS;"
    A$ = A$ + "6Jl`ajeS9FiJ8Jm:E?gL1beE<QGGV3<EkB[KiU>fGN1cG17:oPib;M3Vkcn["
    A$ = A$ + "]niQ^`jHe?\WWRnTc_\N^[hSeE\6d47Qc3NJl`nPkk??VJmO=XYPGFW_`iR\"
    A$ = A$ + "gDcAje0NDM2b7I^1WOM>fjjnJn?S9^F3cOZ?\ZW=i?cjkXYlBS9N^b:V^V_c"
    A$ = A$ + "LNc1ji:7aOGao5N`\7Gh46;L]KT7cNQiHegKk;cTWRbGVZ]deX\`UG:NQ[;f"
    A$ = A$ + "iK86kloCnEij<naSA3bJ?>>^>VcQKM5S[CnMM]ifCUmT]c;\emme1N\^n?de"
    A$ = A$ + "X#o`]_DV_kh[i5P;LN?0;9>ae3G`ccWVW2FD_34OmjVh1H2_^Xghn]H?FmmU"
    A$ = A$ + "i2UO`[k72L0]k>oN:7ediikD?GcAINW[Qca:[oC>:RYXEhHF[C1<\LGN^]Nm"
    A$ = A$ + "jMXc9<?1\im9?1]Kc5\F\e8^3nhLCLMPcNOdGLLScI\ShWkkEm2kLB`KlaL^"
    A$ = A$ + ">[a<M=Ci]\NRGGbg7h1a]El1N]cg<EC1h5HXW[GM3O=P1]F2l137S_oT?[nJ"
    A$ = A$ + "MmfnJ\nSk=Yi3Pa6;]oH[1IlP_OPg_?jIo2WGOf8>eikkh7nlClSRa^>Ub3J"
    A$ = A$ + "ODLmUPG]WTMnKi34[K_RWZmXi]LLg7W??_?l1K=3g3SV7JbK[c[17bJ?niHn"
    A$ = A$ + "6aIZ7T_O^ol`SJOiiL=7Ue6\VMmmB>8g3IS5>?f4oYH6Hek:O`P5NN\kAKi1"
    A$ = A$ + "TOZJ3NOO<SaCh2ji6?LmO4C\gFc=L=l>GFkSYS]6?VZiPSgJJ#cXjj_;efa?"
    A$ = A$ + "X[YXLRF_AgWL863m[UgjN]hGofWBfB\cm6YJbV;dLknh>>jNhkJB0G;_Y[[8"
    A$ = A$ + "_7P_LM_]LS9O#]7DCa`6gGO7nR_hg?VcRSGOIF[`NKkajlI^^FOX_?Q0K[n="
    A$ = A$ + "eb<M?MiNTdj5mLQbChinf`AH=<H>Xk_Ti8lmRhjTVM7[[cl2Z3O5;\O1oJCL"
    A$ = A$ + "_lYV;bHVi7fSUaTCjd=fglFFKcNOkmdRgOMm?7oFN]<#K]iS:_ahAmJI^ROM"
    A$ = A$ + "<WYL3cA\nQeI\7;?GaJg>7_WokJk9Nfm;_`7OjNO`jk5C`[ecAKO]fGFgce1"
    A$ = A$ + "F=4??gjkFKOGmP>6Jn`dLL`4?_dcEF7gehhJ48nHN1JSlhNO<<iEfnfZGHSm"
    A$ = A$ + "mn8RmG_O?7lXaT9OCEcM:WD[=_ihhj]_:Z3H:gUO\i0lIbHg^J4LOZJMe>ob"
    A$ = A$ + "^Jm:gYNb<G\m\Q]?bm6^[]bi=8>K_>CiVFG3i^J^]jCKb_\a57WI>Q_oi`C;"
    A$ = A$ + "iI\6m^jUGGSi0f[TciH_JWdBlj<feVWgCS7`G^;g0Mcj_MZWjWh6\MB7W7kn"
    A$ = A$ + "oB]6`1H[mRaaMnYFWNS;fkZa1N>63J>^^FiMM2]6R[i_HYeUNTeh5Ml67WlK"
    A$ = A$ + "JmK7k=NhAe>\7PbA8V?E3Ze<J=RnnmRH#7XohLCP;PAfCTSQMoNOcIO^VSJ<"
    A$ = A$ + "5]mkLoY#<Qi]4;[o5VSklH>?e4F`cah8io[?FkOXn]#GQlZlLZfQmCanPONm"
    A$ = A$ + ":ZoDjE7iijlJkcZiiVlkJN67WgS[dAXWQ5CfYKK?[>7d>^1c]]>Ni2nhTCZn"
    A$ = A$ + "j#W_N;Z?Wfk9RAT_kT6Na:[QDoC>VkgO`=SU<FGcMbEe_S^nPFgPa6S3E3_i"
    A$ = A$ + "NVRm]>4k3NZ70f?3jl]7F6;JM7=fajnfn4bfYJgM]7]o8<gHB3RS][f`ngRA"
    A$ = A$ + "[=PhBcgH=3`Sj_]i\VdULlgLYRW^n2S9]OiN[cOG]SF;Q_?M9W5m6Xi\:7ae"
    A$ = A$ + "WG=WjgV?CWZ5aeefJ;LLNZ^^CNZZ^OaVR3<O`H2iiVZGTL?NhN\he`]aD?_W"
    A$ = A$ + "jWK?1I=aWdfieXN\=6<i9cO6fU[Zc3kjMdHoT>Bef[>dT_=O==7W?>n`;VdN"
    A$ = A$ + "WS^=l0FCaYNP`lId:\647SccXiTLN#_F:EGYikhLCi[lkAScCNHW`Vb30?kc"
    A$ = A$ + "amj]l3jYH7CmX1_7CHR[W0]UYid6;lJNgijklSI<^i7giAfhgJkT_GdkVR1C"
    A$ = A$ + "ik;fd7?QUV3ihkjHF?X_gX7cSYnJ[kKn\WoiLF4cZ_FR=`9hhCmC\nFKO6M="
    A$ = A$ + "oXUK\OjeI:WEe^mlmYhnD<_hada>U_ceH2?Uh??Vjm<F\nnhG3lcjih4[0O\"
    A$ = A$ + "WFhF`=VbAI]4WgJWOFS7W`eMJ85;HnfD\KBo^HDm2<EoMeThjJOR[>6a?R7\"
    A$ = A$ + "n9N=XjmHGkiT[ScaG7o[f#aRYHMa7kg]mGaioZ6bT?c9L`aZCeSGn#iCCJD^"
    A$ = A$ + "nS^N8lHjY1KiiiiJPM^GF^>mMnT<NhJcMl]L3[7ILZeWLE=;UOdoNFMlgcCg"
    A$ = A$ + "YY_;WfEiYVl=dN;F_g>g:GgTVZeh[gO[KPfIeVMl_lXZEG=jZ]DNAW3dOcEl"
    A$ = A$ + "mHVSYf_IcYM:f_;of4^HMn9<Rgkf3;^6h4MMX<7QScl[YN;eloCcgW6f[PGO"
    A$ = A$ + "4ZAehe4NDnab_5i8LOXJ^nMnYVdD^3_HGo`f]F_X5cn>7T[K`miemNWJc]fC"
    A$ = A$ + "a3h0=7h9\`[cB[=deA^[g`^6Mn]cQGg9>`ELRChd^lJnjFOGVhR5GHNVcQiJ"
    A$ = A$ + "dmn^_DN0NI?^FGfmKdj4f3l^NkF?0=Wf4V`SK]P`g[VaEH`^LEChDaEl]Bm7"
    A$ = A$ + "CNl\f5O>]N_mNI\HZWRM=YVjUUkGKaP9]W9lYHbM`3[OPomYk7QMnJ?YQgmi"
    A$ = A$ + "eag7Y6gJMSN=A0gJ^:gW=OOGH\`[52eNH>C[93mTfCFGkA[UKROdjj_:OeJD"
    A$ = A$ + "lPiX>G`DLNW6nMh>ne`g;kU;jkW1`WN<c7LoBXgRnNN`J<CmZ]e8<]n9=6Fn"
    A$ = A$ + "a^QcQ]cSejL>O5n][?ZMj0Mnm9OEk`Dc=\>2_oCanZognNRn7?o^N]L=FKWW"
    A$ = A$ + "CWcGNcDl_i[V`7SmklF=Q7^?RCha>_BCLQMJ?^Fm9mofC`nnEo_nm0ojd;G`"
    A$ = A$ + "5G?a>mNO]Fk`e\?5cgQ7Ga5JmU5?FSeW1jk`^ii=?oSZc_S;IlJmnG_FM\[g"
    A$ = A$ + "l<_Wmm_S34Wih>?V[Aam4_m:L:VOWLFneZ[?b^nUh_GWl4M7oCGQ3khHMn#k"
    A$ = A$ + "EBmeJo1>Vje]ZeT<U_ae`ihV_?_#gN2G>UCbeW<igjDoBVFkY9>a9Na9?0dO"
    A$ = A$ + "BkgZigLlOGmifOUel]_:[=P_17o\FcTW7RaLM^O8]^V[l?=QIEKZ[=hdgARI"
    A$ = A$ + "kd3jlmkTkj4?aiS:FP^=L2VojW7OnWhB>NRf^[=dSf?hYj:?YG\cWeT7]Yj1"
    A$ = A$ + "MoMM>[YNafN:NEM9nLljjlCClRZIEoFnNJLJm[LmOU;`iLn0l1H]V9nd9=4c"
    A$ = A$ + "=Z7gN]5oW^W6FO?X^#VGMU^jEiX>]n9CHLaTR=]O:^?m`MljWkLGV?hn2ihN"
    A$ = A$ + "koD[5gcYkLoYadjmfJcYF`ZW_>Oio4;gMoB_C;ac]?Yi?eGGkWXNJgMOJQ70"
    A$ = A$ + "VoklE<ggHBgWhWo]C[j0Ge?ZCiY>mJ]>o^koZ^NMG=_NG>[9<M]UeSMgLn[N"
    A$ = A$ + "?mJP`nhWbJ7nJL]<^>NkkbeRSnn^eEdahCe6^kjVdkgMon<ekRYNR_SG\3;Z"
    A$ = A$ + "7]9lSLj`KfmgaC_?7lehLAnnU`eNHM4h2>_2LZYNW_[FlMhb>OGNoCgCengS"
    A$ = A$ + "5RGkF3ZYl?Wd#Vb?aa?E3:i_jW3goTnlMmQ\_[U`mC1>2j\DWQaQnk;`9oEC"
    A$ = A$ + "[ga4NLRKDO_liMBGm4OH7WaL\nl\_YeW_MiYhcE[?RmKoNjejeRfmAdeoeN8"
    A$ = A$ + "FOEWFSYR7WbAI_gW`SePL0ecc^hn4?IjlWZoHW^nJ;N<jJd>E3YcA]R1]OE`"
    A$ = A$ + "CFa2>6cCkmjhD]l6;fUGJG=9Cn1X^SCo=7PgAgkd9]f[h9mJfYI?QgP1ncAi"
    A$ = A$ + "I4KK=k>V^>6aNbOimmm7TeDjnUgdjgiLklF1nD<i>o=4b_emkddWl3]S[L2C"
    A$ = A$ + "L_WVjKBe4:oXO^Xf9nnKMJd88ninIe[gecio^0[G;>NoMJhD=R]nS[`2cAfU"
    A$ = A$ + "3OBGO27:>E?CgQWHmh9mJ[=`ekJ^K=SP5eg[a3d^]n^i4lJhJh;FDmTF32_f"
    A$ = A$ + "g5?H^VeJWbK_37:FLjJ?i]ZL3dfL_XaW<WWcQnAm0gn>Jo`Nn^kaKc=A]SU?"
    A$ = A$ + "hlBCJ<>OeSlkc0go?Cl46m_9]MNIgUoJJ>o9>9HQe\I;aLN<HR[WgeThk78S"
    A$ = A$ + "?mN?iD?5_ZG96K:oHmJMG\PaZ7GCOo?UcJga>Ec^SKnlnmU7glGLL_^96Clm"
    A$ = A$ + "5Q_ON1oLmFL<RO>GVebkJI=QGClQW;g`3gOK[WOE?>fi9k46iib=6?U_dKml"
    A$ = A$ + "OgG:N<eMklE]fkMeNH_0Wh1WZo[jh?GlPkC_VoHZ__]?RGY_L:?5[ij4W`J_"
    A$ = A$ + "]O]L>_68DgW_o]\f=HU[Ygj6kZ=\SYjEVFCZgVOCbhnjm^i\JoZNTad_mR4G"
    A$ = A$ + "m[;mkc[OQiB^f?bk0FhNQhNX#\bhl4VLEoBVjWnSF?nMeAlJfEOFG]>7EgOJ"
    A$ = A$ + "=7_Rc0g0^YkOUmo26dkEGgk:kgU[Uh=iVV`RMieVjQeD_ZNGmKJ9cMJ>[CLT"
    A$ = A$ + "N\MheSR;=o5mS2^1l1[U0ND__eOeTnb9naDOfGSYkcdgUoNF^f>e_X7M<ekg"
    A$ = A$ + "VcZgCYkd_M>=WoghBe5PkhNTHoA^W_CNMWh9]NLkAci[NGP55GJ=fWF;g7E_"
    A$ = A$ + "h>LVMn[ZWFSKeSUe80?PchLFfck>LXm>am:fJj__nmY6o9kRICnP_;VE=YF;"
    A$ = A$ + "Ji>E;caNfgL7gO4g;AWcbl8S=eOl^OKA=VlXm4ii<Fe]OEOh;NLG>a9nQa:l"
    A$ = A$ + "6i1jKESWSeOW\ZFQSo5[fE3Xa2G;^kWnkSlDCSk\fjk`TCHDm\i[clUE\XeT"
    A$ = A$ + "KlXl4cGL_D:g`iWfYG0nP_k9?_L]O8`26>VMelnCmRgHaTfT?6aoNoGiof7Q"
    A$ = A$ + "7dj2WZS\[32aiMm\jT7;GCnjeh3mogRH]MW`RWSo[YJJ>MM=GUa<Zecjgf?E"
    A$ = A$ + "eBLN9?__gOLk`3[K\^^Gbo7B=e[fkP;CmhjAmEQ6?i^lJKB\dh1LPZOKlZ[]"
    A$ = A$ + "adm8Wi:eSk;mo?_N4mTkb=fQY^WVClUjUbkG]4ogSSoo2BSc5;Ln\ZOlJ0;H"
    A$ = A$ + "<M_^m^HH_]^fRfgUZQkHOkCRmG1gXo__Ym:LGM7nnBhedH=g0lhdjH]S3<e?"
    A$ = A$ + "aFSQeamlMOO?HmlbEjS]nQ[5Qh]m3_KlBmog^k>FOnfMOdMUf\i4ChSO=K_A"
    A$ = A$ + "le<U_Zm#YeKHmMk[eeJknd^>n[moO2K^bEiN^SfOe>lPed`l3n]<YeKDNAm="
    A$ = A$ + "a_g<U_d17o>ggD_67k^O3_S7<j5eD_AZnMa]YjnJ=PP=C[IKcGiJDnHQC<aA"
    A$ = A$ + ">aEN>N`8oTi0ESOWg:hCCnJWjI5l4gG`?FaRMhcMmOeenKJ^_eb=6ioWC#<e"
    A$ = A$ + "eUglBFGIJ]VN=jMjM5N`h^hBej]V^cI]fgiE<6eofKVZi^m]RJ?nHCOhiR;\"
    A$ = A$ + "Uee[LSM[;UmmBlfJ==7Ui9FSgnJ13Ho?Ei3?:_I57Vh=E3_LUjSMbS[[kfL4"
    A$ = A$ + "NmH=Sno1n`EHAOlJk:OadmgK__kWlIinG=]N8XWlJ[o6O<<\V3[=Ia9b]=eG"
    A$ = A$ + "4^VeSGNSl[g;mg]?U7Cl\??nlh]MlOPD%%L2"
    btemp$ = ""
    For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
        If InStr(1, B$, "%") Then
            For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
                If F$ <> "%" Then C$ = C$ + F$
            Next: B$ = C$: End If: For j = 1 To Len(B$)
            If Mid$(B$, j, 1) = "#" Then
        Mid$(B$, j) = "@": End If: Next
        For t% = Len(B$) To 1 Step -1
            B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
            Next: X$ = "": For t% = 1 To Len(B$) - 1
            X$ = X$ + Chr$(B& And 255): B& = B& \ 256
    Next: btemp$ = btemp$ + X$: Next
    btemp$ = _Inflate$(btemp$)
    _MemPut m, m.OFFSET, btemp$: _MemFree m
    BASIMAGE2& = _CopyImage(v&): _FreeImage v&
End Function

Something in-between games to separate the showing of a ball and the hiding of the next:
   

A little edit since I've begun to take an interest in this game.


RE: Find the ball - classic shell game - johnno56 - 05-10-2022

Question. What if I wanted to change the type of cups or ball? eg: Walnut shells and a pea.
Does this mean (ok. Two questions) that only the author has the ability to make changes?


RE: Find the ball - classic shell game - Dav - 05-10-2022

Well that makes it more fun, @bplus, more like a game now.  I always appreciate your modifications.  Hmm...that's an elegant method of asking user ENTER or quit (IF LEN(yes$) THEN END).  I think i will adopt that.  Sorry I didn't get to work on this today.  Maybe tomorrow....

@johnno56, you can switch it to shells and peas instead, just swap out the cup & ball image to load new pics. You will have to adjust the x/y stuff in the code.  Maybe it would be good to use to same image size as the cup and ball - perhaps doing that the current x/y stuff can just stay the same and still work.  The cup image is 235x336 and the ball image size is 100x99.  You and anyone else here has my permission to change this code however you want.  Have fun.

- Dav