patienceD (((XPatience IV: The Wall by Colin Gooch from ZX Computing Feb/Mar.1985 fNOTE: to start RUN 9980 for UDG setup;else justRUN py()=((z1-1)*13 +z2)*5-4:x$()=a$(y()̨y()+4):w$()=a$(y()-5̨y()-1) 223658j\,8:4:4:0: !1910v:0:1790  PRINT HAND ex=1252:n=21816:n,x;6;(x/2+64@):n:x >y=4184:y,0;6;y/4:y $round=round+1:0,0;6;"PRESS ""00"" TO END ROUND";20,0;"ROUND ";round:c=1:y=3184:x=1252:(y+1,x)=32  c$=a$(cc+4):1290  .c=c+5:x:y 8 REMOVE ACES Bs#1;0,0;"YOU MUST REMOVE THE ACES. ";1,0;"PLEASE PRESS ENTER TO CONTINUE":0 Lg$="" Vb=14 `21,0;"ENTER COORDINATES OF ACE No. ";b: z$:1690:1410:a$(y())"A"#1;"SORRY NOT AN ACE ":100d:"":1120` j81400x:g$=g$+z$:a$(y()̨y()+4)=" ":b t?21,0;4;" " ~ MOVE A CARD ]0,0;"WHICH CARD TO MOVE? ENTER LINE";1,0;"THEN COLUMN EG.3F ";z$ z$="00"1450 )1690:q$=z$:1410:c$=x$() rc$=" "0,0;"SORRY BUT THAT WAS A SPACE!";1,0;"PLEASE ENTER AGAIN";z$:1170 ;a$(y()̨y()+4)=" ":z1b=z1:z2b=z2:1400x }c$(1)="2"n=182:g$(n+1)="A"z$=g$(nn+1):1690:1410:nn=n:1270  c$(1)="2"n:1260 xn=182:z$=g$(nn+1):1690:1410:h$=w$():h$=" "n:h$=" "1260 ]c$(23)=h$(23)+1c$(4)=h$(4)nn=n:1270 n [z1=z1b:z2=z2b:1410:a$(y()̨y()+4)=c$:y=y+1:1290 :1150~ Iy=y+1:a$(y()̨y()+4)=c$:1290 :g$(nnnn+1)=q$  1150~  PRINT A CARD ٰc$(5):7 c$(1)="T"y,x;"" (/c$(1)"T"y,x;c$(1);c$(1) 2x*8,168-y*8:8:0,8:16,0:ٰc$(5):0 changed to 8 sothe red cards display OK. [JimG] <6c$(4)="S"y+1,x;"";y+2,x;"" F6c$(4)="D"y+1,x;"";y+2,x;"" P6c$(4)="C"y+1,x;"";y+2,x;"" Z6c$(4)="H"y+1,x;"";y+2,x;"" d nBLANK A CARD x7n=13:y+n,x;4;0;" ":n: CARD COORDINATES x=z2*2-1 y=z1*4-2   END A ROUND ace=1:p$="":f=0:m=12605:a$(m)="2"(m=1m=66Bm=131m=196)f=1:m Sa$(mm+4)=" "f=0:p$=p$+e$(aceace+4):ace=ace+5:m  p$=e$res=0:1600@ f1520 Za$(m+1m+2)=a$(m-4m-3)+1a$(m+3)=a$(m-2)m  f=0 m260x=(m/5-(m/65A)*13 )*2+1:y=(m/65A+1)*4-2:1390n:p$=p$+a$(mm+4):a$(mm+4)=" ":m:p$=""res=0:1600@ round<31560 19,0;7;0;"YOU ARE ONLY SUPPOSED TO HAVE ";20,0;"THREE GOES. IF YOU WANT TO CHEAT";21,0;"AND KEEP GOING ENTER C. IF NOT ":1770  z$=""res=1:1600@ a1760:21,0;">>>>>>> S H U F F L I N G <<<<<<":m=14:1850: " 1760 ,pcrep=1:n=12605:a$(n)=" "a$(nn+4)=p$(crepcrep+4):crep=crep+5 6n:1060$ @ END GAME J1:6:0: TMresn=301-1:n/100d,n:1,31-n;">":n ^res3,3;"SORRY BUT YOU DIDN'T MAKE ";4,1;"IT THAT TIME":round>34,13 ;"..EVEN THOUGH YOU";5,10 ;"HAD ";round;" ROUNDS" hresn=130:m=165:((31-n)/100d)*(m=1),n:m,n;1;7;0;2;"!":m:n rresn$="GREAT! YOU DID IT":n=117:3,n+5;3;7;1;n$(n):.01z# =,n:n:round>34,5;"BUT TOOK ";round-3;" EXTRA ROUND":round>44,28;"S" |12 ,3;"YOU MAY:-";14,3;"1) PLAY THIS GAME AGAIN";15,3;"2) PLAY NEXT GAME ON TAPE";17,5;"PRESS KEY TO CHOOSE" G0:="1"4:0:4:::1790:1030 ;="2":10 ,10 ;1;"START THE TAPE":"" S:There wasn't a trap for invalid entry, so I've just put in this. [JimG] CHECK VALID INPUT z$21750 v=12:z$(v)=""1750:This doesn'ttrap anything, as it will fail with "Subscript out of range" ifz$<2 . [JimG] v ez$(1)<491ůz$(1)>524ůz$(2)<65Aůz$(2)>77M1750 -z1=z$(1):z2=z$(2)-64@: ^0,0;"ENTRY UNACCEPTABLE";1,0;"PLEASE CHOOSE AGAIN";z$:1690 Rn=1921:n,0;4;" ":n: M0,0;0;7;"PRESS ENTER TO CONTINUE ";z$:  SET UP PACK 3,6;"PREPARING THE PACK":round=0:p$="":b$="SDCH":d$="A01202303404505606707808909T10J11Q12K13":e$="A01S0A01C0A01H2A01D2" ^q=139'3:p=14:col=0:p=2p=4col=2 "p$=p$+d$(qq+2)+b$(p)+col p:q &:7,9 ;5;1;"";8,9 ;"";10 ,12 ;7;1;"SHUFFLING";12 ,9 ;5;1;0;"";13 ,9 ;"" 0Ym=14:a=21+5*(1+(*20)):p$=p$(a)+p$(a-1) :n=6̱p$-55*(1+(*4)):c$=p$(nn+4):p$=p$(n-1)+p$(n+5)+c$:.01z# =,n/10 -10 Dn:m:round>0 Nn:m::a$=p$: X5"PRESS ENTER TO CONTINUE";z$:.05|L,10 : b GRAPHICS ls2,8;"FORMING GRAPHICS":2070:n=118:r$:m=07:m:r:r$+m,r:m:n: vINSTRUCTIONS i$=" *** * * *** * * * * * * * * * * * * * * * * * * *** ** * * * *** * * * * * * * * * * * * * * * * *** * * * * *** *** "  4:  2:4,0;4;4;i$;12 ,6;6;0;"A GAME OF PATIENCE";16,20;"by C.N.GOOCH";21,0;" PRESS ANY KEY TO CONTINUE ":20:4:4,0;1;i$:20:""1960  1940 ""1960 20,0;0;5;" DO YOU WANT INSTRUCTIONS? ";21,0;" PRESS ""Y""ES or ""N""O "  ="N": ="Y"2010  1970 0::'" A PACK OF CARDS WILL BE DEALT "'" INTO FOUR ROWS OF THIRTEEN "'" CARDS."'" THE ROWS DOWN THE SCREEN ARE"'" NUMBERED 1 TO 4; AND THE "'" COLUMNS ACROSS ARE A TO M. "'" CARDS ARE REFERENCED BY ROW "'" FOLLOWED BY COLUMN EG.3K ." \'" YOU MUST FIRST OF ALL ENTER "'" THE REFERENCES OF THE ACES; "'" THESE WILL BE REMOVED." '" THE OBJECT IS TO GET FOUR "'" ROWS RUNNING FROM 2 TO KING."''" THIS IS DONE BY MOVING CARDS"'" INTO GAPS SUCH THAT THE CARD"'" TO THE LEFT IS THE ONE BEFORE"'" IT IN ACE TO KING SEQUENCE, "'" IN EACH SUIT.":1770 :'" YOU WILL NOT BE ALLOWED TO "'" MAKE AN ILLEGAL MOVE. IN THE"'" EVENT OF AN INCORRECT ENTRY"'" YOU WILL BE ASKED TO ENTER"'" AGAIN. THE CARD CONCERNED "'" WILL FLICKER ONCE TO SHOW "'" THAT AN INPUT WAS RECEIVED." '" UNLIKE MANY GAMES OF PATIENCE"'" THIS GAME DOES NOT RELY PURELY"'" ON CHANCE. YOUR CHOICE OF CARD"'" TO BE MOVED WILL ALTER THE "'" PROGRESS OF THE GAME."  h'" THE GAME CONSISTS OF THREE "'" ROUNDS. WHEN YOU CAN MOVE "'" NO MORE PRESS ""00"".":1770:: GRAPHICS DATA  U"A",255,128,129,131,135,143,143,159 *S"B",255,1,129,193,225,241,241,249 4U"C",159,191,191,157,137,131,128,255 7S"F",255,1,129,193,225,241,249,253 >S"D",249,253,253,185,145,193,1,255 HU"E",255,128,129,131,135,143,159,191 \U"G",191,159,143,135,131,129,128,255 fS"H",253,249,241,225,193,129,1,255 pU"I",255,128,131,135,143,135,131,153 zS"J",255,1,193,225,241,225,193,153 U"K",189,191,159,141,129,131,128,255 S"L",189,253,249,177,129,193,1,255 U"M",255,128,156,190,191,191,159,143 R"N",255,1,579,125},253,253,249,241 U"O",143,135,135,131,129,129,128,255 S"P",241,225,225,193,129,129,1,255 K"Q",0,36$,42*,42*,42*,42*,36$,0 K"R",0,72H,84T,84T,84T,84T,72H,0 #( &v:10 ,10 ;1;" STOP THE TAPE ":n=110 :.1}L,n:10 :n:1900l:1000 '"patienceD"9980& '6:" REWIND THE TAPE"'" PLAYBACK TO VERIFY" ' &"patienceD"::1;" ALL OK"