home *** CD-ROM | disk | FTP | other *** search
- 10 'UPDATE 6/17/83
- 20 WIDTH 80:SCREEN 0,0,0:COLOR 3,0:KEY OFF:GOSUB 1630
- 30 ON KEY(10) GOSUB 1870
- 40 P$="o":H$=" "
- 50 DIM B(70),T(9,9)
- 60 CLS:XLIN=1:XPOS=1:GOSUB 1920:FOR R=1 TO 9:FOR C=1 TO 9
- 70 IF (R-4)*(R-5)*(R-6)=0 THEN 100
- 80 IF (C-4)*(C-5)*(C-6)=0 THEN 100
- 90 T(R,C)=-5:GOTO 120
- 100 IF (R-1)*(C-1)*(R-9)*(C-9)=0 THEN 90
- 110 T(R,C)=5:READ XY(R,C)
- 120 NEXT C,R:T(5,5)=0
- 130 PRINT
- 140 PRINT TAB(32)"┌───┐ ┌───┐ ┌───┐"
- 150 PRINT TAB(32)"│ o │ │ o │ │ o │"
- 160 PRINT TAB(32)"└───┘ └───┘ └───┘"
- 170 PRINT TAB(32)"┌───┐ ┌───┐ ┌───┐"
- 180 PRINT TAB(32)"│ o │ │ o │ │ o │"
- 190 PRINT TAB(32)"└───┘ └───┘ └───┘"
- 200 PRINT TAB(20)"┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐"
- 210 PRINT TAB(20)"│ o │ │ o │ │ o │ │ o │ │ o │ │ o │ │ o │"
- 220 PRINT TAB(20)"└───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘"
- 230 PRINT TAB(20)"┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐"
- 240 PRINT TAB(20)"│ o │ │ o │ │ o │ │ │ │ o │ │ o │ │ o │"
- 250 PRINT TAB(20)"└───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘"
- 260 PRINT TAB(20)"┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐"
- 270 PRINT TAB(20)"│ o │ │ o │ │ o │ │ o │ │ o │ │ o │ │ o │"
- 280 PRINT TAB(20)"└───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘"
- 290 PRINT TAB(32)"┌───┐ ┌───┐ ┌───┐"
- 300 PRINT TAB(32)"│ o │ │ o │ │ o │"
- 310 PRINT TAB(32)"└───┘ └───┘ └───┘"
- 320 PRINT TAB(32)"┌───┐ ┌───┐ ┌───┐"
- 330 PRINT TAB(32)"│ o │ │ o │ │ o │"
- 340 PRINT TAB(32)"└───┘ └───┘ └───┘"
- 350 RESTORE:FOR W=1 TO 33:READ M:B(M)=-7:NEXT:B(41)=-3
- 360 DATA 13,14,15,22,23,24,29,30,31,32,33,34,35,38,39,40,41
- 370 DATA 42,43,44,47,48,49,50,51,52,53,58,59,60,67,68,69
- 380 YS1=12 :XS1= 40
- 390 LOCATE 24,1:PRINT SPC(24);"Position Cursor And Strike Enter.";
- 400 LOCATE 23,30,0 :PRINT" Move Which Piece? ";
- 410 LOCATE YS1,XS1,1
- 420 GOTO 680
- 430 KEY(11) ON:KEY(12) ON:KEY(13) ON:KEY(14) ON
- 440 KEY(11) STOP:KEY(12) STOP:KEY(13) STOP:KEY(14) STOP
- 450 ON KEY(11) GOSUB 520
- 460 ON KEY(12) GOSUB 560
- 470 ON KEY(13) GOSUB 600
- 480 ON KEY(14) GOSUB 640
- 490 MOVE$=INKEY$:IF MOVE$<>CHR$(13) THEN 430
- 500 XS1=POS(0):XC1=(POS(0)-10)/6
- 510 YS1=CSRLIN:YC1=(CSRLIN/3)+1:RETURN
- 520 IF CSRLIN<6 THEN 550
- 530 IF CSRLIN<12 AND (POS(0)<34 OR POS(0)>46) THEN 550
- 540 LOCATE CSRLIN-3,POS(0),1
- 550 RETURN
- 560 IF POS(0)<28 THEN 590
- 570 IF (CSRLIN<9 OR CSRLIN>15) AND POS(0)<40 THEN 590
- 580 LOCATE CSRLIN,POS(0)-6,1
- 590 RETURN
- 600 IF POS(0)>52 THEN 630
- 610 IF (CSRLIN<9 OR CSRLIN>15) AND POS(0)>40 THEN 630
- 620 LOCATE CSRLIN,POS(0)+6,1
- 630 RETURN
- 640 IF CSRLIN>20 THEN 670
- 650 IF CSRLIN>12 AND (POS(0)<34 OR POS(0)>46) THEN 670
- 660 LOCATE CSRLIN+3,POS(0),1
- 670 RETURN
- 680 GOSUB 430
- 690 ZYS1=YS1:ZXS1=XS1:ZYC1=YC1:ZXC1=XC1:Z=XY(YC1,XC1)
- 700 IF B(Z)=-7 THEN 800
- 710 CT$=H$
- 720 IF T(ZYC1,ZXC1)=5 THEN CT$=P$
- 730 LOCATE ZYS1,ZXS1:PRINT CT$;
- 740 CT$=H$
- 750 IF T(YC1,XC1)=5 THEN CT$=P$
- 760 LOCATE YS1,XS1:PRINT CT$;
- 770 LOCATE 20,1:PRINT"Illegal Move, Try Again...";
- 780 FOR DD=1 TO 1000:NEXT
- 790 LOCATE 20,1:PRINT SPC(27);:LOCATE YS1,XS1:GOTO 380
- 800 LOCATE 23,31:PRINT"Move Peg To Where? ";
- 810 LOCATE YS1,XS1:COLOR 23,0:PRINT P$;:COLOR 3,0
- 820 LOCATE YS1,XS1:GOSUB 430
- 830 P=XY(YC1,XC1)
- 840 IF B(P)=0 OR B(P)=-7 THEN 710
- 850 IF Z=P THEN 380
- 860 IF ((Z+P)/2)=INT((Z+P)/2) THEN 870 ELSE 710
- 870 IF (ABS(Z-P)-2)*(ABS(Z-P)-18)<>0 THEN 710
- 880 GOSUB 1010:GOSUB 890:GOSUB 1200:GOTO 380
- 890 CT$=H$
- 900 IF T(ZYC1,ZXC1)=5 THEN CT$=P$
- 910 LOCATE ZYS1,ZXS1:PRINT CT$;:CT$=H$
- 920 IF T(YC1,XC1)=5 THEN CT$=P$
- 930 LOCATE YS1,XS1:PRINT CT$;
- 940 YO1=ZYC1-YC1:XO1=ZXC1-XC1
- 950 IF YO1>0 THEN YO1=(1)
- 960 IF XO1>0 THEN XO1=(1)
- 970 IF YO1<0 THEN YO1=(-1)
- 980 IF XO1<0 THEN XO1=(-1)
- 990 CT$=H$
- 1000 LOCATE YS1+(YO1*3),XS1+(XO1*6):PRINT CT$;:RETURN
- 1010 C=1:FOR X=1 TO 9:FOR Y=1 TO 9
- 1020 IF C<>Z THEN 1180
- 1030 IF C+2<>P THEN 1070
- 1040 IF T(X,Y+1)=0 THEN 710
- 1050 T(X,Y+2)=5
- 1060 T(X,Y+1)=0:B(C+1)=-3:GOTO 1160
- 1070 IF C+18<>P THEN 1100
- 1080 IF T(X+1,Y)=0 THEN 710
- 1090 T(X+2,Y)=5:T(X+1,Y)=0:B(C+9)=-3:GOTO 1160
- 1100 IF C-2<>P THEN 1130
- 1110 IF T(X,Y-1)=0 THEN 710
- 1120 T(X,Y-2)=5:T(X,Y-1)=0:B(C-1)=-3:GOTO 1160
- 1130 IF C-18<>P THEN 1180
- 1140 IF T(X-1,Y)=0 THEN 710
- 1150 T(X-2,Y)=5:T(X-1,Y)=0:B(C-9)=-3:B(Z)=-3:B(P)=-7
- 1160 B(Z)=-3:B(P)=-7
- 1170 T(X,Y)=0:RETURN
- 1180 C=C+1
- 1190 NEXT Y,X:RETURN
- 1200 F=0
- 1210 FOR R=2 TO 8:FOR C=2 TO 8
- 1220 IF T(R,C)<>5 THEN 1320
- 1230 F=F+1
- 1240 FOR A=R-1 TO R+1:T=0:FOR B=C-1 TO C+1:T=T+T(A,B):NEXT B
- 1250 IF T<>10 THEN 1270
- 1260 IF T(A,C)<>0 THEN 1590
- 1270 NEXT A
- 1280 FOR X=C-1 TO C+1:T=0:FOR Y=R-1 TO R+1:T=T+T(Y,X):NEXT Y
- 1290 IF T<>10 THEN 1310
- 1300 IF T(R,X)<>0 THEN 1590
- 1310 NEXT X
- 1320 NEXT C
- 1330 NEXT R
- 1340 LOCATE 22,1:PRINT"Only"F"Pieces Remaining."
- 1350 LOCATE 24,1:PRINT SPC(79);
- 1360 IF F<>1 THEN 1400
- 1370 LOCATE 21,1:PRINT"BRAVO!"
- 1380 LOCATE 23,1:PRINT"A Perfect Score!"
- 1390 IF T(5,5)=5 THEN LOCATE 23,1:PRINT"In The Center! You're A Genius!"
- 1400 IF F<>2 THEN 1430
- 1410 LOCATE 21,1:PRINT"EXCELLENT!"
- 1420 LOCATE 23,1:PRINT"Try Again."
- 1430 IF F=3 OR F=4 THEN LOCATE 21,1:PRINT"GREAT!"
- 1440 IF F=3 OR F=4 THEN LOCATE 23,1:PRINT"Don't Give Up Yet."
- 1450 IF F>=5 AND F<=7 THEN LOCATE 21,1:PRINT"NOT BAD."
- 1460 IF F>=5 AND F<=7 THEN LOCATE 23,1:PRINT"Give It Another Shot."
- 1470 IF F<8 THEN 1540
- 1480 IF F>24 THEN 1520
- 1490 LOCATE 21,1:PRINT"OUCH!"
- 1500 LOCATE 22,1:PRINT"You Had"F"Pieces Remaining."
- 1510 LOCATE 23,1:PRINT"Today Is Not Your Day!":GOTO 1540
- 1520 LOCATE 21,1:PRINT"WRONG OBJECTIVE!"
- 1530 LOCATE 23,1:PRINT"When All Else Fails, Read The Instructions!"
- 1540 LOCATE 24,1,1:PRINT"Would You Like To Play Again? <Y/N>";
- 1550 A$=INKEY$:IF A$="" THEN 1550
- 1560 IF A$="n" OR A$="N" THEN 1600
- 1570 IF A$<>"y" AND A$<>"Y" THEN 1550
- 1580 RESTORE:GOTO 60
- 1590 RETURN
- 1600 CLEAR:ON ERROR GOTO 1610:RUN"menu2.002"
- 1610 CLEAR:ON ERROR GOTO 1620:RUN"menu1.001"
- 1620 RUN"menu3.003"
- 1630 CLS:COLOR 6,0
- 1640 LOCATE 1,1:PRINT STRING$(80,219)
- 1650 FOR A=2 TO 22:LOCATE A,1:PRINT"█":LOCATE A,80:PRINT"█":NEXT
- 1660 LOCATE 23,1:PRINT STRING$(80,219);
- 1670 LOCATE 3,34:COLOR 11,0:PRINT"P E G L E A P
- 1680 COLOR 15,0:LOCATE 8,25:PRINT"Would You Like Instructions? <Y/N>":COLOR 3
- 1690 Z$=INKEY$:IF Z$="" THEN 1690
- 1700 IF Z$="N" OR Z$="n" THEN CLS:RETURN
- 1710 IF Z$<>"Y" AND Z$<>"y" THEN 1690
- 1720 LOCATE 5,10:PRINT"
- 1730 LOCATE 7,21:PRINT " This is a simple little game that is
- 1740 LOCATE 8,21:PRINT" played a lot like checkers. The object
- 1750 LOCATE 9,21:PRINT" of the game is to remove as many `pegs'
- 1760 LOCATE 10,21:PRINT" as possible by jumping each `peg' with
- 1770 LOCATE 11,21:PRINT" another. You may not jump diagonally.
- 1780 LOCATE 12,21:PRINT" The peg that you jump will be removed
- 1790 LOCATE 13,21:PRINT" from the game board automatically.
- 1800 LOCATE 16,21:PRINT" First, position the cursor under the
- 1810 LOCATE 17,21:PRINT" jumping peg and Strike The Enter Key.
- 1820 LOCATE 18,21:PRINT" Then, move the cursor to the empty
- 1830 LOCATE 19,21:PRINT" hole that you are jumping to and again
- 1840 LOCATE 20,21:PRINT" Strike The Enter Key.
- 1850 LOCATE 25,28:COLOR 15,0:PRINT"Strike Any Key To Continue";
- 1860 Z$=INKEY$:IF Z$="" THEN 1860 ELSE CLS:RETURN
- 1870 KEY(10) OFF:XLIN=CSRLIN:XPOS=POS(0):LOCATE 25,1:PRINT SPC(79);
- 1880 LOCATE 25,22:PRINT"Do You Wish To Leave This Game? <Y/N>";
- 1890 Z$=INKEY$:IF Z$="" THEN 1890
- 1900 IF Z$="y" OR Z$="Y" THEN 1600
- 1910 IF Z$<>"n" AND Z$<>"N" THEN 1890
- 1920 LOCATE 25,1:PRINT SPC(79);:LOCATE 25,25:COLOR 0,7
- 1930 PRINT" Strike <F10> To Leave This Game ";:COLOR 3,0:LOCATE XLIN,XPOS,0
- 1940 KEY(10) ON:RETURN