home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Loadstar 46
/
046.d81
/
solitaire
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-08-26
|
13KB
|
417 lines
10 poke53281,0:poke53280,11:printchr$(14):bo$="[176][192][174][157][157][157][221][221][157][157][157][173][192][189]"
20 dimt(52),a(52),s(52),w(5,48),ws(5)
30 x=rnd(-ti):gosub2260
40 s=54272:js=56320
50 fori=1to24:pokes+i,0:next
60 fori=1to52:t(i)=0:next
70 fori=1to3:a(i)=193:next:rem a
80 fori=4to7:a(i)=202:next:rem j
90 fori=8to11:a(i)=209:next:rem q
100 fori=12to15:a(i)=203:next:rem k
110 fori=16to19:a(i)=176:next:rem 0
120 fori=20to22:a(i)=178:next:rem2
130 fori=23to25:a(i)=179:next:rem 3
140 fori=26to28:a(i)=180:next:rem 4
150 fori=29to32:a(i)=181:next:rem 5
160 fori=33to36:a(i)=182:next:rem 6
170 fori=37to40:a(i)=183:next:rem 7
180 fori=41to44:a(i)=184:next:rem 8
190 fori=45to48:a(i)=185:next:rem 9
200 a(49)=193:a(50)=178:a(51)=179:a(52)=180
210 ifpz=1thenzz=48
220 ifpz=2thenzz=52
230 fori=1tozz
240 r=int(rnd(1)*zz)+1
250 ift(r)=1then240
260 s(i)=a(r):t(r)=1
270 next
280 ifpz=2then1180
290 :
300 sk=48:fori=1to5:ws(i)=0:w(i,0)=160:next:s(0)=160
310 x=1837:gosub850
320 pokex,s(sk):pokex+s,13
330 fori=0to9step3:poke1840+i+s,7:next
340 :
350 mk=0
360 pokex,peek(x)-128
370 print"[154][211]tack:"sk"[157] "
375 pokex,peek(x)+128
380 joy=15-(peek(js)and15):fb=peek(js)and16:getk$
390 ifjoy=8ork$=""thengosub1090
400 ifjoy=4ork$="[157]"thengosub1110
410 ifjoy=1ork$="[145]"thengosub1130
420 ifjoy=2ork$=""thengosub1150
430 iffb=0ork$=chr$(13)then480
440 ifk$="q"thenrun
450 pokex,peek(x)-128:fort=1to25:next
460 goto370
470 :
480 gosub2120:mk=mk+1:ifmk=2then530
490 ifx<>1837andx<>1840andx<>1843andx<>1846andx<>1849thengosub2030:goto350
500 ifpeek(x)=160thengosub2030:goto350
510 b=peek(x):c=x:pile=(x-1837)/3+1:goto360
520 :
530 ifpile=1then610
540 ifpeek(x)<>160thengosub2030:goto350
550 ifpeek(x+80)<>b-128thengosub2030:goto350
560 ifpeek(x-3)<161thengosub2030:goto350
570 pokex,b:pokex+s,14:gosub60100
580 ws(pi)=ws(pi)-1:pokec,w(pi,ws(pi))
590 goto740
600 :
610 ifx=1840orx=1843orx=1846orx=1849then690
620 ifpeek(x)<>160thengosub2030:goto350
630 ifpeek(x+80)<>b-128thengosub2030:goto350
640 ifpeek(x-3)<161thengosub2030:goto350
650 pokex,b:pokex+s,14:gosub60100
660 sk=sk-1:poke1837,s(sk)
670 goto740
680 :
690 z=(x-1837)/3+1
700 ws(z)=ws(z)+1:w(z,ws(z))=b
710 pokex,b:pokex+s,7
720 goto660
730 :
740 q=peek(1837)+peek(1840)+peek(1843)+peek(1846)+peek(1849)
750 ifq<>5*160then350
760 :
770 print""tab(6)" [211]uccess! "
780 fori=3to11:poke53280,i:gosub2120:next
790 fort=1to1000:next
800 print""tab(6)" [208]ress [153][198][201][210][197] to play again. "
810 fb=peek(js)and16:iffbthen810
820 run
830 end
840 :
850 print"[147][156] [176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
860 print" [221][154] [195]alculation [211]olitaire [146][156][221]"
870 print" [173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]"
880 a$="[176][192][174]":b$="[221][154] [146][221]":c$="[173][192][189]"
890 fori=1to4
900 forj=1to13:printa$;:next:print
910 forj=1to13:printb$;:next:print
920 forj=1to13:printc$;:next:print
930 print:next
940 :
950 printtab(12):forj=1to5:printa$;:next:print
960 printtab(12):forj=1to5:printb$;:next:print
970 printtab(12):forj=1to5:printc$;:next:print
980 print"[154][193]"
990 print"[159] 2 3 4 5 6 7 8 9 0 [202] [209] [203]"
1000 print"[154]1"
1010 print"[159] 4 6 8 0 [209] [193] 3 5 7 9 [202] [203]"
1020 print"[154]2"
1030 print"[159] 6 9 [209] 2 5 8 [202] [193] 4 7 0 [203]"
1040 print"[154]4"
1050 print"[159] 8 [209] 3 7 [202] 2 6 0 [193] 5 9 [203]"
1060 printtab(13)"[211] [215] [215] [215] [215]"
1065 print""
1066 fora=1to4
1067 printtab(3)bo$:print
1068 next:gosub4030
1070 return
1080 :
1090 x=x+3:ifsgn(peek(x)-128)=-1thenx=x-3
1100 return
1110 x=x-3:ifsgn(peek(x)-128)=-1thenx=x+3
1120 return
1130 x=x-160:ifsgn(peek(x)-128)=-1thenx=x+160
1140 return
1150 x=x+160:ifsgn(peek(x)-128)=-1thenx=x-160
1160 return
1170 :
1180 x=1880:gosub1870:w=1883
1190 pokex+s,13:pokew+s,7
1200 k=52:fori=1274to1754step120
1210 forj=0to6*3step3
1220 pokei+j,s(k):k=k-1
1230 next:next
1240 poke1883,s(k):k=k-1:pokex,s(k)
1250 mk=0:s(0)=160
1260 :
1270 print"[154][211]tack:"k"[157] "
1275 pokex,peek(x)-128
1280 pokex,peek(x)+128
1290 joy=15-(peek(js)and15):fb=peek(js)and16:getk$
1300 ifjoy=8ork$=""thengosub2170
1310 ifjoy=4ork$="[157]"thengosub2190
1320 ifjoy=1ork$="[145]"thengosub2210
1330 ifjoy=2ork$=""thengosub2230
1340 iffb=0ork$=chr$(13)then1390
1350 ifk$="q"thenrun
1360 pokex,peek(x)-128:fort=1to25:next
1370 goto1280
1380 :
1390 gosub2120
1400 ifx=1883thengosub2030:goto1270
1410 ifpeek(x)=160thengosub2030:goto1270
1420 b=peek(x)
1430 ifx<>1880then1480
1440 poke1883,b
1450 k=k-1:pokex,s(k)
1460 goto1270
1470 :
1480 ifx<>1754andx<>1757andx<>1760andx<>1763andx<>1766andx<>1769andx<>1772then1540
1490 gosub1600:iff1thengosub2030:goto1270
1500 poke1883,b:pokex,160
1502 gosub60200
1510 mk=mk+1:ifmk=35then770
1520 goto1270
1530 :
1540 ifpeek(x+120)<>160thengosub2030:goto1270
1550 gosub1600:iff1thengosub2030:goto1270
1560 poke1883,b:pokex,160:gosub60200
1570 mk=mk+1:ifmk=35then770
1580 goto1270
1590 :
1600 f1=0:z=peek(w)
1610 ifz=193andb=178thenreturn:rem a
1620 ifz=203andb=209thenreturn:rem k
1630 ifz=178andb=193thenreturn:rem 2
1640 ifz=178andb=179thenreturn
1650 ifz=179andb=178thenreturn:rem 3
1660 ifz=179andb=180thenreturn
1670 ifz=180andb=179thenreturn:rem 4
1680 ifz=180andb=181thenreturn
1690 ifz=181andb=180thenreturn:rem 5
1700 ifz=181andb=182thenreturn
1710 ifz=182andb=181thenreturn:rem 6
1720 ifz=182andb=183thenreturn
1730 ifz=183andb=182thenreturn:rem 7
1740 ifz=183andb=184thenreturn
1750 ifz=184andb=183thenreturn:rem 8
1760 ifz=184andb=185thenreturn
1770 ifz=185andb=184thenreturn:rem 9
1780 ifz=185andb=176thenreturn
1790 ifz=176andb=185thenreturn:rem 0
1800 ifz=176andb=202thenreturn
1810 ifz=202andb=176thenreturn:rem j
1820 ifz=202andb=209thenreturn
1830 ifz=209andb=202thenreturn:rem q
1840 ifz=209andb=203thenreturn
1850 f1=1:return
1860 :
1870 print"[147][156] [176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
1880 print" [221][159] [207]ne [198]oundation [211]olitaire [146][156][221]"
1890 print" [173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]"
1900 a$="[154][176][192][174]":b$="[221] [154][146][221]":c$="[173][192][189]"
1910 fori=1to5
1920 printtab(9):forj=1to7:printa$;:next:print
1930 printtab(9):forj=1to7:printb$;:next:print
1940 printtab(9):forj=1to7:printc$;:next:print
1950 next
1960 :
1970 printtab(15):forj=1to2:printa$;:next:print
1980 printtab(15):forj=1to2:printb$;:next:print
1990 printtab(15):forj=1to2:printc$;:next:print
2000 print"[211]tack: 16 [211] [215]"
2005 gosub4030
2010 return
2020 :
2030 print"[156][176][192][192][192][192][192][192][192][192][192][174]"
2040 print"[221] [201]llegal [146][156][221]"
2050 print"[221] [205]ove! [146][156][221]"
2060 print"[173][192][192][192][192][192][192][192][192][192][189]"
2070 fort=1to1000:next
2080 print" "
2090 fori=1to3:print" ":next
2100 return
2110 :
2120 pokes+24,15:pokes+5,9
2130 pokes+4,17:pokes+1,25:pokes,177
2140 fort=1to100:next
2150 pokes+4,16:return
2160 :
2170 x=x+3:ifpeek(x)=32thenx=x-3
2180 return
2190 x=x-3:ifpeek(x)=32thenx=x+3
2200 return
2210 x=x-120:ifpeek(x)<128thenx=x+120
2220 return
2230 x=x+120:ifpeek(x)=32thenx=x-120
2240 return
2250 :
2260 print"[147]"
2270 printtab(9)"[156][176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
2280 printtab(9)"[221] [146][156][221]"
2290 printtab(9)"[221] [211]olitaire [146][156][221]"
2300 printtab(9)"[221] [146][156][221]"
2310 printtab(9)"[171][192][192][192][192][192][192][1