Solitaire

Date: 198x
Type: Program
Platform(s): TS 2068

Traditional card game.

Appears on

Gallery

Source Code

   40 GO TO 1400
   41 LET G=0: LET NU=1: LET X$="": LET S2=1: DIM V$(32)
   42 LET W1=0: LET L1=0
   45 LET Q$=""
   46 LET X=1: LET T=0
   47 LET H$=""
   48 DIM Q(4)
   50 RESTORE 160: CLS : PRINT TAB 8; INVERSE 1;"                        "
   60 PRINT TAB 8; INVERSE 1;" I'M SHUFFLING THE PACK "
   70 PRINT TAB 8; INVERSE 1;"                        "
   80 LET L=0: DIM t(7): DIM b(7): DIM f$(12,2): DIM p$(52,2): DIM s$(4): DIM n$(13): DIM a$(7,20,2): FOR n=1 TO 7: LET t(n)=n: LET b(n)=n: NEXT n: LET l=1
   90 DIM f(4): DIM p(4): RANDOMIZE : LET p=0
  100 DIM e$(26)
  110 LET d$=""
  150 FOR I=1 TO 4: READ S$(I): NEXT I: FOR I=1 TO 13: READ N$(I): NEXT I
  160 DATA "\b","\d","\a","\c","A","2","3","4","5","6","7","8","9","T","J","Q","K"
  170 LET C$="A\cA\bA\aA\d2\c2\b2\a2\d3\c3\b3\a3\d4\c4\b4\a4\d5\c5\b5\a5\d6\c6\b6\a6\d7\c7\b7\a7\d8\c8\b8\a8\d"
  180 LET C$=C$+"9\c9\b9\a9\dT\cT\bT\aT\dJ\cJ\bJ\aJ\dQ\cQ\bQ\aQ\dK\cK\bK\aK\d": LET C=52
  190 FOR I=1 TO 52: LET A=INT (RND*C)+1: LET P$(I)=C$(2*A-1 TO 2*A): LET L$=C$(1 TO 2*(A-1)): LET R$=C$(2*A+1 TO LEN C$): LET C$=L$+R$: LET C=C-1: NEXT I
  220 CLS : FOR I=1 TO 7: FOR J=1 TO I: PRINT AT J,(I-1)*3;
  260 IF J=B(I) THEN PRINT P$(L): LET A$(I,J)=P$(L): LET L=L+1: NEXT J: NEXT I: GO TO 280
  270 LET A$(I,J)=P$(L): PRINT INVERSE 1;"  ": LET L=L+1: NEXT J: NEXT I
  280 FOR I=29 TO 52: LET D$=D$+P$(I): NEXT I
  290 PRINT AT 0,20;"\e\i\i\i\i\i\i\i\i\i\i\f": FOR F=1 TO 13: PRINT AT F,20;"\j          \k": NEXT F
  300 PRINT TAB 20;"\g\i\i\i\i\i\i\i\i\i\i\h"
  310 INVERSE 1: FOR I=0 TO 18 STEP 3: PRINT AT 0,I;" ";STR$ (1+I/3): NEXT I: INVERSE 0
  330 IF D$<>"" THEN GO TO 360
  340 FOR I=1 TO 7: IF B(I)>1 THEN LET I=8: NEXT I: GO TO 360
  350 NEXT I: GO TO 1720
  360 LET PI=0: LET X=0: LET Y=0: LET T=0: LET TT=0: PRINT AT 19,0;TAB 24;AT 19,0;"FROM ";
  380 LET Z$=INKEY$: IF Z$="" THEN GO TO 380
  390 IF Z$="D" THEN GO TO 1270
  400 IF Z$="E" THEN GO TO 1110
  410 IF Z$="P" THEN LET PI=1: GO TO 480
  430 IF Z$>"7" OR Z$<"1" THEN GO TO 460
  440 LET T=VAL Z$: LET X=T: LET Y=B(X)
  450 IF Y=0 THEN GO TO 330
  460 IF T=0 THEN GO TO 380
  480 PRINT Z$;" TO ";
  490 LET B$=INKEY$: IF B$="" THEN GO TO 490
  491 IF B$="F" THEN GO TO 500
  492 IF B$<"1" OR B$>"9" THEN GO TO 490
  500 IF B$="F" AND X=0 THEN GO TO 360
  505 IF B$="F" THEN LET TT=8: GO TO 520
  510 LET TT=VAL B$
  520 IF TT=0 THEN GO TO 490
  530 IF TT=T THEN GO TO 490
  540 PRINT B$;
  550 IF TT=8 THEN LET Y=T(X)
  560 IF PI=1 THEN LET X$=H$: GO TO 580
  570 LET X$=A$(X,Y)
  580 GO SUB 970
  590 IF TT=8 THEN GO TO 830
  600 IF T(TT)=0 AND NU<>13 THEN GO TO 330
  610 IF T(TT)=0 THEN LET B(TT)=1: GO TO 670
  620 LET S1=SU: LET N1=NU
  630 LET X$=A$(TT,T(TT))
  640 GO SUB 970
  650 IF NU-1<>N1 OR 1-SU<>S1 THEN GO TO 950
  670 GO SUB 1040: LET F=1
  680 IF PI=1 THEN LET F=2: LET F$(1)=H$: GO SUB 1380: LET P=P-1: GO TO 740
  690 FOR I=B(X) TO T(X): LET F$(F)=A$(X,I): LET A$(X,I)="   ": LET F=F+1
  700 PRINT "  "; OVER 1;V$( TO 30);: NEXT I: LET XX=X: LET YY=Y
  710 LET B(X)=B(X)-1: LET T(X)=B(X)
  720 IF B(X)>0 THEN LET G=1
  730 IF T(TT)=0 THEN LET X=TT: LET Y=0: GO SUB 1040: GO TO 750
  740 LET X=TT: LET Y=T(TT): GO SUB 1040
  750 PRINT OVER 1;V$;: FOR I=1 TO F-1: PRINT F$(I); OVER 1;V$( TO 30);: LET A$(X,T(X)+1)=F$(I)
  760 IF F$(I)<>" " THEN LET T(X)=T(X)+1
  770 NEXT I
  780 FOR I=1 TO 12: LET F$(I)=" ": NEXT I: LET F=1
  790 IF G=1 THEN LET G=0: LET X=XX: LET Y=YY-1: GO SUB 1040: PRINT A$(X,Y)
  800 IF PI=1 THEN GO TO 1310
  810 GO TO 330
  830 IF F(S2)<>NU-1 THEN GO TO 330
  840 LET Q(S2)=Q(S2)+1: LET F(S2)=NU
  850 PRINT AT F(S2),S2*3+18;
  860 IF Y=1 THEN GO TO 880
  870 IF A$(X,Y-1)<>"  " THEN LET G=1
  880 PRINT X$
  890 IF PI=1 THEN GO SUB 1380: LET P=P-1: GO TO 1310
  900 GO SUB 1040: PRINT "  ";: LET A$(X,Y)="  ": IF Y>1 THEN LET T(X)=T(X)-1
  910 IF T(X)=B(X)-1 THEN LET B(X)=B(X)-1
  920 IF G=1 THEN LET G=0: PRINT AT (24-PEEK 23689)-1,33-PEEK 23688-2;A$(X,Y-1)
  930 GO TO 330
  950 IF 1-SU<>S1 THEN PRINT AT 19,0;TAB 24;AT 19,0;"WRONG COLOR ";: FOR I=1 TO 200: NEXT I: GO TO 330
  960 PRINT AT 19,0;TAB 24;AT 19,0;"WRONG VALUES";: FOR I=1 TO 200: NEXT I: GO TO 330
  980 RESTORE 160: FOR I=1 TO 4: READ W$: IF X$(LEN X$)=W$ THEN LET SU=I-INT (I/2)*2: LET S2=I
  990 NEXT I
 1000 FOR I=1 TO 13: READ W$: IF X$(1)=W$ THEN LET NU=I: LET I=14
 1010 NEXT I
 1020 RETURN 
 1040 LET X1=X: LET Y1=Y: PRINT AT 0,0;
 1050 LET X1=X1*3-3: IF X1=0 THEN GO TO 1070
 1060 GO TO 1080
 1070 IF Y1=0 THEN RETURN 
 1080 PRINT AT Y1,X1;: RETURN 
 1110 FOR I=1 TO 4: IF Q(I)<>13 THEN GO TO 1160
 1120 NEXT I: PRINT AT 6,0; FLASH 1;"YOU'VE WON!!"
 1121 LET W1=W1+1
 1130 FOR I=1 TO 1000: NEXT I
 1140 GO TO 1190
 1160 PRINT AT 6,0; FLASH 1;"SORRY,YOU'VE LOST"
 1161 LET L1=L1+1
 1170 FOR I=1 TO 300: NEXT I
 1190 CLS : PRINT "__________": PRINT INVERSE 1;" SCORES   ": PRINT : PRINT "WINS:";W1: PRINT : PRINT "LOSSES:";L1
 1210 PRINT : PRINT "PLAY AGAIN?(Y/N)"
 1220 LET Z$=INKEY$: IF Z$="" THEN GO TO 1220
 1230 IF Z$="Y" THEN GO TO 41
 1240 IF Z$<>"N" THEN GO TO 1220
 1250 PRINT "GOODBYE!!!": STOP 
 1270 LET P=P+3
 1280 IF D$<>"" THEN GO TO 1310
 1290 FOR I=1 TO 7: IF B(I)>1 THEN LET I=8: NEXT I: GO TO 330
 1300 NEXT I: GO TO 1720
 1310 IF P=0 THEN LET H$="  ": GO TO 1360
 1320 IF LEN D$/2=P-1 THEN LET P=LEN D$/2: GO TO 1350
 1330 IF LEN D$/2=P-2 THEN LET P=LEN D$/2: GO TO 1350
 1340 IF P>LEN D$/2 THEN LET P=0: GO TO 1270
 1350 LET H$=D$(2*P-1 TO (2*P-1)+1)
 1360 PRINT AT 21,0;H$: GO TO 330
 1380 LET L$=D$( TO (P-1)*2): LET R$=D$(2*P+1 TO LEN D$): LET D$=L$+R$: RETURN 
 1399 STOP 
 1400 BORDER 0: PAPER 0: INK 7: CLS 
 1401 GO SUB 9000
 1410 PRINT "_______________________________"
 1420 PRINT INVERSE 1;"                               "
 1430 PRINT "   FROM 1-7 CARDS ARE DEALT TO  SEVEN COLUMNS,THE LAST CARD ONLY"  
 1440 PRINT "OF EACH COLUMN BEING FACE UPWAR-DS."
 1450 PRINT "  EXPOSED CARDS ARE MOVED IN"
 1460 PRINT "ASCENDING SUIT SEQUENCE TO ACES AS THESE APPEAR,AND IN DESCENDI-NG";
 1470 PRINT " SEQUENCE OF ALTERNATE COLORS TO THE BOTTOM CARDS OF COLUMNS."
 1480 PRINT " COMPLETE SEQUENCES OF CARDS MAYBE MOVED BETWEEN COLUMNS."
 1490 PRINT "EMPTY COLUMNS MAY BE FILLED ONLYBY SEQUENCES HEADED BY KINGS."
 1500 PRINT "   THE REST OF THE PACK IS DEALT3 CARDS AT A TIME TO A WASTE"
 1510 PRINT "PILE,THE TOP CARD OF WHICH IS   ALWAYS AVAILABLE.ANY NUMBER OF  REDEALS ARE ALLOWED."
 1520 PRINT "PRESS 'ENTER' TO CONTINUE."
 1530 INPUT LINE I$: CLS 
 1540 PRINT "  CARDS ARE MOVED BY SIMPLY     TYPING THE ORIGINAL COLUMN NUMB-ER,OR P FOR WASTE PILE,FOLLOWED BY THE DESTINATION COLUMN."
 1550 PRINT "NUMBER OR 'F' FOR FOUNDATION."
 1560 PRINT : PRINT " D DEALS A FRESH GROUP OF THREE CARDS,E ENDS THE GAME."
 1570 PRINT : PRINT "PLEASE  PRESS 'ENTER'."
 1580 INPUT LINE A$: POKE 23658,8
 1590 DIM F(4)
 1600 FOR F=1 TO 4: LET F(F)=13: NEXT F
 1610 GO TO 41
 1720 FOR Q=1 TO 7: IF T(Q)<>0 THEN LET Q=8: NEXT Q: GO TO 1740
 1730 NEXT Q: GO TO 1110
 1740 FOR Q=1 TO 7: LET X=Q: LET Y=T(Q): LET X$=A$(X,Y): GO SUB 970
 1750 IF F(S2)<>NU-1 THEN NEXT Q: GO TO 1720
 1760 LET Q(S2)=Q(S2)+1: LET F(S2)=NU: PRINT AT 0,20;
 1770 PRINT AT F(S2),S2*3;
 1780 PRINT X$
 1790 GO SUB 1040: PRINT "  ";: LET A$(X,Y)="  ": IF Y>0 THEN LET P(X)=T(X)-1
 1800 IF T(X)=B(X) THEN LET B(X)=B(X)-1
 1810 NEXT I: RETURN 
 8999 STOP 
 9000 RESTORE 9020: FOR I=0 TO 7
 9010 READ A,B,C,D: POKE USR "A"+I,A: POKE USR "B"+I,B: POKE USR "C"+I,C: POKE USR "D"+I,D: NEXT I
 9020 DATA 0,BIN 1000100,16,16,16,BIN 11101110,BIN 111000,BIN 111000
 9030 DATA BIN 00111000,254,BIN 1111100,BIN 1010100
 9040 DATA BIN 01111100,254,BIN 11111110,BIN 11111110,BIN 11111110,BIN 1111100,BIN 10010010,BIN 01010100,BIN 01111100,BIN 111000,16,16
 9050 DATA BIN 00111000,16,16,16,16,0,BIN 111000,16
 9060 FOR F=0 TO 7: READ A,B,C,D: POKE USR "E"+F,A: POKE USR "F"+F,B: POKE USR "G"+F,C: POKE USR "H"+F,D: NEXT F
 9070 DATA 0,0,16,8,0,0,16,8,0,0,16,8,0,0,8,16,7,224,7,224,8,16,0,0,16,8,0,0,16,8,0,0
 9080 FOR F=0 TO 7: POKE USR "I"+F,0: NEXT F: POKE USR "I"+4,255
 9090 FOR F=0 TO 7: POKE USR "J"+F,16: POKE USR "K"+F,8: NEXT F
 9100 RETURN 

People

No people associated with this content.

Scroll to Top