home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1980-01-01 | 7.7 KB | 128 lines
1 DEF SEG=0: IF PEEK(&H1F2)<> 80 OR PEEK(&H1F3)<> 7 THEN NEW 10 GOTO 10000 20 IF NOT PCJR THEN DEF SEG=0: POKE &H417,PEEK(&H417) OR &H20: DEF SEG 30 KB%=-1: RRND=RND: KB$=INKEY$: GOSUB 80: IF KB$="" THEN RETURN ELSE KB%=ASC(KB$) 40 KB$=INKEY$: IF KB$<>"" THEN GOSUB 80: GOTO 40 ELSE RETURN 50 KB.SPACE=FRE(" "): GOSUB 40 60 KB.I%=INT(KB.SEC*18.2) 70 RRND=RND: DEF SEG=0: KB.II%=PEEK(&H46C): WHILE KB.II%=PEEK(&H46C): WEND: GOSUB 20: IF KB%<>-1 THEN RETURN ELSE KB.I%=KB.I%-1: IF KB.I%>0 THEN 70 ELSE RETURN 80 IF KB$="" THEN RETURN ELSE IF ASC(KB$)<>19 OR PCJR THEN RETURN 90 KB$="": SND.MODE=(SND.MODE+1) MOD 2: DEF SEG=0: POKE &H40F,((PEEK(&H40F) AND &HFC) OR ((SND.MODE+1) AND 3)): DEF SEG: RETURN 100 DRAW "C=C.C%;BM=C.X%;,=C.Y%;BR2R19F2D4L23U4E2": PAINT (C.X%+2,C.Y%+1),C.C%,C.C%: RETURN 110 CC.Y%=C.Y%-8*(C.N%-1): GET (C.X%,CC.Y%)-STEP(23,C.N%*8-1),CAKE.V%: PUT (C.X%,CC.Y%),CAKE.V%,XOR: PUT (C.X%+C.DX%,CC.Y%+C.DY%),CAKE.V%,XOR: RETURN 120 DSP.L%=LEN(DSP.CS$): IF DSP.L%<=0 THEN RETURN ELSE FOR DSP.CI%=1 TO DSP.L%: DSP.C$=MID$(DSP.CS$,DSP.CI%,1): GOSUB 130: DSP.X%=DSP.X%+16: NEXT DSP.CI%: RETURN 130 LINE (DSP.X%,DSP.Y%)-STEP(15,15),0,BF: DSP.I%=INSTR(DSP.FCS$,DSP.C$): IF DSP.I%<=0 THEN LOCATE (DSP.Y%+7)\8+1,(DSP.X%+7)\8+1: PRINT DSP.C$;: RETURN 140 DSP.T%=(DSP.C%-1)*9+(DSP.I%-1)*27: DSP.VI#(0)=DSP.V#(DSP.T%+0): DSP.VI#(1)=DSP.V#(DSP.T%+1): DSP.VI#(2)=DSP.V#(DSP.T%+2): DSP.VI#(3)=DSP.V#(DSP.T%+3) 150 DSP.VI#(4)=DSP.V#(DSP.T%+4): DSP.VI#(5)=DSP.V#(DSP.T%+5): DSP.VI#(6)=DSP.V#(DSP.T%+6): DSP.VI#(7)=DSP.V#(DSP.T%+7): DSP.VI#(8)=DSP.V#(DSP.T%+8): PUT (DSP.X%,DSP.Y%),DSP.VI#: RETURN 10000 DEF SEG=&HF000: PCJR=PEEK(&HFFFE)=&HFD: SND.MODE=1: DEF SEG=0: I=PEEK(&H40F) AND 3: IF I>0 THEN SND.MODE=I-1: IF SND.MODE=2 THEN SOUND ON ELSE IF PCJR THEN SOUND OFF 10010 COMMON GAME%: ON ERROR GOTO 62000: GOSUB 10930: GOSUB 10940: GOSUB 10950: KEY OFF: CLS: SCREEN 1,0: COLOR 0,1 10020 BURNER$="BL6BD3E1R1E1R1E1R1 E1R1E1R1E1R1 BL6BD3 H3F6H3" 10030 FOR GAME% = 1 TO 5: GOSUB 40: ON GAME% GOSUB 10310 ,10370 ,10400 ,10690 ,10630: NEXT GAME%: GOTO 10030 10040 CLS: KB.SEC=0.1: GOSUB 60 10050 SCREEN 0,1,0,0: LOCATE ,,0: KB.SEC=0.5: GOSUB 60: WIDTH 40: COLOR 14,0: CLS: LOCATE 1,11,0: PRINT ">> Piece of Cake <<"; 10060 COLOR 6: LOCATE 5,12: PRINT "1) The Bakery"; 10070 COLOR 2: LOCATE 9,12: PRINT "2) Multicake"; 10080 COLOR 3: LOCATE 13,12: PRINT "3) Dividacake"; 10090 COLOR 4: LOCATE 17,12: PRINT "4) Flash Cards"; 10100 COLOR 5: LOCATE 21,12: PRINT "5) Catchacake"; 10110 COLOR 14: LOCATE 25,6: PRINT "Which game do you want (1-5) ?"; 10120 KB.SEC=600: GOSUB 50 10130 IF KB%>48 AND KB%<54 THEN GAME%=KB%-48: RETURN ELSE RUN 10140 GOSUB 60: IF KB%=-1 THEN RETURN 10150 IF KB%=23 THEN GOSUB 10040: IF KB%=-1 THEN RETURN 10160 CLS: SCREEN 1,0: KB.SEC=0.3: GOSUB 60: IF GAME%<>1 THEN 10190 10170 CLS: COLOR 0,1: IF PCJR THEN PALETTE 2,RND*6+9 10180 DSP.CS$="The Bakery": DSP.X%=80: DSP.Y%=96: DSP.C%=2: GOSUB 120: RUN "PCBKRY.BAS" 10190 IF GAME%<>2 THEN 10220 10200 CLS: COLOR 0,1: IF PCJR THEN PALETTE 2,RND*6+9 10210 DSP.CS$="Multicake": DSP.C%=1: DSP.X%=88: DSP.Y%=96: DSP.C%=2: GOSUB 120: RUN "PCMULT.BAS 10220 IF GAME%<>3 THEN 10250 10230 CLS: COLOR 0,0: IF PCJR THEN PALETTE 2,RND*6+9 10240 DSP.CS$="Dividacake": DSP.C%=2: DSP.X%=80: DSP.Y%=96: GOSUB 120: DEF SEG=0: POKE &H417,&HF0: DEF SEG: RUN "PCMULT.BAS 10250 IF GAME%<>4 THEN 10280 10260 CLS: COLOR 0,0: IF PCJR THEN PALETTE 3,RND*6+9 10270 DSP.X%=80: DSP.Y%=96: DSP.C%=3: DSP.CS$="Flash Cards": GOSUB 120: RUN "PCFLASH.BAS 10280 IF GAME%<>5 THEN RUN 10290 CLS: COLOR 0,1: IF PCJR THEN PALETTE 1,RND*6+9 10300 DSP.CS$="Catchacake": DSP.X%=80: DSP.Y%=96: DSP.C%=1: GOSUB 120: RUN "PCCTCH.BAS 10310 CLS: COLOR 0,1: IF PCJR THEN PALETTE 1,12: PALETTE 2,9: PALETTE 3,15 10320 DSP.CS$="The Bakery": DSP.X%=80: DSP.Y%=0: DSP.C%=2: GOSUB 120: KB.SEC=0.1: GOSUB 10140 10330 DRAW "C3BM85,185U80R100D80L100E1U78R98D78L98BE9U60R80D60L80BD10BR90": DRAW "E30U80G30R1D78E28U78G28L1": DRAW "BE30L100G30R1E1R98E28L98G28L1BE29" 10340 DRAW "U20R100D20H1L98U18R98D18BL49BU10": DRAW "U3D3E4G4BG6U12R12D12L12L1U12R14D12BU3BR8R12U1L12BR20R12D1L12BU4R12U1L12BL8L12D1R12BD20BL10": DRAW BURNER$+"BG10"+BURNER$ 10350 DSP.SEC=0.1: GOSUB 10140 10360 C.X%=100: C.Y%=88: C.C%=2: FOR I=1 TO 5: GOSUB 100: C.Y%=C.Y%-8: DSP.SEC=0.1: GOSUB 10140: NEXT I: KB.SEC=1.5: GOSUB 10140: RETURN 10370 CLS: COLOR 0,0: IF PCJR THEN PALETTE 1,14: PALETTE 2,13: PALETTE 3,11 10380 DSP.CS$="Multicake": DSP.C%=1: DSP.X%=88: DSP.Y%=0: DSP.C%=2: GOSUB 120: KB.SEC=0.1: GOSUB 10140: OP%=3: OP$="x" 10390 A$="How many pieces in all ?": GOSUB 10430: RETURN 10400 CLS: COLOR 0,0: IF PCJR THEN PALETTE 1,12: PALETTE 2,10: PALETTE 3,14 10410 DSP.CS$="Dividacake": DSP.C%=2: DSP.X%=80: DSP.Y%=0: GOSUB 120: KB.SEC=0.1: GOSUB 10140 10420 OP%=4: OP$="/": A$="How many does each customer get?": GOSUB 10430: RETURN 10430 GOSUB 10520: C.X%=144: CL.X%=144: CL.Y%=96-((LOP%+1)\2)*16: GOSUB 10540: KB.SEC=0.1: GOSUB 10140 10440 GOSUB 10450: LOCATE 25,21-LEN(A$)/2: PRINT A$;: KB.SEC=1.5: GOSUB 10140: RETURN 10450 IF OP%=4 THEN 10500 10460 DSP.X%=32: DSP.Y%=16: DSP.C%=1: DSP.CS$=RIGHT$(SPACE$(2)+STR$(LOP%),2): GOSUB 120 10470 DSP.X%=16: DSP.Y%=32: DSP.CS$=RIGHT$(OP$+RIGHT$(SPACE$(2)+STR$(ROP%),2),3): GOSUB 120: LINE (32,55)-STEP(31,2),1,BF 10480 DSP.QX%=32: DSP.QY%=64: DSP.X%=32: DSP.Y%=64: DSP.CS$=" ?" 10490 GOSUB 120: RETURN 10500 DSP.CS$=RIGHT$(" "+STR$(LOP%)+ RIGHT$(" "+STR$(PROD%),4),6): DSP.X%=16: DSP.Y%=128: DSP.QX%=80: DSP.QY%=96: DSP.C%=1: GOSUB 120 10510 LINE (63,119)-STEP(48,2),1,BF: LINE (63,119)-STEP(2,24),1,BF: DSP.X%=80: DSP.Y%=96: DSP.CS$=" ?": GOSUB 120: RETURN 10520 LOP%=FNRN%(2,7): ROP%=FNRN%(2,10): PROD%=LOP%*ROP%: IF PROD%>=100 THEN 10520 10530 RETURN 10540 C.L%=CL.Y%\8+1: C.XP%=CL.X%\8-2 10550 FOR C.I%=1 TO LOP%: C.YT%=CL.Y%+C.I%*16-16: LOCATE C.L%+C.I%*2-2,C.XP%: PRINT RIGHT$(" "+STR$(C.I%),2); 10560 LINE (CL.X%-2,C.YT%-2)-STEP(ROP%*16-1,11),2,BF: NEXT C.I% 10570 KB.SEC=0.1: GOSUB 10140 10580 LOCATE C.L%-2,CL.X%\8: FOR C.I%=1 TO ROP%: IF OP%=3 THEN PRINT STR$(C.I%); ELSE PRINT " ?"; 10590 NEXT C.I%: KB.SEC=0.1: GOSUB 10140 10600 FOR C.I%=1 TO LOP%: C.YT%=CL.Y%+C.I%*16-16: FOR C.II%=1 TO ROP%: LINE (CL.X%+C.II%*16-6,C.YT%-2)-STEP(3,11),0,BF 10610 NEXT C.II% 10620 NEXT C.I%: RETURN 10630 CLS: COLOR 0,1: IF PCJR THEN PALETTE 1,12: PALETTE 2,9: PALETTE 3,10 10640 DSP.CS$="Catchacake": DSP.X%=80: DSP.Y%=0: DSP.C%=1: GOSUB 120: LOCATE 5,31: PRINT "Player";: LOCATE 7,33: PRINT RIGHT$(STR$(FNRN%(1,4)),2); 10650 LOCATE 15,31: PRINT "Score";: LOCATE 17,32: PRINT RIGHT$(" "+STR$(FNRN%(0,900)),3) 10660 LINE (16,181)-(303,182),3,BF 10670 OP%=FNRN%(1,4): OP$=MID$("+-x/",OP%,1) 10680 GOSUB 10820: C.X%=64: C.Y%=20: C.C%=1: GOSUB 100: C.DX%=0: C.DY%=4: C.N%=1: FOR I=1 TO 20: GOSUB 110: KB.SEC=0.02: GOSUB 10140: C.Y%=C.Y%+C.DY%: NEXT I: RETURN 10690 CLS: COLOR 0,0: IF PCJR THEN PALETTE 1,6: PALETTE 2,13: PALETTE 3,14 10700 DSP.X%=80: DSP.Y%=0: DSP.C%=2: DSP.CS$="Flash Cards": GOSUB 120: KB.SEC=0.1: GOSUB 10140 10710 X% = 18: Y = 8 10720 DSP.CS$="A": COL2=X%-4: RROW=Y: GOSUB 10810 10730 DSP.CS$="Add": COL2=X%: RROW=Y: GOSUB 10810 10740 DSP.CS$="S": Y=Y+4: COL2=X%-4: RROW=Y: GOSUB 10810 10750 DSP.CS$="Subtract": COL2=X%: RROW=Y: GOSUB 10810 10760 DSP.CS$="M": Y=Y+4: COL2=X%-4: RROW=Y: GOSUB 10810 10770 DSP.CS$="Multiply": COL2=X%: RROW=Y: GOSUB 10810 10780 DSP.CS$="D": Y=Y+4: COL2=X%-4: RROW=Y: GOSUB 10810 10790 DSP.CS$="Divide": COL2=X%: RROW=Y: GOSUB 10810 10800 RETURN 10810 FOR J= 1 TO LEN(DSP.CS$): LOCATE RROW,COL2,0: PRINT MID$(DSP.CS$,J,1);: COL2=COL2+1: NEXT J: KB.SEC=0.4: GOSUB 10140: RETURN 10820 GOSUB 10870: IF OP%=4 THEN 10850 10830 DSP.X%=152: DSP.Y%=68: DSP.C%=1: DSP.CS$=RIGHT$(SPACE$(2)+STR$(LOP%),2): GOSUB 120 10840 DSP.X%=136: DSP.Y%=92: DSP.CS$=OP$+RIGHT$(SPACE$(2)+STR$(ROP%),2): GOSUB 120: LINE (152,111)-STEP(31,2),1,BF: DSP.QX%=168+16*(ANS%>9): DSP.QY%=116: RETURN 10850 DSP.CS$=STR$(LOP%)+" "+STR$(ROP%): DSP.X%=160-8*LEN(DSP.CS$): DVL.X%=DSP.X%+LEN(STR$(LOP%))*16+15: DSP.QX%=DSP.X%+4*16: DSP.QY%=64: DSP.Y%=92: DSP.C%=1: GOSUB 120 10860 LINE (DVL.X%,81)-STEP(LEN(STR$(ROP%))*16-1,2),1,BF: LINE (DVL.X%,81)-STEP(2,24),1,BF: RETURN 10870 OP%=FNRN%(1,4): OP$=MID$("+-x/",OP%,1) 10880 IF OP%<>1 THEN 10890 ELSE LOP%=FNRN%(1,10): ROP%=FNRN%(1,10): ANS%=LOP%+ROP%: GOTO 10920 10890 IF OP%<>2 THEN 10900 ELSE LOP%=FNRN%(1,20): ROP%=FNRN%(0,LOP%): ANS%=LOP%-ROP%: GOTO 10920 10900 IF OP%<>3 THEN 10910 ELSE LOP%=FNRN%(0,9): ROP%=FNRN%(0,9): ANS%=LOP%*ROP%: IF ANS%<100 THEN 10920 ELSE 10900 10910 LOP%=FNRN%(1,9): ANS%=FNRN%(1,9): ROP%=LOP%*ANS%: IF ROP%<100 THEN 10920 ELSE 10910 10920 RETURN 10930 DEF FNC%(I%)=I%: DEF FNP(I)=I+(20 AND W80F%): DEF FNRN%(F%,L%)=INT(RND*(L%-F%+1) MOD (L%-F%+1))+F%: RANDOMIZE VAL(RIGHT$(TIME$,2)): RETURN 10940 RETURN 10950 DIM CAKE.V%(1000): DSP.T%=0: DSP.X%=0: DSP.Y%=0: DSP.C%=0: DSP.I%=0: DSP.C$="" 10960 OPEN "FONTCS.DS" FOR INPUT AS #1: LINE INPUT#1,DSP.FCS$: CLOSE 1: DSP.NFCS%=LEN(DSP.FCS$) 10970 DIM DSP.V#(DSP.NFCS%*27),DSP.VI#(9): DSP.I=0: DSP.V#(0)=0: DEF SEG: DSP.I=VARPTR(DSP.V#(0)): BLOAD "DBLFONT.BSV",DSP.I: RETURN 10980 CLS: LOCATE 1,1,0: KB.SEC=0.1: GOSUB 60: SCREEN 1,0: COLOR 0,FNRN%(0,1): DSP.C%=FNRN%(1,3): DSP.X%=48: DSP.Y%=96: DSP.CS$="Piece of Cake": GOSUB 120: RUN "PCMENU.BAS 62000 SCREEN 0,1,0,0: LOCATE ,,0: COLOR 7: CLS: X$="": IF ERR=53 THEN X$="DISK WITH PROGRAMS NEEDED" 62010 IF ERR=72 OR ERR=71 THEN X$="DISK ERROR OR NOT READY" 62020 IF ERR=5 THEN X$="LIST AND SAVE COMMANDS ARE ILLEGAL" 62030 IF X$="" THEN 62080 62040 GOSUB 62090 62050 RESUME 62060 62060 ON ERROR GOTO 62000 62070 KB.SEC=20: GOSUB 50: CLS: IF KB%=27 THEN RUN "PCMENU.BAS" ELSE RUN 62080 SCREEN 0,1,0,0: LOCATE ,,0: COLOR 7,0: CLS: RUN 62090 GOSUB 10930: IF X$="" THEN X$=" " 62100 XL%=LEN(X$): IF XL%>36 THEN XL%=36 62110 LOCATE 25,2,0: PRINT SPACE$((38-XL%)\2)+LEFT$(X$,XL%) +SPACE$(38-XL%-(38-XL%)\2);: RETURN