RubicCube

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

Play with a virtual Rubic’s cube.

Content

Appears On

Library tape of the Indiana Sinclair Timex User’s Group.

Related Products

Related Articles

Related Content

Image Gallery

RubicCube

Source Code

   10 GO TO 30
   20 LOAD "rubiccubeC"CODE USR "a"
   30 BORDER 6: PAPER 0: INK 9: BRIGHT 1
   40 CLS 
   50 PRINT AT 16,2; INK 6;"  *** ACME GLASS CUBE ***"
   60 PRINT INK 5;"** GENUINE SIMULATED PLASTIC **"
   70 PRINT INK 4;"     *** DO NOT DROP! ***"
   80 GO SUB 350
   90 GO SUB 710
  100 GO SUB 1570
  110 INK 9: PAPER 1
  120 PRINT AT 16,0;"   Press Colour Key To Select   "
  130 PRINT "  Face- Then Press Key T Or R   "
  140 PRINT " To Turn Clockwise Or Otherwise "
  150 FLASH 0: PAPER 0
  160 GO TO 920
  170 GO TO 350
  180 PRINT AT 16,0; PAPER 6;" Press f For A Fresh Cube"," Press u To Unscramble This One  Press t To Store It On Tape",
  190 PRINT ,,
  200 GO SUB 1280
  210 IF k$="f" THEN RUN 
  220 IF k$="u" THEN GO SUB 250: GO SUB 1860: GO TO 100
  230 IF k$="t" THEN GO TO 280
  240 BEEP .5,-40: GO TO 200
  250 PRINT AT 16,0,,"    Hold Down H To Halt Action   "
  260 PRINT "   Or Hold R To Regain Control  ",,
  270 RETURN 
  280 INPUT "Name Of Cube?";n$
  290 IF n$="" THEN LET n$="no name"
  300 DIM g$(LEN m$): LET g$()=m$
  310 SAVE n$ DATA g$(): SAVE "array" DATA a$()
  320 DIM g$(1)
  330 IF k<>0 THEN LET k$=STR$ (VAL m$(1)+1): GO SUB 1400: GO TO 920
  340 GO TO 100
  350 DIM a$(6,14)
  360 FOR e=SGN PI TO 9
  370 FOR c=SGN PI TO 6
  380 LET a$(c,e)=STR$ (c+1)
  390 NEXT c
  400 NEXT e
  410 FOR f=SGN PI TO 6: FOR e=10 TO 14
  420 READ aa: LET a$(f,e)=STR$ aa
  430 NEXT e: NEXT f
  440 DATA 2,3,4,5,6,3,1,5,6,4,1,2,6,4,5,6,5,1,3,2,4,6,2,1,6,5,4,3,2,1
  450 DIM u(54,2)
  460 FOR e=SGN PI TO 54
  470 FOR f=SGN PI TO 2
  480 READ u(e,f)
  490 BEEP .008,e
  500 NEXT f: NEXT e
  510 DATA 7,8,6,10,5,12,7,12,9,12,10,10,11,8,9,8,8,10
  520 DATA 1,7,2,9,3,11,4,9,5,7,4,5,3,3,2,5,3,7
  530 DATA 7,18,5,18,3,18,2,20,1,22,3,22,5,22,6,20,4,20
  540 DATA 7,23,8,25,9,27,10,25,11,23,10,21,9,19,8,21,9,23
  550 DATA 11,6,10,4,9,2,7,2,5,2,6,4,7,6,9,6,8,4
  560 DATA 3,28,5,28,7,28,6,26,5,24,3,24,1,24,2,26,4,26
  570 REM *** cubie shape arrays ***
  580 DIM b$(6,4)
  590 LET b$(1)="\a\b\c\d"
  600 LET b$(2)="\i\j\k\l"
  610 LET b$(PI)=b$(1)
  620 LET b$(4)=b$(2)
  630 LET b$(5)="\e\f\g\h"
  640 LET b$(6)=b$(5)
  650 DIM d$(8): DIM c$(4,PI): DIM d(4,PI)
  660 FOR s=SGN PI TO 4: FOR t=SGN PI TO PI: READ d(s,t)
  670 NEXT t: NEXT s
  680 DATA 5,4,3,3,2,1,7,6,5,1,8,7
  690 LET k=0: LET m$="": LET hide=k
  700 RETURN 
  710 FOR f=SGN PI TO 6
  720 FOR e=SGN PI TO 9
  730 LET z=e+9*f-9: INK VAL a$(f,e)
  740 PRINT AT u(z,1),u(Z,2);b$(f, TO 2): PRINT AT u(z,1)+1,u(z,2);b$(f,PI TO 4)
  750 BEEP .006,f*e
  760 NEXT e
  770 NEXT f
  780 INK 9
  790 RETURN 
  800 FOR e=o TO p STEP y
  810 LET f=VAL a$(k,e+9)
  820 FOR c=m TO n STEP y
  830 LET z=f*9-9+d(e,c): INK VAL a$(f,d(e,c))
  840 PRINT AT u(z,1),u(Z,2);b$(f, TO 2): PRINT AT u(z,1)+1,u(z,2);b$(f,PI TO 4): BEEP .004,z
  850 NEXT c: NEXT e
  860 FOR p=v TO w STEP y
  870 LET z=k*9-9+p: LET f=k: INK VAL a$(k,p)
  880 PRINT AT u(z,1),u(Z,2);b$(f, TO 2): PRINT AT u(z,1)+1,u(z,2);b$(f,PI TO 4): BEEP .004,z
  890 NEXT p
  900 INK 9
  910 RETURN 
  920 GO SUB 1280
  930 IF k$="q" THEN GO TO 180
  940 IF k$="t" AND k<>0 THEN GO SUB 1150: GO TO 920
  950 IF k$="r" AND k<>0 THEN GO SUB 1020: GO TO 920
  960 IF k$<"2" OR k$>"7" THEN BEEP .5,-40: GO TO 920
  970 GO SUB 1400
  980 IF k<>0 THEN GO SUB 1500
  990 LET k=VAL k$-1
 1000 GO SUB 1500
 1010 GO TO 920
 1020 GO SUB 1810
 1030 GO SUB 1330
 1040 LET a$(k, TO 6)=d$(PI TO 8)
 1050 LET a$(k,7 TO 8)=d$( TO 2)
 1060 FOR s=SGN PI TO 4
 1070 LET g=VAL a$(k,s+9): LET x=s+1: IF x=5 THEN LET x=1
 1080 FOR t=SGN PI TO PI
 1090 LET a$(g,d(s,t))=c$(x,t)
 1100 NEXT t: NEXT s
 1110 IF hide=1 THEN RETURN 
 1120 LET v=8: LET w=1: LET o=4: LET p=w: LET m=3: LET n=w: LET y=-w
 1130 GO SUB 800
 1140 RETURN 
 1150 GO SUB 1810
 1160 GO SUB 1330
 1170 LET a$(k,1 TO 2)=d$(7 TO 8)
 1180 LET a$(k,PI TO 8)=d$(1 TO 6)
 1190 FOR s=SGN PI TO 4: FOR t=SGN PI TO 3
 1200 LET g=VAL a$(k,s+9): LET x=s-1: IF x=0 THEN LET x=4
 1210 FOR t=SGN PI TO 3
 1220 LET a$(g,d(s,t))=c$(x,t)
 1230 NEXT t: NEXT s
 1240 IF hide=1 THEN RETURN 
 1250 LET v=1: LET w=8: LET o=v: LET p=4: LET m=v: LET n=3: LET y=v
 1260 GO SUB 800
 1270 RETURN 
 1280 IF INKEY$<>"" THEN GO TO 1280
 1290 IF INKEY$="" THEN GO TO 1290
 1300 LET k$=INKEY$
 1310 BEEP .05,40
 1320 RETURN 
 1330 LET d$=a$(k, TO 8)
 1340 FOR s=SGN PI TO 4
 1350 LET g=VAL a$(k,s+9)
 1360 FOR t=SGN PI TO 3
 1370 LET c$(s,t)=a$(g,d(s,t))
 1380 NEXT t: NEXT s
 1390 RETURN 
 1400 PRINT AT 14,0,,,,,,,,
 1410 PAPER VAL k$
 1420 PRINT "Colour Of Central Cubie Selects "
 1430 PRINT "Face For Rotation, R Or T Rotate"
 1440 PRINT "     Press Q For New Cube       "
 1450 PRINT AT 12,14;"FACE": PRINT AT 14,15; PAPER 0; INK VAL k$;b$(VAL k$-1,1 TO 2);TAB 15;b$(VAL k$-1,3 TO 4)
 1460 INK 8: PAPER 8: OVER 1
 1470 PRINT AT 14,15;"\m\n";TAB 15;"\o\p"
 1480 OVER 0: INK 9: PAPER 0
 1490 RETURN 
 1500 IF k=0 THEN RETURN 
 1510 LET qb=u(k*9,1): LET qb1=u(k*9,2)
 1520 INK 8: PAPER 8: OVER 1
 1530 PRINT AT qb,qb1;"\m\n"
 1540 PRINT AT qb+1,qb1;"\o\p"
 1550 INK 9: OVER 0: PAPER 0
 1560 RETURN 
 1570 PRINT AT 16,0; PAPER 2;" Press c To Play With This Cube  Press s To Scramble It First    Press t To Load One From Tape  "
 1580 GO SUB 1980: GO SUB 1500: LET k=0
 1590 GO SUB 1280
 1600 IF k$="c" THEN RETURN 
 1610 IF k$="s" THEN GO TO 1640
 1620 IF k$="t" THEN GO TO 1740
 1630 BEEP .5,-40: GO TO 1590
 1640 LET hide=1
 1650 FOR e=SGN PI TO 7
 1660 LET k=INT (RND*6)+1
 1670 LET k$="r"
 1680 IF RND>.5 THEN LET k$="t"
 1690 IF k$="r" THEN GO SUB 1020
 1700 IF k$="t" THEN GO SUB 1150
 1710 BEEP .05,e*5
 1720 NEXT e
 1730 GO SUB 710: LET k=0: LET hide=k: RETURN 
 1740 INPUT "Name Of Cube?";n$
 1750 PRINT AT 20,0;"        Start The Tape          "
 1760 LOAD n$ DATA g$(): LOAD "array" DATA a$()
 1770 LET m$=g$()
 1780 DIM g$(1)
 1790 CLS : GO SUB 710
 1800 RETURN 
 1810 IF m$="" THEN GO TO 1830
 1820 IF k=VAL m$(1) AND k$<>m$(2) THEN LET m$=m$(3 TO ): RETURN 
 1830 LET m$=k$+m$
 1840 LET m$=STR$ k+m$
 1850 RETURN 
 1860 IF m$="" THEN RUN 
 1870 GO SUB 1500
 1880 LET k=VAL m$(1)
 1890 LET k$=STR$ (k+1): LET t$=m$(2)
 1900 LET m$=m$(PI TO )
 1910 GO SUB 1450: GO SUB 1500
 1920 IF t$="t" THEN GO SUB 1030
 1930 IF t$="r" THEN GO SUB 1160
 1940 IF INKEY$="h" THEN GO TO 1940
 1950 IF INKEY$="r" THEN RETURN 
 1960 IF m$<>"" THEN GO TO 1870
 1970 GO SUB 1500: LET k=0
 1980 PRINT AT 12,14; PAPER 0;"    ": PRINT AT 14,15;"  ";TAB 15;"  "
 1990 RETURN 
 2000 SAVE "RubicCube" LINE 20
 2010 SAVE "rubiccubeC"CODE USR "a",168

People

No people associated with this content.

Scroll to Top