10 WIDTH20,8:MEMSET&HB00:DEFINTA-Z
20 OPTIONBASE1:DIMCARD(16),DECK(16),TILE(4,4)
30 A=VAL(RIGHT$(TIME$,2)):RANDOMIZEA:POKE&H11E,&HA:POKE&H11F,&H40
40 FORI=&HA40 TO&HA9F:READJ$:J$="&H"+J$:J=VAL(J$):POKEI,J:NEXTI
50 FORI=1TO16:DECK(I)=I:NEXTI:CARD(16)=16
60 FORI=15TO1STEP-1
70 K=INT(RND*I)+1:CARD(16-I)=DECK(K)
80 FORJ=K TOI-1:DECK(J)=DECK(J+1)
90 NEXTJ:NEXTI
100 FORI=1TO4:FORJ=1TO4:TILE(I,J)=CARD(J*4+I-4):NEXTJ,I:X=4:Y=4
110 FORJ=1TO4:FORI=1TO4:LOCATEI+7,J-1:PRINTCHR$(223+TILE(I,J));:NEXTI,J
120 A$=INPUT$(1):A=ASC(A$):IFA<28ORA>31THEN120ELSEA=A-27
130 ONA GOSUB170,220,270,320
140 FLAG=0:FORI=1TO4:FORJ=1TO3
150 IFTILE(I,J)<>J*4+I-4THENFLAG=1
160 NEXTJ,I:IFFLAG=0THEN370ELSE120
170 IFX=1THENSOUND1,1:RETURN
180 SWAPTILE(X,Y),TILE(X-1,Y)
190 LOCATEX+7,Y-1:PRINTCHR$(223+TILE(X,Y));
200 LOCATEX+6,Y-1:PRINTCHR$(32);
210 X=X-1:SOUND20,1:RETURN
220 IFX=4THENSOUND1,1:RETURN
230 SWAPTILE(X,Y),TILE(X+1,Y)
240 LOCATEX+7,Y-1:PRINTCHR$(223+TILE(X,Y));
250 LOCATEX+8,Y-1:PRINTCHR$(32);
260 X=X+1:SOUND20,1:RETURN
270 IFY=4THENSOUND1,1:RETURN
280 SWAPTILE(X,Y),TILE(X,Y+1)
290 LOCATEX+7,Y-1:PRINTCHR$(223+TILE(X,Y));
300 LOCATEX+7,Y:PRINTCHR$(32);
310 Y=Y+1:SOUND20,1:RETURN
320 IFY=1THENSOUND1,1:RETURN
330 SWAPTILE(X,Y),TILE(X,Y-1)
340 LOCATEX+7,Y-1:PRINTCHR$(223+TILE(X,Y));
350 LOCATEX+7,Y-2:PRINTCHR$(32);
360 Y=Y-1:SOUND20,1:RETURN
370 IFTILE(1,4)=13ANDTILE(4,4)=16THEN380ELSE120
380 IFTILE(2,4)=14ANDTILE(3,4)=15THEN390ELSE400
390 FORI=1TO3:FORJ=56TO51STEP-1:SOUNDJ,1:SOUND51,1:SOUND56,1:NEXTJ,I:LOCATE0,0:END
400 FORI=1TO2:FORJ=56TO1STEP-4:SOUNDJ,1:SOUNDJ+1,1:NEXTJ,I:LOCATE0,0:END
410 DATA 00,00,44,7E,40,00,FF,BB,9D,AD,B3,FF,00,22,4A,4E,32,00,FF,CF,D7,DB,81,FF
420 DATA FF,D1,B5,B5,CD,FF,00,3C,4A,4A,30,00,FF,FD,8D,F5,F9,FF,00,34,4A,4A,34,00
430 DATA 00,0C,52,52,3C,00,FF,81,FF,81,BD,81,00,04,7E,00,04,7E,FF,81,FF,8D,B5,B3
440 DATA FF,81,FF,BD,B5,C9,00,7E,00,38,24,7E,FF,81,FF,B1,B5,8D,00,00,00,00,00,00

    Source: geocities.com/abcmcfarren/hx20

               ( geocities.com/abcmcfarren)