10 REM ************** 20 REM Patience 30 REM By Tim Surtell 40 REM ************** 50 REM NC100 Version 1.1 : Revision by Neil Harvey 20/01/00 60 REM Downloaded from Tim's NC Users' Site 70 REM http://www.ncus.org.uk 80 DIMcol%(52),num%(52),COL%(7,20),NUM%(7,20),FACE%(7,20),PCOL%(24),PNUM%(24):demo=FALSE 90 CLS:PRINTTAB(32,0)CHR$17"P a t i e n c e"CHR$18TAB(25,2)"Programmed By Timothy Surtell" 100 PRINTTAB(1,3)"Press :-"TAB(2,5)CHR$17"S"CHR$18" to start the game now."TAB(2,6)CHR$17"R"CHR$18" to read the rules of the game."TAB(2,7)CHR$17"P"CHR$18" to find out how to play computer Patience."; 110 G$=GET$ 120 IF G$="R" PROCRULES:GOTO90 130 IF G$="P" PROCPLAYING:GOTO90 140 IF G$="S" PROCPLAY:GOTO90 150 IF G$="D" PROCDEMO:GOTO90 160 GOTO110 170 DEF PROCPLAY 180 CLS:PRINTTAB(32,0)CHR$17"P a t i e n c e"CHR$18TAB(1,2)"Please wait...shuffling the cards..."TAB(1,4)"0% 50% 100%" 190 MOVE10,15:DRAW115,15:DRAW115,23:DRAW10,23:DRAW10,15:PLOT69,10,24:PLOT69,62,23:PLOT69,115,24 200 FOR I=1 TO 52 210 REPEAT 220 col=RND(4):num=RND(13) 230 T=FALSE 240 FORA=1 TO I 250 IF col%(A)=col AND num%(A)=num T=TRUE:A=I 260 NEXT 270 UNTILT=FALSE 280 col%(I)=col:num%(I)=num 290 MOVEI*2+9,16:PLOT21,I*2+9,22:MOVEI*2+10,17:PLOT21,I*2+10,22 300 NEXT 310 PRINTTAB(1,7)"The cards have been shuffled. Press any key to deal...";:G=GET 320 CLS 330 CARD=1 340 FORI=1 TO 7 350 FORA=I TO 7 360 COL%(A,I)=col%(CARD):NUM%(A,I)=num%(CARD) 370 IF A=I FACE%(I,A)=TRUE ELSE FACE%(I,A)=FALSE 380 PROCDRAW(A,I,COL%(I,A),NUM%(I,A),FACE%(I,A)) 390 CARD=CARD+1 400 NEXT 410 NEXT 420 FORI=1 TO 24 430 PCOL%(I)=col%(CARD):PNUM%(I)=num%(CARD) 440 CARD=CARD+1 450 NEXT 460 DEAL=4 470 NIP=24:PP=1:PROCDRAW(98,0,0,0,FALSE):PROCDRAW(99,0,PCOL%(PP),PNUM%(PP),TRUE) 480 PROCDEL:PRINTTAB(0,1)"Next move :-"TAB(0,3)"(D)eal or (M)ove":G$=GET$ 490 IF G$="D" PROCDEL:PRINTTAB(0,3)"DEALING...":DIR=TRUE:FORZ=1 TO DEAL:PROCDEAL:NEXT:GOTO480 500 IF G$="M" PROCMOVE:GOTO520 510 IF G$="E" PROCEND:IF G$="R" ENDPROC 520 FIN=0 530 FORI=1 TO 7 540 IF NUM%(I,FNL(I))=13 AND NUM%(I,FNF(I))=1 FIN=FIN+1 550 NEXT 560 IF FIN=4 PROCWIN 570 GOTO480 580 DEF PROCDRAW(X,Y,col,num,F) 590 IF X=96 X=175:Y=25:F=FALSE:GOTO660 600 IF X=97 X=175:Y=25:MOVEX,Y:PLOT103,X+21,Y+27:ENDPROC 610 IF X=98 X=175:Y=25:GOTO660 620 IF X=99 X=200:Y=25:GOTO660 630 X=X*24+250:Y=(20-Y)*2-2 640 IF col=99 MOVEX,Y:PLOT103,X+21,Y+27:ENDPROC 650 IF col=98 MOVEX,Y:PLOT21,X+21,Y:PLOT21,X+21,Y+27:PLOT21,X,Y+27:PLOT21,X,Y:ENDPROC 660 MOVEX,Y:PLOT103,X+21,Y+27:MOVEX,Y:DRAWX+21,Y:DRAWX+21,Y+27:DRAWX,Y+27:DRAWX,Y 670 IF F=FALSE:FORQ=Y+1 TO Y+26STEP2:MOVEX+1,Q:PLOT21,X+20,Q:NEXT:MOVEX+1,Y+1:MOVEX+20,Y+7:PLOT86,X+1,Y+10:MOVEX+12,Y+1:MOVEX+20,Y+5:PLOT86,X+1,Y+25:MOVEX+1,Y+12:MOVEX+20,Y+22:PLOT86,X+15,Y+26:ENDPROC 680 x1=X+2:y1=Y+21:x2=X+15:y2=Y+2 690 IF num=1 PROCACE 700 IF num=2 PROC2 710 IF num=3 PROC3 720 IF num=4 PROC4 730 IF num=5 PROC5 740 IF num=6 PROC6 750 IF num=7 PROC7 760 IF num=8 PROC8 770 IF num=9 PROC9 780 IF num=10 PROC10 790 IF num=11 PROCJACK 800 IF num=12 PROCQUEEN 810 IF num=13 PROCKING 820 IF col=1 PROCHU(X+8,Y+21):PROCHD(X+9,Y+2) 830 IF col=2 PROCDU(X+8,Y+21):PROCDD(X+9,Y+2) 840 IF col=3 PROCSU(X+8,Y+21):PROCSD(X+9,Y+2) 850 IF col=4 PROCCU(X+8,Y+21):PROCCD(X+9,Y+2) 860 IFnum>10PROCSHADE(X+7,Y+8) 870 ENDPROC 880 DEF PROCACE:MOVEx1,y1:DRAWx1,y1+2:DRAWx1+2,y1+4:DRAWx1+4,y1+2:DRAWx1+4,y1:MOVEx1+1,y1+1:DRAWx1+3,y1+1:MOVEx2,y2+4:DRAWx2,y2+2:DRAWx2+2,y2:DRAWx2+4,y2+2:DRAWx2+4,y2+4:MOVEx2+1,y2+3:DRAWx2+3,y2+3:ENDPROC 890 DEF PROC2:MOVEx1+4,y1:DRAWx1,y1:DRAWx1,y1+1:DRAWx1+2,y1+2:DRAWx1+3,y1+2:DRAWx1+4,y1+3:DRAWx1+3,y1+4:DRAWx1,y1+4:MOVEx2,y2+4:DRAWx2+4,y2+4:DRAWx2+4,y2+3:DRAWx2+3,y2+2:DRAWx2+1,y2+2:DRAWx2,y2+1:DRAWx2+1,y2:DRAWx2+4,y2:ENDPROC 900 DEF PROC3:MOVEx1,y1:DRAWx1+3,y1:DRAWx1+4,y1+1:DRAWx1+3,y1+2:DRAWx1+1,y1+2:MOVEx1+4,y1+3:DRAWx1+3,y1+4:DRAWx1,y1+4:MOVEx2+4,y2+4:DRAWx2+1,y2+4:DRAWx2,y2+3:DRAWx2+1,y2+2:DRAWx2+3,y2+2:MOVEx2,y2+1:DRAWx2+1,y2:DRAWx2+4,y2:ENDPROC 910 DEF PROC4:MOVEx1+2,y1:DRAWx1+2,y1+4:DRAWx1+1,y1+4:DRAWx1,y1+2:DRAWx1+3,y1+2:MOVEx2+2,y2+4:DRAWx2+2,y2:DRAWx2+3,y2:DRAWx2+4,y2+1:DRAWx2+4,y2+2:DRAWx2+1,y2+2:ENDPROC 920 DEF PROC5:MOVEx1,y1:DRAWx1+3,y1:DRAWx1+4,y1+1:DRAWx1+3,y1+2:DRAWx1+1,y1+2:DRAWx1,y1+3:DRAWx1,y1+4:DRAWx1+4,y1+4:MOVEx2,y2:DRAWx2+4,y2:DRAWx2+4,y2+1:DRAWx2+3,y2+2:DRAWx2+1,y2+2:DRAWx2,y2+3:DRAWx2+1,y2+4:DRAWx2+4,y2+4:ENDPROC 930 DEF PROC6:MOVEx1+4,y1+4:DRAWx1,y1+4:DRAWx1,y1:DRAWx1+4,y1:DRAWx1+4,y1+2:DRAWx1+1,y1+2:MOVEx2,y2:DRAWx2+4,y2:DRAWx2+4,y2+4:DRAWx2,y2+4:DRAWx2,y2+2:DRAWx2+3,y2+2:ENDPROC 940 DEF PROC7:MOVEx1,y1+4:DRAWx1+4,y1+4:DRAWx1+4,y1+3:DRAWx1+2,y1+1:DRAWx1+2,y1:MOVEx2+4,y2:DRAWx2,y2:DRAWx2,y2+1:DRAWx2+2,y2+3:DRAWx2+2,y2+4:ENDPROC 950 DEF PROC8:MOVEx1,y1:DRAWx1+4,y1:DRAWx1+4,y1+4:DRAWx1,y1+4:DRAWx1,y1:MOVEx1,y1+2:DRAWx1+4,y1+2:MOVEx2,y2:DRAWx2+4,y2:DRAWx2+4,y2+4:DRAWx2,y2+4:DRAWx2,y2:MOVEx2,y2+2:DRAWx2+4,y2+2:ENDPROC 960 DEF PROC9:MOVEx2+4,y2+4:DRAWx2,y2+4:DRAWx2,y2:DRAWx2+4,y2:DRAWx2+4,y2+2:DRAWx2+1,y2+2:MOVEx1,y1:DRAWx1+4,y1:DRAWx1+4,y1+4:DRAWx1,y1+4:DRAWx1,y1+2:DRAWx1+3,y1+2:ENDPROC 970 DEF PROC10:MOVEx1,y1:DRAWx1,y1+4:MOVEx1+2,y1:DRAWx1+4,y1:DRAWx1+4,y1+4:DRAWx1+2,y1+4:DRAWx1+2,y1:MOVEx2,y2:DRAWx2+2,y2:DRAWx2+2,y2+4:DRAWx2,y2+4:DRAWx2,y2:MOVEx2+4,y2:DRAWx2+4,y2+4:ENDPROC 980 DEF PROCJACK:MOVEx1,y1+4:DRAWx1+4,y1+4:MOVEx1+2,y1+4:DRAWx1+2,y1:DRAWx1,y1:MOVEx2,y2:DRAWx2+4,y2:MOVEx2+2,y2:DRAWx2+2,y2+4:DRAWx2+4,y2+4:ENDPROC 990 DEF PROCQUEEN:MOVEx1,y1:DRAWx1,y1+4:DRAWx1+4,y1+4:DRAWx1+4,y1+2:DRAWx1+2,y1:DRAWx1,y1:MOVEx1+4,y1:DRAWx1+2,y1+2:MOVEx2,y2:DRAWx2+4,y2:DRAWx2+4,y2+4:DRAWx2+2,y2+4:DRAWx2,y2+2:DRAWx2,y2:MOVEx2+2,y2+2:DRAWx2,y2+4:ENDPROC 1000 DEF PROCKING:MOVEx1,y1:DRAWx1,y1+4:MOVEx1+3,y1:DRAWx1+1,y1+2:DRAWx1+3,y1+4:MOVEx2+4,y2:DRAWx2+4,y2+4:MOVEx2+1,y2:DRAWx2+3,y2+2:DRAWx2+1,y2+4:ENDPROC 1010 DEF PROCHU(x1,y1):MOVEx1+1,y1+1:PLOT101,x1+3,y1+3:PLOT69,x1+2,y1:PLOT69,x1,y1+2:PLOT69,x1+4,y1+2:PLOT69,x1+1,y1+4:PLOT69,x1+3,y1+4:ENDPROC 1020 DEF PROCDU(x1,y1):MOVEx1+1,y1+1:PLOT101,x1+3,y1+3:PLOT69,x1,y1+2:PLOT69,x1+4,y1+2:PLOT69,x1+2,y1:PLOT69,x1+2,y1+4:ENDPROC 1030 DEF PROCSU(x1,y1):MOVEx1+1,y1+2:PLOT101,x1+3,y1+3:PLOT69,x1,y1+1:PLOT69,x1+4,y1+1:PLOT69,x1+2,y1+4:PLOT69,x1+2,y1:PLOT69,x1+2,y1+1:ENDPROC 1040 DEF PROCCU(x1,y1):MOVEx1+1,y1+1:PLOT101,x1+3,y1+3:PLOT69,x1,y1+1:PLOT69,x1+4,y1+1:PLOT69,x1+2,y1:PLOT69,x1+2,y1+4:ENDPROC 1050 DEF PROCHD(x1,y1):MOVEx1+1,y1+1:PLOT101,x1+3,y1+3:PLOT69,x1+2,y1+4:PLOT69,x1,y1+2:PLOT69,x1+4,y1+2:PLOT69,x1+1,y1:PLOT69,x1+3,y1:ENDPROC 1060 DEF PROCDD(x1,y1):MOVEx1+1,y1+1:PLOT101,x1+3,y1+3:PLOT69,x1,y1+2:PLOT69,x1+4,y1+2:PLOT69,x1+2,y1:PLOT69,x1+2,y1+4:ENDPROC 1070 DEF PROCSD(x1,y1):MOVEx1+1,y1+1:PLOT101,x1+3,y1+2:PLOT69,x1,y1+3:PLOT69,x1+4,y1+3:PLOT69,x1+2,y1:PLOT69,x1+2,y1+3:PLOT69,x1+2,y1+4:ENDPROC 1080 DEF PROCCD(x1,y1):MOVEx1+1,y1+1:PLOT101,x1+3,y1+3:PLOT69,x1,y1+3:PLOT69,x1+4,y1+3:PLOT69,x1+2,y1:PLOT69,x1+2,y1+4:ENDPROC 1090 DEF PROCSHADE(x1,y1):MOVEx1,y1:DRAWx1+7,y1:DRAWx1+7,y1+11:DRAWx1,y1+11:DRAWx1,y1:ENDPROC 1100 DEF PROCDEAL 1110 IF NIP=0 MOVE200,25:PLOT103,221,52:MOVE200,25:PLOT21,221,25:PLOT21,221,52:PLOT21,200,52:PLOT21,200,25:PRINTTAB(38,2)"Pack"TAB(38,3)"Empty":ENDPROC 1120 IF PP=NIP PP=1 ELSE PP=PP+1 1130 PROCDRAW(99,0,PCOL%(PP),PNUM%(PP),TRUE) 1140 IF PP=NIP OR NIP=1 PROCDRAW(97,0,0,0,0):ENDPROC 1150 IF PP=1 PROCDRAW(96,0,0,0,0) 1160 IF PP=1 AND DEAL>1 AND DIR=TRUE DEAL=DEAL-1 1170 ENDPROC 1180 DEF PROCMOVE 1190 PROCDEL:PRINTTAB(0,5)"Move :"TAB(0,3)"(N)ext or column(1-7)" 1200 G=GET 1210 IF G>48 AND G<56 PRINTTAB(7,5)"Column ";CHR$G:M=G-48:GOTO1240 1220 IF G=78 PRINTTAB(7,5)"Next card":M=99:GOTO1240 1230 GOTO1200 1240 PRINTTAB(0,6)"To :"TAB(0,3)"Column(1-7)"SPC10 1250 G=GET 1260 IF G>48 AND G<56 PRINTTAB(7,6)"Column ";CHR$G:T=G-48:GOTO1280 1270 GOTO1250 1280 IF M=99 PROCMOVENEXT ELSE PROCMOVECOL 1290 ENDPROC 1300 DEF PROCMOVENEXT 1310 IF NIP=0 ENDPROC 1320 IF FNF(T)=0 AND PNUM%(PP)<13 ENDPROC 1330 IF FNF(T)=0 AND PNUM%(PP)=13 NUM%(T,1)=PNUM%(PP):COL%(T,1)=PCOL%(PP):FACE%(T,1)=TRUE:PROCDRAW(T,1,PCOL%(PP),PNUM%(PP),TRUE):PROCKILLCARD:ENDPROC 1340 IF PNUM%(PP)<>NUM%(T,FNF(T))-1 ENDPROC 1350 IF COL%(T,FNF(T))<3 AND PCOL%(PP)<3 ENDPROC 1360 IF COL%(T,FNF(T))>2 AND PCOL%(PP)>2 ENDPROC 1370 NUM%(T,FNF(T)+1)=PNUM%(PP):COL%(T,FNF(T))=PCOL%(PP) 1380 PROCKILLCARD:PROCDRAW(T,FNF(T)+3,COL%(T,FNF(T)),NUM%(T,FNF(T)),TRUE) 1390 ENDPROC 1400 DEF PROCMOVECOL 1410 IF FNF(T)=0 AND NUM%(M,FNL(M))<13 ENDPROC 1420 IF FNF(T)=0 AND NUM%(M,FNL(M))=13 GOTO1460 1430 IF NUM%(M,FNL(M))<>NUM%(T,FNF(T))-1 ENDPROC 1440 IF COL%(T,FNF(T))<3 AND COL%(M,FNL(M))<3 ENDPROC 1450 IF COL%(T,FNF(T))>2 AND COL%(M,FNL(M))>2 ENDPROC 1460 FORK=FNL(M) TO FNF(M) 1470 NUM%(T,FNF(T)+1)=NUM%(M,K):COL%(T,FNF(T))=COL%(M,K):FACE%(T,FNF(T))=FACE%(M,K) 1480 IF NUM%(T,FNF(T))=13 PROCDRAW(T,FNF(T),COL%(T,FNF(T)),NUM%(T,FNF(T)),TRUE) ELSE PROCDRAW(T,FNF(T)+3,COL%(T,FNF(T)),NUM%(T,FNF(T)),TRUE) 1490 NEXT 1500 Z=FNL(M) 1510 IF FNF(M)=FNL(M) OR FNF(M)=1 GOTO1550 1520 FORK=FNL(M)+1 TO FNF(M) 1530 NUM%(M,K)=0:COL%(M,K)=0:FACE%(M,K)=0:PROCDRAW(M,K+4,99,0,0) 1540 NEXT 1550 NUM%(M,Z)=0:COL%(M,Z)=0:FACE%(M,Z)=0:PROCDRAW(M,Z,99,0,0) 1560 IF FNF(M)>0 PROCDRAW(M,Z-1,COL%(M,Z-1),NUM%(M,Z-1),TRUE):FACE%(M,Z-1)=TRUE 1570 IF FNL(M)=20 PROCDRAW(M,1,98,0,0) 1580 ENDPROC 1590 DEF FNF(Z) 1600 L=21:REPEAT:L=L-1:UNTILNUM%(Z,L)>0 OR L=0 1610 =L 1620 DEF FNL(Z) 1630 L=0:REPEAT:L=L+1:UNTILFACE%(Z,L)=TRUE OR L=20 1640 =L 1650 DEF PROCKILLCARD 1660 IF PP=NIP GOTO1710 1670 FORK=PP TO NIP-1 1680 PNUM%(K)=PNUM%(K+1):PCOL%(K)=PCOL%(K+1) 1690 NEXT 1700 PNUM%(NIP)=0:PCOL%(NIP)=0 1710 DIR=FALSE:NIP=NIP-1:IF PP=1 PP=NIP-1 ELSE PP=PP-2 1720 PROCDEAL 1730 ENDPROC 1740 DEF PROCDEL:FORI=0 TO 6:PRINTTAB(0,I)SPC25:NEXT:ENDPROC 1750 DEF PROCRULES 1760 CLS 1770 PRINTTAB(0,0)"The rules of ";CHR$17;"Patience"CHR$18TAB(0,2)"Press any key to move on...":PROCDELAY:CLS 1780 PRINTTAB(0,0)"The cards are dealt into"'"seven columns, with the"'"last card of each column"'"turned face up..." 1790 FORI=1 TO 7 1800 FORA=I TO 7 1810 IF A>I PROCDRAW(A,I,0,0,FALSE) 1820 IF I=1 C=2:N=1 ELSE IF I=2 C=1:N=5 ELSE IF I=3 C=3:N=6 ELSE IF I=4 C=2:N=6 ELSE IF I=5 C=4:N=2 ELSE IF I=6 C=2:N=7 ELSE IF I=7 C=3:N=8 1830 IF A=I PROCDRAW(A,I,C,N,TRUE) 1840 NEXT 1850 NEXT 1860 PROCDELAY 1870 PRINTTAB(0,5)"The rest of the pack"'"is placed below...":PROCDRAW(98,0,0,0,FALSE):PROCDRAW(99,0,1,13,TRUE):PROCDELAY:PROCDEL 1880 PROCDEL 1890 PRINTTAB(0,0)"A column can be moved"'"only if the last card in"'"the column is one number"'"lower and a different"'"colour to the first card"'"of the other column.":PROCDELAY:PROCDEL 1900 PRINTTAB(0,0)"The 5 of hearts "CHR$19"cannot"CHR$20" be"'"moved to the 6 of"'"diamonds...":PROCA(120,43,303,50):PROCA(120,43,350,35):PROCDELAY:PRINTTAB(0,4)"...as both cards are red.":PROCDELAY 1910 PROCA(120,43,303,50):PROCA(120,43,350,35):PROCDEL 1920 PRINTTAB(0,0)"The 5 of hearts "CHR$19"cannot"CHR$20" be"'"moved to the 2 of"'"clubs...":PROCA(120,43,303,50):PROCA(120,43,376,40):PROCDELAY:PRINTTAB(0,4)"...as the 5 is bigger"TAB(0,5)"than the 2.":PROCDELAY 1930 PROCA(120,43,303,50):PROCA(120,43,376,40):PROCDEL 1940 PRINTTAB(0,0)"The 5 of hearts "CHR$19"can"CHR$20" be"'"moved to the 6 of"'"spades...":PROCA(120,43,303,50):PROCA(120,43,328,40):PROCDELAY:PRINTTAB(0,4)"Like this..." 1950 PROCA(120,43,303,50):PROCA(120,43,328,40):PROCDRAW(3,7,1,5,TRUE):PROCDRAW(2,2,99,0,0):PROCDRAW(2,1,0,0,FALSE):PROCDELAY:PROCDEL 1960 PRINTTAB(0,0)"The card underneath"'"can now be turned over...":PROCDRAW(2,1,3,10,TRUE):PROCDELAY:PROCDEL 1970 PRINTTAB(0,0)"The ace of diamonds can"'"be moved to the 2 of"'"clubs...":PROCDRAW(5,9,2,1,TRUE):PROCDRAW(1,1,99,0,0):PROCDELAY:PROCDRAW(1,1,98,0,0):PRINTTAB(0,4)"Leaving an empty space...":PROCDELAY 1980 PROCDEL:PRINTTAB(0,0)"The king from the pack"'"can be put here...":PROCDRAW(1,1,1,13,TRUE):PROCDELAY:PRINTTAB(0,3)"And the next card can"'"be dealt...":PROCDRAW(99,0,3,6,TRUE):PROCDELAY:PROCDEL 1990 PRINTTAB(0,0)"The idea of the game is"'"to get four columns with"'"cards from king to ace..." 2000 N=12 2010 FORI=5 TO 16 2020 IF I MOD 2=1 PROCDRAW(1,I,3,N,TRUE) ELSE PROCDRAW(1,I,1,N,TRUE) 2030 N=N-1 2040 NEXT 2050 PROCDELAY 2060 ENDPROC 2070 DEF PROCPLAYING 2080 CLS:PRINTTAB(0,0)"How to play computer ";CHR$17;"Patience."CHR$18TAB(0,2)"Press any key to move on...":PROCDELAY:CLS 2090 PRINTTAB(0,0)"When the cards are"'"shuffled they will be"'"dealt as follows..." 2100 FORI=1 TO 7 2110 FORA=I TO 7 2120 IF A>I PROCDRAW(A,I,0,0,FALSE) 2130 IF I=1 C=2:N=1 ELSE IF I=2 C=1:N=5 ELSE IF I=3 C=3:N=6 ELSE IF I=4 C=2:N=6 ELSE IF I=5 C=4:N=2 ELSE IF I=6 C=2:N=7 ELSE IF I=7 C=3:N=8 2140 IF A=I PROCDRAW(A,I,C,N,TRUE) 2150 NEXT 2160 NEXT 2170 PROCDELAY:PRINT'"The rest of the pack"'"is placed below...":PROCDRAW(98,0,0,0,FALSE):PROCDRAW(99,0,4,4,TRUE):PROCDELAY:PROCDEL 2180 PRINTTAB(0,0)"To deal the next card"'"from the pack press "CHR$17"D."CHR$18:PROCDELAY:PROCDEL 2190 PRINTTAB(0,0)"To move a card or column"'"press "CHR$17"M."CHR$18:PROCDELAY:PRINT'"Each column has a"'"number from 1 to 7..." 2200 REPEAT:FORI=1 TO 7:PROCA(145,10,I*24+254,47):PRINTTAB(15,7)"Column ";I;:TIME=0:REPEAT:UNTILTIME=100:PROCA(145,10,I*24+254,47):NEXT:PRINTTAB(15,7)SPC8;:TIME=0:REPEAT:UNTILTIME=100:UNTILINKEY(1)<>-1 OR demo=TRUE 2210 PROCDEL:PRINTTAB(0,0)"To move one column onto"'"another press the number "'"of the first column and"'"then the number of the"'"second column.":PROCDELAY:PROCDEL 2220 PRINTTAB(0,0)"Example : to move the"'"5 of hearts to the 6"'"of spades press "CHR$17"M 2 3"CHR$18:PROCA(120,43,303,50):PROCA(120,43,328,40):PROCDELAY:PROCA(120,43,303,50):PROCA(120,43,328,40):PROCDEL 2230 PRINTTAB(0,0)"To move the next card"'"from the pack to a column"'"press "CHR$17"N "CHR$18"and then the"'"column number.":PROCDELAY:PROCDEL 2240 PRINTTAB(0,0)"Example : to move the"'"next card to the 5 of"'"hearts press "CHR$17"M N 2"CHR$18:PROCA(120,43,303,50):PROCA(120,43,204,35):PROCDELAY:PROCA(120,43,303,50):PROCA(120,43,204,35):PROCDEL 2250 PRINTTAB(0,0)"To exit from the game"'"at any time press "CHR$17"E."CHR$18:PROCDELAY:ENDPROC 2260 DEF PROCDELAY 2270 IF demo=FALSE G=GET ELSE TIME=0:REPEAT:UNTILTIME=500 2280 ENDPROC 2290 DEF PROCEND 2300 PRINTTAB(0,4)"Press Q to quit"TAB(6,5)"R to return to menu"TAB(6,6)"C to continue" 2310 G$=GET$ 2320 IF G$="C" PRINTTAB(0,4)SPC20TAB(0,5)SPC20TAB(0,6)SPC20:ENDPROC 2330 IF G$="R" ENDPROC 2340 IF G$="Q" CLS:END 2350 GOTO2310 2360 DEF PROCWIN 2370 MOVE98,8:PLOT103,402,62:MOVE100,10:DRAW400,10:DRAW400,60:DRAW100,60:DRAW100,10 2380 PRINTTAB(18,2)"CONGRATULATIONS!!! You have completed the game."TAB(18,5)"Press R to re-run or E to end..." 2390 G$=GET$ 2400 IF G$="R" RUN 2410 IF G$="E" CLS:END 2420 GOTO2390 2430 DEF PROCA(X1,Y1,X2,Y2) 2440 MOVEX1,Y1:PLOT6,X2,Y2:MOVEX2-1,Y2-1:PLOT102,X2+1,Y2+1 2450 ENDPROC 2460 DEF PROCDEMO 2470 demo=TRUE 2480 PROCRULES 2490 IF INKEY$(1)="Q" demo=FALSE:ENDPROC 2500 PROCPLAYING 2510 IF INKEY$(1)="Q" demo=FALSE:ENDPROC 2520 GOTO2480