10 REM PARTY MACHINE
20 REM BY G J KEY 30 REM (c) Computing with the Amstrad 40 REM ------------- CPC ------------ 50 MODE 0:CALL &BC02:MEMORY &96FF 60 GOSUB 1750:DEFINT a-y:GOSUB 1230 70 running=&FFFF 80 DEF FNinc(h)=h MOD 29+1 90 DEF FNwheel(a$,h)=VAL(MID$(a$,h,1)) 100 WHILE running 110 GOSUB 300:GOSUB 1060 120 GOSUB 450:GOSUB 150 130 IF s=0 THEN GOSUB 330 140 WEND 150 IF w=0 THEN RETURN 160 GOSUB 210:GOSUB 560:IF w>0 THEN m=m+w ELSE RETURN 170 FOR t=1 TO w:LOCATE#1,1,19:PRINT#1,CHR$(244)CHR$(245)STRING$(4,CHR$(10)):SOUND 3,t*3,10,14,1,2:NEXT 180 LOCATE#1,1,20:FOR t=1 TO 20:PRINT#1,CHR$(10):NEXT 190 WHILE (SQ(1) AND 128)=128:WEND 200 s=s+w:GOSUB 300:RETURN 210 PAPER#2,12:PEN#2,14:CLS#2:v=w 220 PRINT#2," WIN":GOSUB 260:PRINT#2 230 PRINT#2,SPACE$(3-LEN(q$)/2);q$ 240 FOR t=20 TO 250 STEP 4 250 SOUND 3,t,5,5:NEXT:RETURN 260 IF v<10 THEN q$=STR$(v*10)+"p":RETURN ELSE q$=STR$(v/10) 270 q$="#"+RIGHT$(q$,LEN(q$)-1) 280 IF INSTR(q$,".")THEN q$=q$+"0"ELSE q$=q$+".00" 290 RETURN 300 CLS#3:v=s:GOSUB 260:z=LEN(q$)/2 310 PRINT#3,SPACE$((3-z)*-(z<=3))q$ 320 RETURN 330 CALL &BCA7:n=0:FOR t=200 TO 400 STEP 50 340 SOUND 1,t,30-(t=400)*60,7 350 SOUND 2,t-4,30-(t=400)*60,7 360 FOR o=1 TO 8:IF o MOD 2 THEN PEN#5,n:n=n XOR 4 370 PRINT#5," Your Broke!" 380 NEXT:NEXT:CLS#5 390 br$="HAVE #2.00 TO PLAY AGAIN.":GOSUB 1940 400 FOR t=1 TO 42:FOR n=152 TO 128 STEP -8:GOSUB 420:NEXT:NEXT 410 s=20:RETURN 420 SOUND 1,RND(2)*200,2,7:SOUND 2,RND(2)*200,2,7 430 TAG:MOVE n,28:PRINT MID$(br$,t,15); 440 TAGOFF:RETURN 450 w=0 460 ON r(2) GOTO 470,470,470,470,510,530,550,470 470 IF r(0)=r(2) AND r(1)=r(2) THEN w=15:RETURN 480 IF r(2)=8 THEN RETURN 490 IF r(1)=r(2) THEN w=5 500 RETURN 510 w=3:IF r(1)=5 THEN w=6:IF r(0)=5 THEN w=12 520 RETURN 530 IF r(0) MOD 8<5 AND r(1)=r(0) THEN w=10:RETURN 540 IF r(0)=6 AND r(1)=6 THEN w=20 550 RETURN 560 IF w<=0 THEN RETURN 570 IF RND<0.4 THEN RETURN 580 PAPER#2,0:CLS#2:g=-1 590 WHILE g AND INKEY(62):g=INKEY(52) 600 PEN#2,RND*12:PRINT#2,CHR$(30)"Gamble or Collect"; 610 SOUND 2,RND*255,1,15,0,1 620 WEND:CLS#2:IF g THEN RETURN 630 x=1:y=12:PEN#4,3:GOSUB 1720 640 WHILE x<>6:z=TIME+(RND*30)*10 650 SOUND 1,y*20,20,7:SOUND 2,y*20-4,20,7 660 WHILE TIME<z:WEND:PEN#4,8 670 GOSUB 1720:oy=y:y=y+RND*(1-(y<7))-1 680 IF y=oy THEN x=x+RND 690 IF y<1 THEN y=2 700 PEN#4,3:GOSUB 1720:WEND 710 IF y MOD 2 AND y<10 THEN GOSUB 780:RETURN 720 w=-1:PEN#2,2:PRINT#2 730 PRINT#2," LOSE!" 740 FOR t=300 TO 600 STEP 50 750 SOUND 1,t,30,7,0,1:NEXT 760 GOSUB 840:PEN#4,0:GOSUB 1720 770 CLS#2:RETURN 780 y=(y-1)/2:w=w*(5-y) 790 PEN#4,14:GOSUB 1720:FOR t=1 TO 10 800 SOUND 1,300,20,7,0,2:NEXT 810 GOSUB 840:PEN#4,4:GOSUB 1710 820 GOSUB 210:IF w<50 THEN GOSUB 560 830 RETURN 840 WHILE SQ(1)<>4:WEND:RETURN 850 SOUND 2,100,70,7,1,2:RETURN 860 PAPER #2,14:CLS #2:PEN#2,15:PRINT#2,"deposit"SPACE$(9)"10p":GOSUB 850 870 EVERY 250,1 GOSUB 850:WHILE INKEY(47):WEND:t=REMAIN(1) 880 PRINT#1,CHR$(30)CHR$(244)CHR$(245) 890 FOR t=1 TO 20:SOUND 129,t*4,2:PRINT#1,CHR$(30)CHR$(11):NEXT 900 PAPER #2,0:CLS #2:s=s-1:GOSUB 300 910 RETURN 920 IF w THEN th=1:RETURN 930 th=th+1:IF th<3 THEN RETURN 940 IF RND(4)<0.3 THEN RETURN 950 PAPER #2,14:CLS #2:PEN#2,15:PRINT#2:PRINT#2," HOLD!" 960 WHILE INKEY$<>"":WEND 970 th=th-1:EVERY 10,1 GOSUB 1220 980 k$="":WHILE INKEY(47):IF k$<"1" OR k$>"3" THEN k$="" 990 k=VAL(k$):IF k>0 AND k<4 THEN GOSUB 1020 1000 k$=INKEY$:WEND:t=REMAIN(1) 1010 PAPER#2,0:CLS#2:RETURN 1020 h(k-1)=h(k-1)XOR 1:PEN 6+h(k-1)*8 1030 LOCATE 5-(k=2)*3-(k=3)*5,20 1040 IF k MOD 2 THEN PRINT d$:ELSE PRINT CHR$(248) 1050 RETURN 1060 GOSUB 860:GOSUB 920 1070 n=200:EVERY 2,1 GOSUB 1210 1080 e=RND*7+10:f=RND*4+e+3 1090 g=RND*4+f+2:FOR t=0 TO 30 1100 IF t<=g AND h(0)=0 THEN a(t)=FNwheel(a$,h):h=FNinc(h):ELSE a(t)=0 1110 IF t<=f AND h(1)=0 THEN b(t)=FNwheel(b$,i):i=FNinc(i):ELSE b(t)=0 1120 IF t<=e AND h(2)=0 THEN c(t)=FNwheel(c$,j):j=FNinc(j):ELSE c(t)=0 1130 NEXT:t=REMAIN(1) 1140 FOR t=0 TO 30:SOUND 129,40,100,3,1,1:CALL &9700,a(t),b(t),c(t):NEXT 1150 SOUND 2,240,10,15,4,1,1:FOR t=1 TO 2:PRINT#1,CHR$(30)CHR$(11):NEXT 1160 IF h(0)=0 THEN r(0)=a(g-1) 1170 IF h(1)=0 THEN r(1)=b(f-1) 1180 IF h(2)=0 THEN r(2)=c(e-1) 1190 GOSUB 1700:FOR t=0 TO 2:h(t)=0:NEXT 1200 RETURN 1210 SOUND 129,n,1,15,0,0,1:n=n-4:RETURN 1220 SOUND 1,n,2,15:n=n XOR 68:RETURN 1230 CLS:ENV 1,10,1,5,10,-1,5 1240 ENT -1,1,30,5:ENT -2,5,-5,5 1250 SYMBOL 240,252,248,240,224,192,128,0,0 1260 SYMBOL 241,0,0,128,192,224,240,248,252 1270 SYMBOL 242,63,31,15,7,3,1,0,0 1280 SYMBOL 243,0,0,1,3,7,15,31,63 1290 SYMBOL 244,24,60,60,90,66,94,255,195 1300 SYMBOL 245,219,219,90,66,126,60,60,24 1310 SYMBOL 246,1,3,7,15,15,7,3,1 1320 SYMBOL 247,128,192,224,240,240,224,192,128 1330 SYMBOL 248,24,60,126,255,255,126,60,24 1340 RESTORE 3530:th=0 1350 WINDOW#1,2,2,2,23:PEN#1,4 1360 WINDOW#2,5,11,2,4 1370 WINDOW#3,13,19,3,4:PEN#3,1 1380 WINDOW#4,13,19,6,18:PEN#4,8 1390 WINDOW#5,5,19,24,24:PAPER#5,5:CLS#5:PEN#5,0 1400 FOR x=1 TO 5:FOR y=1 TO 12 1410 GOSUB 1720:NEXT:NEXT:PEN#4,4 1420 FOR y=0 TO 4:GOSUB 1710:NEXT 1430 c=1:MOVE 0,0:GOSUB 1730 1440 PEN 3:FOR t=11 TO 12 1450 LOCATE 4,t:PRINT CHR$(241+(t=12)) 1460 LOCATE 12,t:PRINT CHR$(243+(t=12)) 1470 NEXT:c=5:MOVE 120,120:GOSUB 1730 1480 MOVE 120,332:GOSUB 1730 1490 RANDOMIZE TIME:FOR t=0 TO 4 STEP 4 1500 MOVE 199+t,120:DRAW 199+t,324 1510 MOVE 276+t,120:DRAW 276+t,324 1520 MOVE 128,32-t*4.5:DRAW 604,33-t*4.5 1530 NEXT:c=12:MOVE 16,356 1540 FOR n=1 TO 3:GOSUB 1730:NEXT 1550 TAG:FOR t=0 TO 2:MOVE 144+t*80,64 1560 PRINT CHR$(49+t);:NEXT:TAGOFF 1570 ORIGIN 0,0,128,604,32,12:CLG 5 1580 LOCATE 13,2:PEN 10:PRINT"-";:PEN 6:PRINT"MONEY";:PEN 10:PRINT"-" 1590 LOCATE 14,20:PEN 10:PRINT"PARTY":LOCATE 13,22:PRINT"MACHINE" 1600 DIM a(30),b(30),c(30),r(2),h(2) 1610 a$="72347678275127476723165783178" 1620 b$="81736754257123718751347273642" 1630 c$="71342758271735487352716752475" 1640 d$=CHR$(246)+CHR$(247):s=20:CLG 1650 h$=d$+" "+CHR$(248)+" "+d$ 1660 GOSUB 1700:h=RND*28+1:i=RND*28+1 1670 j=RND*28+1:FOR t=0 TO 6 STEP 3 1680 CALL &9700,t+1,t+2,(t+2)MOD 8+1 1690 NEXT:RETURN 1700 LOCATE 5,20:PEN 6:PRINT h$:RETURN 1710 LOCATE#4,6,y*2+1:PRINT#4,"x";RIGHT$(STR$(5-y),1);:RETURN 1720 LOCATE#4,x,y:PRINT#4,CHR$(233):RETURN 1730 FOR t=1 TO 4:READ x,y:DRAW x,y,c 1740 NEXT:RETURN 1750 INK 0,0:INK 1,24:INK 5,15:BORDER 3 1760 PEN 6:LOCATE 5,5:PRINT"Please Wait":LOCATE 5,7:PRINT"Reading data" 1770 READ br$:GOSUB 1940:ORIGIN -32,100,128,500,134,112:CLG 6:DEFINT t,n 1780 t=1:n=152:EVERY 12,1 GOSUB 1950 1790 p=&9700:ch=29619:GOSUB 1870:d=p+220 1800 FOR u=0 TO 12:FOR i=0 TO 7 1810 c=49552+i*2048+u*80 1820 hb=INT(c/256):lb=c-hb*256 1830 POKE p,lb:POKE (p+1),hb:p=p+2 1840 NEXT:NEXT:p=d:ch=220222:GOSUB 1870 1850 t=REMAIN(1):ORIGIN 0,0,0,640,0,400 1860 RETURN 1870 READ a$:c=0:WHILE a$<>"gjkey" 1880 FOR q=1 TO 29 STEP 2 1890 r=VAL("&"+MID$(a$,q,2)):c=c+r 1900 POKE p,r:p=p+1:NEXT:READ a$:WEND 1910 IF c=ch THEN RETURN:ELSE t=REMAIN(1) 1920 MODE 1:PRINT"There's an error in the data statements. Please check lines 1980 onwards"CHR$(7)CHR$(7) 1930 END 1940 br$=SPACE$(16)+br$+SPACE$(16):RETURN 1950 GOSUB 430:n=n-8:IF n=120 THEN n=152:t=t MOD 55+1 1960 RETURN 1970 DATA PARTY MACHINE by GORDEN J.KEY 1987 1980 DATA DD7E0432E797DD7E0232E897DD7E00 1990 DATA 32E9973AE797FE002807CDDE97ED53 2000 DATA EA973AE897FE002807CDDE97ED53EC 2010 DATA 973AE997FE002807CDDE97ED53EE97 2020 DATA 0608C53AE797FE00280DED5BEA973E 2030 DATA 10CD7F97ED53EA973AE897FE00280D 2040 DATA ED5BEC973E1ACD7F97ED53EC973AE9 2050 DATA 97FE00280DED5BEE973E24CD7F97ED 2060 DATA 53EE97C110C0C9D5329D9732A09732 2070 DATA CF97DD2AF097FD2AF89711F89721F0 2080 DATA 970E5C0608FD7E00DD7700DD23FD23 2090 DATA 10F41313ED53B897232322B497DD2A 2100 DATA F097FD2AF0970D20DCD10E0421A898 2110 DATA 22C897DD2AA89806081ADD7700DD23 2120 DATA 1310F7232322C8970D20E9C93D11CC 2130 DATA 988257C90000000000000000000000 2140 DATA gjkey 2150 DATA F0F0F0F0F0F0F0F0A00000CFCF0000 2160 DATA 50A00047CFCF8B0050A001CFCFCFCF 2170 DATA 0250A00300CFCF000350A0038B458A 2180 DATA 470350A147CF0303CF8B52A1471065 2190 DATA 9A208B52A1CF9A6D9A6DCF52A1CFCF 2200 DATA CFCFCFCF52A1CFCFCFCFCFCF52A1CF 2210 DATA CF458ACFCF52A0CFCF8A45CFCF50A0 2220 DATA CF8ACFCF45CF50A0CF45CFCF8ACF50 2230 DATA A045CECFCFCD8A50A045CFCCCCCF8A 2240 DATA 50A000CF8A45CF0050A0044DCFCF8E 2250 DATA 0850A0C30CCFCF0CC350E1C3865CAC 2260 DATA 49C3D2E1C38654A849C3D2E1C38208 2270 DATA 0441C3D2E1C3865CAC49C3D2E1C3C3 2280 DATA 5CACC3C3D2F0F0F0F0F0F0F0F0F050 2290 DATA F000500050F0F050F0A0F050A0F0F0 2300 DATA 50F0A0F00050F0F050F0A0F050A0F0 2310 DATA F0005000500050F0F0F0F0F0F0F0F0 2320 DATA F03C3C3C3C3C3C3C3C280041030608 2330 DATA 00142800C303030C00142841C30303 2340 DATA 03081428C383C30303061428C343C3 2350 DATA C3C303146983C7CFCFCB031C6906CF 2360 DATA CFCFCF831C6947CFCFCFCF8B1C694D 2370 DATA CF478BCFCB16694D8BCFCF478B1C69 2380 DATA 4D16CF9E8B8B1669479E659E658B16 2390 DATA 694DCF8ACFCF8B16694DCF45CFCF8B 2400 DATA 166947CF8A45CF8B166947CFCFCFCF 2410 DATA 8B166947CFCCCDCF8B166947CE0C4C 2420 DATA CF8B1C6943CF0045CFC31628C3CF00 2430 DATA 45CFC31428C3CFCCCDCF83142841C7 2440 DATA CFCFCB8214280045CFCF8A00142800 2450 DATA 00CFCF0000143C3C3C3C3C3C3C3C68 2460 DATA C094C0C0683C94683C3C9468689494 2470 DATA 683C3C946868C094683C3C94686868 2480 DATA 9468C094C0C0683C943C3C3C3C3C3C 2490 DATA 3C3CCCCCCCCCCCCCCCCC880001CFCF 2500 DATA 8A00448800CFCFCF8B00448845CFC7 2510 DATA CF8307448807CFCFCFCF0244888BCF 2520 DATA 45CF8A8B44894F8A8ACF45014E8947 2530 DATA CF30CF308B4E8807CF34CF34CF4689 2540 DATA 4FCBCF8ACFC74688CFCFCF8ACFCF44 2550 DATA 89CFCFCFCF45CF4488C7CF8ACF8ACF 2560 DATA 4688C7CFCF0000CF4689C7CFCFCFCF 2570 DATA CF448847CF8A00CF8B448841CF45CF 2580 DATA 458A448841CFCECCCF8A448800C78A 2590 DATA 00CF00448800C7CFCFCF00448811C7 2600 DATA CFCFCF2244880367CBC79B03448903 2610 DATA 33CFCF33034689031376B923034689 2620 DATA 030356A9030346CCCCCCCCCCCCCCCC 2630 DATA 98CCCC98649830CC98CCCC649898CC 2640 DATA 6498CCCC30309830CC98CCCC649898 2650 DATA CC6498306464989830CCCCCCCCCCCC 2660 DATA CCCCCCC0C0C0C0C0C0C0C0800041C3 2670 DATA 038200408000C303030B0040804143 2680 DATA 0343830A4080018203034387408082 2690 DATA 43878A8307408082430FCF41034080 2700 DATA C382CFCF8A01408041C78ACF458A40 2710 DATA 8082CF45CF8ACF4080C78A208A65CF 2720 DATA 4080CFCFCFCF45CF4080CFCFCFCF8A 2730 DATA 8A4080C7CFCFCFCF00408041CFCF00 2740 DATA CFCF408041CFCFCF00CF40800045CF 2750 DATA CFCF004080008A8ACC8800408000CF 2760 DATA 45CC8800408014CF45CF9E0040803C 2770 DATA CF458A9E3C40942D4F8ACF8A3C6894 2780 DATA 2D0F0ACF8F3C68943C2D0A00053C68 2790 DATA 943C2D0F001E3C68C0C0C0C0C0C0C0 2800 DATA C0943C683C68943C6894C0C0689494 2810 DATA C068943C686894943C68C0C0686894 2820 DATA 94C0C0943C683C6894C0C0C0C0C0C0 2830 DATA C0C0C0C00C0C0C0303060C0C0C0C0C 2840 DATA 1212060C0C080C041212060C0C080C 2850 DATA 041212060C0C0C000C1212060C0C0C 2860 DATA 000C0321060C0C0C000C0303060C0C 2870 DATA 0C000C1230060C0C080C041212060C 2880 DATA 0C080C041212060C0C0C0C0C121206 2890 DATA 0C0C0C0C0C1230060C0CC0C0C00303 2900 DATA 42C0C0C0C0C0123042C0C0C0C0C003 2910 DATA 2142C0C0C0C0C0032142C0C0C0C0C0 2920 DATA 032142C0C0C0C0C0032142C0C03C3C 2930 DATA 3C0303163C3C3C3C3C1230163C3C3C 2940 DATA 3C3C1203163C3C3C3C3C1221163C3C 2950 DATA 3C3C3C1203163C3C3C3C3C1230163C 2960 DATA 3CCCCCCC030346CCCCCCCCCC123046 2970 DATA CCCC000000120302CCCC3333331230 2980 DATA 1344CC33333303121322CC00000012 2990 DATA 301333440000000303133322333333 3000 DATA 3333333333FCFCFCFCFCFCFCFCACFC 3010 DATA 5CFCFCFCFCFCACFC5CFCFCFCFCFCAC 3020 DATA 5C5CFCFCFCFCFCAC5C5CFCFCFCFCFC 3030 DATA ACAC5C0C5CFCFCFCACAC5C5C5CFCFC 3040 DATA FCACFC5C5C5CFCFCFCACFC5C0C5C5C 3050 DATA FCFCFCFCFCFCFCFCFCFCFCFCFCFCFC 3060 DATA FCFCFCAC0C0C0C0C0C0C5CFCFCFCFC 3070 DATA FCFCFCFCFCFCB8FCFC3074FCFCFC90 3080 DATA FCE8C030FCFCE890FCC0D4C074FCFC 3090 DATA 90FC90FCE874FCFC90FC90FCE874FC 3100 DATA FC90FC90FCE874FCFC90FC90FCE874 3110 DATA FCFC90FC90FCE874FCFC90FC90FCE8 3120 DATA 74FCFC90FC90FCE874FCFC90FC90FC 3130 DATA E874FCFC90FC90FCE874FCFC90FC90 3140 DATA FCE874FCFC90FC90FCE874FCFC90FC 3150 DATA 90FCE874FCFC90FC9074C074FCE890 3160 DATA 74E830C0FCFCE8C0D4FCC0D4FCFCFC 3170 DATA FCFCFCFCFCFC333333333333333322 3180 DATA 880000000044116688103030304499 3190 DATA 661030303030209922103830303420 3200 DATA 1122343E30303D381122343E30303D 3210 DATA 381122303830303430112230386498 3220 DATA 343011223030CCCC303011222064CC 3230 DATA CC981011221064CCCC982011223030 3240 DATA CCCC30301122643064983098112264 3250 DATA 9830306498112230CC3030CC301166 3260 DATA 1064CCCC982099661030CCCC302099 3270 DATA 660030303030009966540030300028 3280 DATA 996614FC0000FC28996654BCFCFC7C 3290 DATA A8996614BCA8547C28996614FC4488 3300 DATA FC28992254A8CCCC54A81133333333 3310 DATA 333333332233331133000011221122 3320 DATA 113311333322000011330000332222 3330 DATA 111133113333223333113300001133 3340 DATA 333333333333330303030303030303 3350 DATA 020000000000000102CC883333143C 3360 DATA 0146CC883333143C2946CC88333314 3370 DATA 3C29020000000000000146CC883333 3380 DATA 143C2946CC883333143C2902CC8833 3390 DATA 33143C010200000000000001030303 3400 DATA 030303030303300330210330031203 3410 DATA 212112120321120303211212030312 3420 DATA 030321121203031203033021120303 3430 DATA 120303210312030312032121031203 3440 DATA 210330032103033003030303030303 3450 DATA 030303030303030303030312031221 3460 DATA 031203033003211203300303300321 3470 DATA 120330031212032103121203121203 3480 DATA 302112120312302121121230210312 3490 DATA 032112031203031203211203120303 3500 DATA 120312210312030303030303030303 3510 DATA 030303030303030300000000000000 3520 DATA gjkey 3530 DATA 639,0,639,399,0,399,0,0 3540 DATA 356,120,356,324,120,324,120 3550 DATA 120,356,332,356,387,120,387 3560 DATA 120,332,28,328,28,64,12,64 3570 DATA 12,12,80,12,80,28,12,28,80 3580 DATA 28,80,64,66,64,66,328,78,356 |