Type: Program
Platform(s): TS 2068
Bring the sheep home.
Content
Source Code
10 PAPER 7: INK 0: FLASH 0: BRIGHT 0: OVER 0: INVERSE 0: BORDER 0: CLS
20 PRINT INVERSE 1;AT 2,13;"SHEEP";AT 4,14;"DOG";AT 6,13;"TRIALS"
30 FOR a=0 TO 31
40 READ b: POKE USR "a"+a,b
50 NEXT a
60 DATA 0,0,127,255,91,17,17,0,0,0,65,254,63,33,33,0,8,28,28,62,62,127,8,28,0,129,255,129,255,129,255,129
65 GO SUB 7000
70 PRINT ''" IN THIS GAME YOU MUST MAKE"
80 PRINT " YOUR SHEEPDOG \b GUIDE THREE"
90 PRINT " SHEEP \a THROUGH A SERIES OF"
100 PRINT " OBSTACLES."
110 PRINT ''"CONTROLS ARE: -"
120 PRINT TAB 12;"T Y U"
130 PRINT 'TAB 12;"G H"
140 PRINT 'TAB 12;"V B N"
150 FOR a=0 TO 2*PI STEP PI/4
160 PLOT 123,28: DRAW 12*COS a,9*SIN a
170 NEXT a
180 PRINT ''"THERE ARE FOUR STAGES TO THE "
190 PRINT "TEST. POINTS ARE LOST FOR TAKING"
200 PRINT "TOO LONG OVER A STAGE.THE SHEEP"
210 PRINT "WILL ONLY MOVE WHEN THE DOG GETS"
215 PRINT "CLOSE TO THEM": PRINT
216 PRINT "IN THE FIRST THREE STAGES YOU MUST CHASE THE SHEEP INTO THE SPACE AT THE BASE OF THE SCREEN."
217 PRINT "EACH SHEEP BECOMES INACTIVE WHENIN ITS PEN": PRINT
218 PRINT "IN STAGE TWO THE BLUE AREAS ARE PONDS WHICH THE SHEEP WILL NOT CROSS,BUT IF THERE ARE GAPS IN THE FENCING BETWEEN THE PONDS, THE SHEEP WILL GO THROUGH THEM.": PRINT
220 PRINT "IN STAGE FOUR ALL THE SHEEP WILLREMAIN ACTIVE UNTIL THE THIRD ONE IS PENNED."
225 DIM x(3): DIM y(3): LET p=0
230 PRINT ''"Press any key to start"
240 PAUSE 0
250 PAPER 4: CLS
260 PRINT ''TAB 8;"\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d"
270 PRINT TAB 8;"\d ooooo \d"
280 FOR a=4 TO 12: PRINT AT a,8;"\d";TAB 23;"\d": NEXT a
290 PLOT 73,110
300 FOR a=1 TO 12
310 DRAW 9,0,-PI+RND-.5
320 NEXT a
330 PRINT AT 7,12;"\c\c \c\c";AT 8,12;"\c\c \c\c"
340 PRINT AT 5,19;"/\"
360 PRINT AT 11,10;"#### ^"
370 PRINT AT 13,8;"\d\d\d\d\d\d\d \d\d\d\d\d\d"
380 PLOT 117,62: DRAW 27,0,1.5*PI
390 GO SUB 9000
400 PRINT AT 18,0;"STAGE SCORE:";ss;" "
410 GO SUB 8000
420 FOR a=1 TO n
430 IF y(a)<=13 THEN GO TO 480
440 LET y(a)=y(n): LET x(a)=x(n): LET n=n-1
450 BEEP .3,0
460 NEXT a
490 IF n>0 THEN GO TO 400
495 FOR a=1 TO 200: NEXT a
500 POKE 23692,255
510 FOR a=1 TO 25: PRINT : NEXT a
520 PRINT ''TAB 6;"STAGE ONE COMPLETED"
530 PRINT ''TAB 11;"SCORE:";ss'''''''''''
540 LET p=ss
545 GO SUB 7000
550 PRINT '" Press any key for stage two"'''
560 IF INKEY$="" THEN GO TO 560
570 CLS
590 PLOT 71,60: DRAW 0,100,-PI: DRAW 115,0: DRAW 0,-100,-PI
600 PLOT 70,60: DRAW 0,100,-PI: DRAW 115,0: DRAW 0,-100,-PI
610 DRAW -33,0: DRAW -20,-40: DRAW -15,0: DRAW -20,40: DRAW -32,0
620 DRAW 0,70
625 INK 1
630 FOR x=80 TO 200 STEP 24
640 FOR a=0 TO 7
650 LET b=INT (SQR (49-a*a)+.5)
660 PLOT x+a,100-b: DRAW 0,2*b
670 PLOT x-a,100-b: DRAW 0,2*b
680 NEXT a
690 NEXT x
700 INK 0
710 FOR a=11 TO 23 STEP 3
720 IF RND<.7 THEN PRINT AT 9,a;"\d"
730 NEXT a
740 GO SUB 9000
745 PRINT AT 20,0;"RUNNING SCORE: ";p'"STAGE SCORE: ";
748 PRINT AT 21,13;ss;" ";
750 GO SUB 8000
760 FOR a=1 TO n
770 IF y(a)<15 THEN GO TO 790
780 LET x(a)=x(n): LET y(a)=y(n): LET n=n-1
785 BEEP .3,0
790 NEXT a
800 IF n>0 THEN GO TO 748
803 GO SUB 7000
805 FOR a=1 TO 200: NEXT a
810 POKE 23692,255
820 FOR a=1 TO 25: PRINT : NEXT a
830 PRINT TAB 6;"STAGE TWO COMPLETED"
840 PRINT ''"SCORE SO FAR: ";ss+p
850 LET p=p+ss
860 PRINT ''"Press any key for stage three"
870 PRINT ''''''''''
880 IF INKEY$="" THEN GO TO 880
900 CLS
910 PRINT ''TAB 6;"\c\c\c\c\c\c\c\c\c\c\c\c\c\c\c\c\c\c\c"
920 PRINT TAB 6;"\c\c\c\c\c\c\c\c\c \c\c\c"
930 PRINT TAB 6;"\c\c \c\c\c"
940 PRINT TAB 6;"\c \c\c\c \c"
950 PRINT TAB 6;"\c\c \c\c\c\c\c \c\c"
960 PRINT TAB 6;"\c\c\c\c \c\c\c\c\c \c\c"
970 PRINT TAB 6;"\c\c\c\c\c\c\c\c\c\c\c\c\c\c \d"
980 PRINT TAB 6;"\c \c\c\c\c\c\c \d"
990 PRINT TAB 6;"\c \c\c\c \d\d\d"
1000 PRINT TAB 6;"\c\c\c ^^ \d\d"
1010 PRINT TAB 6;"\c\c\c\c ^^ \c\c\c\c\d\d"
1020 PRINT TAB 6;"\c\c\c\c\c \c\c\c\c\c\c\c\d"
1030 PRINT TAB 6;"\c\c\c\c \c\c\c\c\c\c"
1040 PRINT TAB 6;"\c\c\c\c \c\c\c\c\c\c"
1050 PRINT ''"RUNNING SCORE: ";p
1060 PRINT "STAGE SCORE: "
1070 GO SUB 9000
1080 PRINT AT 19,13;ss;" "
1090 GO SUB 8000
1100 FOR a=1 TO n
1110 IF y(a)<15 THEN GO TO 1130
1120 LET y(a)=y(n): LET x(a)=x(n): LET n=n-1
1125 BEEP .3,0
1130 NEXT a
1140 IF n>0 THEN GO TO 1080
1150 GO SUB 7000
1160 FOR a=1 TO 200: NEXT a
1170 CLS
1180 PRINT '''TAB 5;"STAGE THREE COMPLETED"
1190 PRINT ''"SCORE: ";ss+p
1200 LET p=p+ss
1210 PRINT '''"NOW YOU HAVE TO GET THE"
1220 PRINT "SHEEP INTO THEIR PEN"
1230 PRINT ''''"Press any key"
1240 PAUSE 0
1250 CLS
1260 PRINT ''" \c\d\d\d\c\d\d\d\c\d\d\d\c\d\d\d\c\d\d\d\c\d\d\d\c\d\d\d\c"
1270 FOR a=3 TO 16
1280 IF a-3*INT (a/3)=2 THEN PRINT AT a,2;"\c";TAB 30;"\c": GO TO 1300
1290 PRINT AT a,2;"\d";TAB 30;"\d"
1300 NEXT a
1310 PRINT " \c\d\d\d\c\d\d\d\c\d\d\d\c\d\d\d\c\d\d\d\c\d\d\d\c\d\d\d\c"
1320 FOR a=1 TO 20
1330 LET x=RND*25+4: LET y=RND*12+4
1340 PRINT AT y,x;CHR$ (146+RND)
1350 NEXT a
1360 GO SUB 9000
1370 PRINT AT 19,0;"RUNNING SCORE: ";p'"STAGE SCORE:"
1390 PRINT AT 10,13;" ";AT 11,13;" ";AT 12,13;" "
1400 PLOT 104,73: DRAW 0,23: DRAW 31,0: DRAW 0,-23
1405 PRINT AT 20,13;ss;" "
1410 GO SUB 8000
1420 LET ct=0
1430 FOR a=1 TO 3
1440 IF x(a)>12 THEN IF x(a)<17 THEN IF y(a)>9 THEN IF y(a)<13 THEN LET ct=ct+1
1450 NEXT a
1460 IF ct<>3 THEN GO TO 1405
1470 FOR a=1 TO 5
1480 FOR b=7 TO 0 STEP -1
1485 BORDER b
1490 PAUSE 10
1500 NEXT b
1510 NEXT a
1520 POKE 23692,255
1530 FOR a=1 TO 25: PRINT : NEXT a
1535 CLS
1540 PRINT AT 10,10;"YOU HAVE NOW COMPLEATED THE TRIAL"
1550 PRINT ''" YOUR DOG SCORED ": FLASH 1: PRINT AT 15,14;ss+p: FLASH 0: PRINT TAB 8;" POINTS OUT OF"
1560 PRINT TAB 9;"A POSSIBLE 80."
1561 GO SUB 7000
1570 PRINT ''"Do you wish to play again? Y/N"
1580 IF INKEY$="y" OR INKEY$="Y" THEN RUN
1590 IF INKEY$="n" OR INKEY$="N" THEN GO TO 9990
1600 GO TO 1580
7000 FOR a=10 TO 25: BEEP .06,a: NEXT a
7010 FOR a=10 TO 25: BEEP .06,a: NEXT a
7015 FOR a=1 TO 20: NEXT a
7020 FOR a=25 TO 10 STEP -1: BEEP .06,a: NEXT a
7030 RETURN
8000 LET nm=nm+1
8010 LET a=20-INT ((nm-50)/40)
8020 IF a>20 THEN GO TO 8040
8030 LET ss=a: IF ss<0 THEN LET ss=0
8040 LET a$=INKEY$
8050 LET px=x+(a$="u" OR |(1,1)=9 OR a$="h" OR |(1,1)=8 OR a$="n" OR |(1,1)=10)-(a$="t" OR |(1,1)=5 OR a$="g" OR |(1,1)=4 OR a$="v" OR |(1,1)=6)
8060 LET py=y-(a$="t" OR |(1,1)=5 OR a$="y" OR |(1,1)=1 OR a$="u" OR |(1,1)=9)+(a$="v" OR |(1,1)=6 OR a$="b" OR |(1,1)=2 OR a$="n" OR |(1,1)=10)
8070 IF SCREEN$ (py,px)=" " THEN GO TO 8120
8080 IF SCREEN$ (py,x)=" " THEN LET px=x: GO TO 8120
8090 IF SCREEN$ (y,px)=" " THEN LET py=y: GO TO 8120
8100 LET px=x: LET py=y
8120 PRINT AT y,x;" ";AT py,px;"\b"
8130 LET x=px: LET y=py
8140 FOR a=1 TO n
8150 LET dx=x(a)-x: LET dy=y(a)-y: LET d=dx*dx+dy*dy
8160 IF d>9 THEN GO TO 8230
8165 IF d=9 AND n<3 THEN GO TO 8230
8170 LET px=x(a)+SGN dx: LET py=y(a)+SGN dy
8180 IF SCREEN$ (py,px)=" " THEN GO TO 8220
8190 IF SCREEN$ (py,x(a))=" " THEN LET px=x(a): GO TO 8220
8200 IF SCREEN$ (y(a),px)=" " THEN LET py=y(a): GO TO 8220
8210 IF RND>.01 THEN LET px=x(a)+SGN (RND-.5): LET py=y(a)+SGN (RND-.5): GO TO 8180
8215 LET px=x(a): LET py=y(a)
8220 PRINT AT y(a),x(a);" "; INK 7;AT py,px;"\a"
8225 LET x(a)=px: LET y(a)=py
8230 NEXT a
8240 RETURN
9000 LET ss=20: READ x,y: LET nm=0: LET n=3
9010 FOR a=1 TO 3: READ x(a),y(a): PRINT AT y(a),x(a); INK 7;"\a": NEXT a
9020 PRINT AT y,x;"\b"
9030 RETURN
9040 DATA 10,3,12,6,14,4,16,5
9050 DATA 6,12,4,8,6,8,6,9
9060 DATA 8,5,10,4,11,6,14,4
9070 DATA 5,5,18,11,5,14,24,6
9990 CLS : BORDER 1: PAPER 1: INK 6: FLASH 1: PRINT AT 11,0;" LASSIE SAYS GOODBYE ": FLASH 0
9995 STOP
9999 SAVE "sheep dog" LINE 10