SCREEN 9 70 DIM L$(12): DIM shade AS LONG GOSUB Colours 80 'PLAY "mb ml o3 l3 d c l6 d e l3 c < b a l6 b > c < a b" 'PLAY "g a e f l3 g p6 l6 g >d l2 c" GOSUB 18000: SLEEP 3 90 RANDOMIZE TIMER 100 DIM t$(108), t1$(108), B$(13, 10) 140 DEF FNz (x) = LEN(STR$(x)) - 1 150 FOR q = 1 TO 7 READ h$(q), bv(q), pv(q), mn(q) 151 hi$(q) = LEFT$(h$(q), 1) 155 sa(q) = 25 NEXT 160 tr = 108: FOR q = 1 TO 108: READ t1$(q): NEXT 170 hw$ = "LTAFWCI": ha = 7 195 CLS : LOCATE 8, 10: COLOR 1, 0 PRINT "What is your name (max 8 characters)"; : INPUT nm$ nm$ = LEFT$(nm$, 8) 197 x = (12 - LEN(nm$)) / 2: FOR q = 1 TO x: x$ = x$ + " ": NEXT 200 REM p$(1)=(1) = x$ + nm$ 205 PRINT : PRINT TAB(10); "How many computer opponents do you want, "; 210 PRINT nm$; " (2 - 5)"; : INPUT a 220 IF a < 2 OR a > 5 GOTO 205 221 PRINT : PRINT TAB(10); "Do you want to see other players': "; REM P = POS(0) 222 PRINT : PRINT TAB(15); "share holdings"; : INPUT a$ 223 IF a$ = "y" THEN sk = 1 224 PRINT TAB(15); "cash holdings"; : INPUT a$ 225 IF a$ = "y" THEN ck = 1 226 PRINT TAB(15); "total worth"; : INPUT a$ 227 IF a$ = "y" THEN vk = 1 228 IF sk OR ck OR vk THEN cheatflg = 1 230 np = a + 1 240 FOR q = 1 TO np: m(q) = 6000: NEXT 250 PRINT : PRINT TAB(10); "OK, "; nm$; ", you are player no. 1" 260 SLEEP 3: CLS 300 REM board LINE (1, 10)-(321, 159), 14, BF FOR q = 1 TO 9 n$ = RIGHT$(STR$(q), 1) LOCATE q + 2, 2 COLOR 1: PRINT n$ NEXT L$ = "ABCDEFGHIJKL" FOR q = 1 TO 12 c$ = MID$(L$, q, 1) LOCATE 2, q * 3 + 2: PRINT c$ NEXT: LOCATE 14, 1 FOR x = 24 TO 312 STEP 24 LINE (x, 29)-(x, 155), 2 NEXT FOR y = 29 TO 155 STEP 14 LINE (24, y)-(312, y), 2 NEXT GOSUB Statswindow: GOSUB Holdwindow: GOSUB Playwindow: GOSUB Stats 344 om(n3(1)) = m(n3(1)) + b1 400 REM tile shuffling 430 FOR q = 1 TO 108 440 x = INT(RND(1) * 108 + 1): IF t1$(x) = "" GOTO 440 450 t$(q) = t1$(x): t1$(x) = "" 460 NEXT 469 REM set share distrib factor 470 FOR q = 1 TO np 475 x = INT(RND(1) * 3 + 1) 480 df(q) = x + 2 NEXT GOSUB Playwindow 500 REM draw first np tiles & find starter 510 LOCATE 2, 45: COLOR 13: PRINT "Players draw for starting..." 520 bt = 21 FOR q = 1 TO np 530 LOCATE q + 3, 48: COLOR 13: PRINT "Player"; q; "draws tile "; 540 COLOR 1: PRINT t$(q); 550 t$ = t$(q): tr = tr - 1: fincol = 1: GOSUB 11000: GOSUB 13040 561 REM P(q) = P 565 B$(v, h) = "o" 570 IF v + h < bt THEN bt = v + h: bp = q 575 GOSUB 11110 580 NEXT q 591 COLOR 1: LOCATE np + 5, 52: PRINT "Player"; bp; "starts" t = np: pl = bp 600 SLEEP 3 700 REM players draw tiles 710 GOSUB Playwindow: REM CLS : LINE (0, 0)-(288, 96), 10, BF 711 LOCATE 3, 45: COLOR 13: PRINT "Players now draw 6 tiles each" 715 LOCATE 5, 45: COLOR 1: PRINT "Your tiles, money and shares" 716 LOCATE 6, 45: PRINT "are shown in the window below" 720 FOR q = 1 TO np FOR j = 1 TO 6 730 t = t + 1: th$(q, j) = t$(t): tr = tr - 1 NEXT NEXT 736 COLOR 2: LOCATE 11, 42 plstr$ = RIGHT$(STR$(pl), 1): PRINT plstr$; 740 GOSUB 17000: REM Humtiles 760 IF t > 6 * (np + 1) + 1 GOTO 980 780 GOSUB 13200 790 GOSUB Pause 980 GOSUB Colours: IF pl = 1 GOTO 7000 991 GOSUB Playwindow: LOCATE 2, 50 COLOR 1: PRINT " Player"; pl; "'s turn": culi = CSRLIN 1000 REM play 1010 q = 0: Im = 0: pn(pl) = 0 FOR j = 1 TO 7: Im(j) = 0: so(j) = 0: NEXT 1015 q = q + 1: IF q = 7 GOTO 1500 1017 IF th$(pl, q) = "" GOTO 1015 1020 lc(q) = 0: pm = 0: lc = 0: h3 = 0: h4 = 0: t$ = th$(pl, q) 1021 GOSUB 11000: FOR j = 1 TO 3: pm(j) = 0: NEXT 1025 ut = 0 1030 v(q) = v: h(q) = h: REM P(q) = P 1040 lr$ = B$(v, h - 1): IF lr$ = "" GOTO 1060 1050 GOSUB 12000 1060 lr$ = B$(v + 1, h): IF lr$ = "" GOTO 1080 1070 GOSUB 12000 1080 lr$ = B$(v, h + 1): IF lr$ = "" GOTO 1100 1090 GOSUB 12000 1100 lr$ = B$(v - 1, h): IF lr$ = "" GOTO 1115 1110 GOSUB 12000 1115 lc(q) = lc: IF pl = 1 GOTO 7060 1120 IF lc = 0 AND pm = 0 THEN ts(q) = 5: GOTO 1190 1130 IF lc > 0 AND pm = 0 THEN GOSUB 12100 1131 REM 'o' link, no possible mergers - new hotel possibility 1135 IF ts(q) = -5 GOTO 1015 1140 IF ts(q) = 7 THEN bt = q: bs = 7: GOTO 1540 1150 IF pm >= 2 THEN GOSUB 12250 1155 IF ut = 1 GOTO 1200 1160 IF pm = 1 THEN GOSUB 12500 1190 GOTO 1015 1200 REM unplayable tile 1205 IF tr < 2 THEN th$(pl, q) = "": ts(q) = -5: GOTO 1015 1210 LOCATE 4, 45: COLOR 13: PRINT "I have to change my tile "; 1212 COLOR 1: PRINT th$(pl, q): COLOR 13 LOCATE 5, 53: PRINT "(unplayable)": SLEEP 2 COLOR 1: LOCATE 4, 45: PRINT " " LOCATE 5, 53: PRINT " " 1220 t = t + 1: tr = tr - 1: th$(pl, q) = t$(t): GOTO 1020 1500 REM select comp's best 1510 bt = 0: bs = -1: FOR q = 1 TO 6 1520 IF ts(q) > bs THEN bs = ts(q): bt = q 1530 NEXT: IF bs > 0 GOTO 1540 1533 LOCATE 4, 44: : COLOR 13: PRINT " Sorry! No playable tiles." 1535 LOCATE 5, 44: COLOR 1: PRINT " Turn passes to Purchases" SLEEP 2: GOTO 5000 1540 v = v(bt): h = h(bt): GOSUB 13000: REM announcement SLEEP 2 1550 ON bs GOTO 3200, 3200, 2400, 2400, 2800, 3200, 4200 2400 REM add tile 2410 e1 = 0: x = hh(bt): B$(v(bt), h(bt)) = hi$(x) 2420 hs(x) = hs(x) + 1: v = v(bt): h = h(bt) fincol = x + 2: cgf = 1: GOSUB 13040 2430 IF hs(x) = 41 THEN eb = 1: GOTO 2440 2435 IF hs(x) = 11 THEN e1 = 1 2440 GOSUB 11500: COLOR fincol lox = 59 - (LEN(h$(x)) + 12) / 2: LOCATE 6, lox: PRINT h$(x); " chain grows": IF hs(x) < 11 GOTO 2450 2445 IF sc(x) = 0 THEN sc(x) = 1: LOCATE 7, 44 PRINT " and is now safe from takeover." END IF 2450 GOSUB 11800: SLEEP 2 2460 IF eb = 0 OR fb = 1 GOTO 2500 2470 fb = 1: GOSUB 15750: GOTO 5000 2500 IF es = 0 AND e1 = 1 THEN GOSUB 15500 2510 IF es = 0 OR et = 1 GOTO 5000 2520 GOSUB 10100: et = 1: GOSUB 15760: GOTO 5000 2800 REM isolated tile 2810 B$(v(bt), h(bt)) = "o": fincol = 1: GOSUB 13040 GOSUB 13100: GOTO 5000 3200 REM merger 3220 GOSUB Playwindow: REM cln = CSRLIN + 1 FOR q = 1 TO 20 3221 LOCATE 2, 55: COLOR 1: PRINT " " 3230 FOR j = 1 TO 5000: NEXT j 3240 LOCATE 2, 55: PRINT "MERGER!" 3241 FOR j = 1 TO 5000: NEXT j NEXT q 3242 IF hs(mp(bt, 1)) <> hs(mp(bt, 2)) OR pl > 1 GOTO 3250 3245 GOSUB 13500 3250 h1 = mp(bt, 1): h2 = mp(bt, 2): h3 = mp(bt, 3) tole = LEN(h$(h1)) + LEN(h$(h2)): lox = 60 - (tole + 12) / 2 3255 LOCATE CSRLIN + 1, lox: COLOR h1 + 2: PRINT h$(h1); COLOR 1: PRINT " takes over "; 3256 COLOR h2 + 2: PRINT h$(h2): COLOR 1 3260 IF h3 > 0 THEN GOSUB 10200 3262 b1 = sv(h2) * 10: b2 = b1 / 2: REM boni 3265 LOCATE CSRLIN + 1, 47: PRINT "Bonuses are "; COLOR 2: PRINT "$"; b1; : COLOR 1: PRINT "& "; COLOR 2: PRINT "$"; b2: GOSUB Pause: COLOR 1 3270 GOSUB Playwindow: LOCATE 2, 49: PRINT "SHARES HELD IN MERGEE:" 3275 LOCATE 3, 52: PRINT "Player"; 3276 LOCATE 3, 61: PRINT "Shares" 3280 FOR q = 1 TO np: n1(q) = s(q, h2): NEXT: count = 0 3285 FOR q = 1 TO np 3290 n = n1(q) 3295 FOR j = 1 TO np 3300 IF n1(j) >= n THEN n = n1(j): xx = j 3305 NEXT j: n2(q) = n: n1(xx) = 0: n3(q) = xx 3310 IF n2(q) > 0 THEN LOCATE CSRLIN, 54: PRINT n3(q); LOCATE CSRLIN, 63: PRINT n2(q): count = count + 1 END IF 3315 NEXT q 3340 IF count < 6 THEN LOCATE CSRLIN + 1, 44: ELSE LOCATE CSRLIN, 44 IF n2(2) > 0 GOTO 3370 3350 LOCATE , 49: PRINT "Player"; n3(1); "scoops pool!" LOCATE CSRLIN, 54: PRINT "Gets "; COLOR 2: PRINT "$"; b1 + b2: COLOR 1 3360 m(n3(1)) = m(n3(1)) + b1 + b2: GOTO 3500 3370 IF n2(1) <> n2(2) OR n2(2) <> n2(3) GOTO 3400 3375 nw = 3: IF n2(3) = n2(4) THEN nw = 4 3380 x = INT((b1 + b2) / nw) FOR q = 1 TO nw: m(n3(q)) = m(n3(q)) + x: NEXT 3385 LOCATE , 54: PRINT RIGHT$(STR$(nw), 1); "-way split." LOCATE CSRLIN, 44: PRINT " Players"; 3387 IF nw = 4 THEN PRINT n3(1); n3(2); n3(3); "&"; n3(4); : GOTO 3395 3390 PRINT n3(1); n3(2); "&"; n3(3); 3395 PRINT "get"; : COLOR 2: PRINT x; COLOR 1: PRINT "each": GOTO 3500 3400 IF n2(1) <> n2(2) GOTO 3440 3410 x = (b1 + b2) / 2: FOR q = 1 TO 2: m(n3(q)) = m(n3(q)) + x: NEXT 3420 LOCATE , 55: PRINT "Share-out." 3421 LOCATE CSRLIN, 44: PRINT "Players"; n3(1); "&"; n3(2); "get"; 3430 COLOR 2: PRINT " $"; x; : COLOR 1: PRINT "each": GOTO 3500 3440 m(n3(1)) = m(n3(1)) + b1 3450 LOCATE , 50: PRINT "Player"; n3(1); "gets "; COLOR 2: PRINT "$"; b1: COLOR 1 3460 IF n2(2) <> n2(3) GOTO 3490 3465 nw = 2: IF n2(3) = n2(4) THEN nw = 3: IF n2(4) = n2(5) THEN nw = 4 3470 x = INT(b2 / nw) FOR q = 2 TO nw + 1: m(n3(q)) = m(n3(q)) + x: NEXT 3475 LOCATE CSRLIN, 44: PRINT "Players"; IF nw = 4 THEN PRINT n3(2); n3(3); n3(4); "&"; n3(5) LOCATE CSRLIN, 52: GOTO 3485 END IF IF nw = 3 THEN PRINT n3(2); n3(3); "&"; n3(4); : GOTO 3485 3480 PRINT n3(2); "&"; n3(3); 3485 PRINT "get"; : COLOR 2: PRINT " $"; x; COLOR 1: PRINT "each": GOTO 3500 3490 m(n3(2)) = m(n3(2)) + b2 3495 LOCATE CSRLIN, 50: PRINT "Player"; n3(2); "gets "; COLOR 2: PRINT "$"; b2 3500 GOSUB 13200: GOSUB 10000 3600 GOSUB Playwindow: LOCATE 2, 51: COLOR 1: PRINT "MERGER DECISIONS:" 3605 hs(h1) = hs(h1) + hs(h2) + 1: x = h1: GOSUB 11800 3607 hs(h2) = 0: hu(h2) = 0: ha = ha + 1 IF sa(h2) > 0 THEN sa = sa - 1 3610 sc = 0: culi = 2 FOR z = pl TO pl + np - 1 ts = 0: ns = 0: NE = 0: nk = 0: n% = 0 3620 q = z: IF q > np THEN q = z - np 3625 IF s(q, h2) = 0 GOTO 4057 culi = culi + 1 3629 REM selling 3630 m = m(q): n = 0: ss = s(q, h2) 3631 IF culi > 8 OR (q = 1 AND culi > 7) THEN GOSUB Pause: GOSUB Playwindow: culi = 2 END IF LOCATE culi, 49: COLOR 1: PRINT "Player"; q; "("; ss; IF ss > 1 THEN PRINT "shares)." ELSE PRINT "share)." COLOR h2 + 2 3635 IF q = 1 GOTO 7100 3638 culi = culi + 1: IF sa = 0 GOTO 3739 3640 FOR j = 1 TO 7 IF hu(j) = 0 OR sa(j) = 0 GOTO 3660 3650 n = n + sv(j) 3660 NEXT j: av = n * 3 / sa 3670 IF av <= m GOTO 3739: REM test money 3690 ns = ns + 1: IF m + ns * sv(h2) < av GOTO 3690 3700 IF ns >= s(q, h2) THEN ns = s(q, h2) 3710 s(q, h2) = s(q, h2) - ns: sa(h2) = sa(h2) + ns m(q) = m + sv(h2) * ns 3720 IF s(q, h2) = 0 OR s(q, h2) - nk = 0 GOTO 3980 3739 REM changing 3750 IF q = 1 GOTO 3820 3755 IF sa(h1) = 0 OR s(q, h2) = 1 GOTO 3900 3760 IF hs(h1) < 11 OR sv(h1) - sv(h2) >= 300 GOTO 3799 3770 IF s(q, h1) >= 14 - np OR s(q, h1) < (25 - sa(h1)) / np - 4 GOTO 3900 3799 REM exchange 3800 NE = INT(s(q, h2) / 2) 3810 IF sa(h1) < NE THEN NE = NE - 1: GOTO 3810 3820 s(q, h2) = s(q, h2) - 2 * NE: s(q, h1) = s(q, h1) + NE 3830 sa(h2) = sa(h2) + 2 * NE: sa(h1) = sa(h1) - NE IF sa(h1) = 0 THEN sa = sa - 1 3835 IF q = 1 GOTO 4050 3840 LOCATE culi, 44 PRINT " Changes"; : IF 2 * NE = ss THEN PRINT " all"; : GOTO 4050 3850 PRINT 2 * NE; : IF s(q, h2) = 0 GOTO 3980 3900 REM keeping 3901 rs = 0: IF pn(pl) = 0 AND t > 72 THEN rs = s(q, h2): GOTO 3970 3910 IF s(q, h2) = 1 THEN nk = 1: GOTO 3950 3920 IF s(q, h2) = 2 THEN rn = 2: GOTO 3940 3930 rn = 3 3940 nk = INT(RND(1) * rn + 1) 3950 LOCATE culi, 55 PRINT "Keeps"; nk; : REM GOSUB Pause IF nk = s(q, h2) GOTO 3980 3960 rs = s(q, h2) - nk 3970 ts = ns + rs: ns = rs: GOTO 3710 3980 IF ts = 0 THEN ts = ns: IF ts = 0 THEN PRINT : GOTO 4050 3985 IF q = 1 GOTO 4030 3990 IF ts < ss THEN culi = culi + 1 LOCATE culi, 50: PRINT "Sells"; IF ts = ss THEN PRINT " all"; : GOTO 4030 4000 PRINT ts; 4030 ac = ts * sv(h2): IF q = 1 THEN ac = ns * sv(h2): GOTO 4050 4035 PRINT " for "; : COLOR 2 PRINT "$"; RIGHT$(STR$(ac), FNz(ac)); : COLOR 1 4040 REM ac = ts * sv(h2): IF q = 1 THEN ac = ns * sv(h2) 4050 IF q = 1 THEN GOSUB 13200 4055 GOSUB Stats 4057 NEXT z 4060 IF h3 = 0 GOTO 4100 4070 hs(h1) = hs(h1) - 1: GOSUB 10000 4080 GOSUB Playwindow: COLOR 1 LOCATE 2, 60 - (LEN(h$(h3)) + 17) / 2: PRINT "Merger 2: t/o of "; 4081 COLOR h3 + 2: PRINT h$(h3): COLOR 1 4090 h4 = h2: h2 = h3: h3 = 0: GOTO 3262 4100 hs(h2) = 0: hs(h4) = 0: sv(h2) = 0: sv(h4) = 0: GOSUB Stats 4105 B$(v(bt), h(bt)) = hi$(h1) 4106 v = v(bt): h = h(bt): fincol = h1 + 2: GOSUB 13040 4110 FOR q = 1 TO 12 FOR z = 1 TO 9 4120 IF B$(q, z) = hi$(h2) GOTO 4140 4130 IF h4 = 0 GOTO 4150 4135 IF B$(q, z) <> hi$(h4) GOTO 4150 4140 B$(q, z) = hi$(h1) 4141 v = q: h = z: fincol = h1 + 2: GOSUB 13040 4150 NEXT z NEXT q: IF lc(bt) > 0 THEN GOSUB 10500: REM necessary? ***** FOR q = 1 TO 12 FOR z = 1 TO 9 IF B$(q, z) = hi$(h1) THEN GOSUB Sweeptest NEXT z NEXT q 4160 IF eb = 1 OR es = 1 GOTO 4190 4165 IF hs(h1) > 40 THEN eb = 1: GOSUB 15750: GOTO 5000 4170 IF hs(h1) < 11 GOTO 4190 4172 IF sc(h1) = 1 GOTO 4174 4173 sc(h1) = 1: COLOR h1 + 2: lox = 60 - (LEN(h$(h1)) + 12) / 2 culi = culi + 1: LOCATE culi, lox: PRINT h$(h1); : COLOR 1 PRINT " is now safe": SLEEP 2 4174 GOSUB 15500 4175 IF es = 0 OR et = 1 GOTO 4190 4180 GOSUB 10000: et = 1: GOSUB 15760: GOTO 5000 4190 GOSUB 10000: GOTO 5000 4200 REM new hotel 4220 LOCATE 8, 49 - LEN(h$(x)) / 2 COLOR 1: PRINT "I'll build"; 4225 PRINT " the hotel "; : COLOR x + 2: PRINT h$(x) 4226 LOCATE 10, 47 COLOR 1: IF pl = 1 THEN PRINT "You "; : GOTO 4235 4230 PRINT " I "; 4235 PRINT "get one bonus share" 4240 hu(x) = 1: ha = ha - 1: B$(v(bt), h(bt)) = hi$(x) 4241 s(pl, x) = s(pl, x) + 1: sa(x) = sa(x) - 1 GOSUB Stats: GOSUB 13200 4250 IF sa(x) > 0 THEN sa = sa + 1 4261 hs(x) = 1: GOSUB 13100 4265 GOSUB 11500: GOSUB 11800: GOSUB Pause 4270 IF es = 0 OR eb = 1 GOTO 5000 4280 es = 0: GOSUB Pause: GOSUB Playwindow: LOCATE 6, 44: COLOR 1 PRINT "Chains are no longer all safe" 4290 LOCATE CSRLIN, 47: PRINT "Game cannot end just yet.": SLEEP 3 5000 REM share buying 5010 cp = 0: ca = 0: pu = 0: rq = 3: GOSUB 10110 5011 GOSUB Playwindow: LOCATE 2, 54: COLOR 1: PRINT "Purchases:" 5015 IF pl > 1 GOTO 5500 5016 LOCATE 3, 48: PRINT "(Press <0> to abort)": LOCATE 4, 44 5020 IF qf = -1 THEN qf = 0: GOTO 5035 5025 IF cheatflg = 1 THEN GOSUB 10050: IF a$ = "c" THEN GOSUB Cheat 5035 IF sa = 0 THEN LOCATE 6, 49: COLOR 1: PRINT "No shares available": SLEEP 2: GOTO 8000 END IF 5037 GOSUB 16000: IF m(1) >= lp GOTO 5040 5038 LOCATE 6, 46: COLOR 2 PRINT "Insufficient cash to buy": SLEEP 2: GOTO 8000 5040 LOCATE 5, 54: COLOR 1 PRINT "HOTEL No.": LOCATE 6, 54: PRINT "----- ---" 5050 COLOR 1: LOCATE CSRLIN, 55: PRINT "[ ]"; : GOSUB 10700 5060 GOSUB 10100: IF a$ = "0" GOTO 5190 5070 FOR q = 1 TO 7 IF a$ = MID$(hw$, q, 1) GOTO 5090 5080 NEXT: GOTO 5060 5090 COLOR q + 2: LOCATE posy, posx: PRINT hi$(q); 5091 IF hu(q) = 1 AND sa(q) > 0 GOTO 5120 5095 IF hu(q) = 0 THEN PRINT " Inoperative"; : SLEEP 1 LOCATE posy, posx: PRINT " "; : GOTO 5050 END IF 5100 IF sa(q) = 0 THEN PRINT " None left"; : SLEEP 1 LOCATE posy, posx: PRINT " "; : GOTO 5050 END IF 5110 GOTO 5050 5120 COLOR 1: LOCATE CSRLIN, 62: PRINT "[ ]"; : GOSUB 10700 5130 GOSUB 10100: a = VAL(a$): IF a < 1 OR rq - a < 0 GOTO 5130 5140 LOCATE posy, posx: COLOR q + 2: PRINT a$: IF a <= sa(q) GOTO 5160 5150 LOCATE CSRLIN, 55: PRINT "Only"; sa(q); "left"; : SLEEP 2 LOCATE CSRLIN, 55: PRINT " "; LOCATE posy, posx: PRINT " "; 5155 GOTO 5120 5160 pu = pu + 1: pu(pu) = q: nb(pu) = a 5170 rq = rq - a: IF rq = 0 GOTO 5190 5180 GOTO 5050 5190 IF pu = 0 GOTO 5870 5200 COLOR 1: LOCATE CSRLIN + 1, 47 PRINT "OK (y/n)? [ ]"; : GOSUB 10700 5201 GOSUB 10100: LOCATE posy, posx: PRINT a$; : IF a$ = "Y" GOTO 5220 5210 LOCATE , 62: GOTO 5245 5220 FOR j = 1 TO pu: ca = ca + sv(pu(j)) * nb(j): NEXT 5230 IF m(1) >= ca GOTO 5250 5240 LOCATE CSRLIN + 1, 47: COLOR 2: PRINT "Not enough cash!"; 5245 PRINT " Try again": SLEEP 3: GOTO 5000 5250 COLOR 2: LOCATE CSRLIN, 62 PRINT "(cost $"; RIGHT$(STR$(ca), FNz(ca)); ")" 5260 FOR q = 1 TO pu n = pu(q): a = nb(q) 5270 sa(n) = sa(n) - a: s(1, n) = s(1, n) + a IF sa(n) = 0 THEN sa = sa - 1 5280 NEXT m(1) = m(1) - ca: GOSUB Stats: GOSUB 13200: GOSUB Pause: GOTO 8000 5500 REM rnd hotel nos. 5502 IF sa = 0 THEN LOCATE 6, 49: COLOR 1: PRINT "No shares available" SLEEP 2: GOTO 8000 END IF 5505 FOR q = 1 TO 7: q(q) = q: NEXT 5507 IF Im > 0 GOTO 5555 5510 FOR q = 1 TO 7 5520 xx = INT(RND(1) * 7 + 1): IF q(xx) = 0 GOTO 5520 5530 so(xx) = q: q(xx) = 0 5540 NEXT: GOTO 5600 5555 FOR q = Im + 1 TO 7 5560 xx = INT(RND(1) * 7 + 1) 5565 FOR j = 1 TO Im IF so(j) = xx GOTO 5560 5570 NEXT j 5575 IF q(xx) = 0 GOTO 5560 5580 so(q) = xx: q(xx) = 0 5585 NEXT q 5600 REM set cluster factors 5605 IF sa = 1 THEN dc = 3: GOTO 5650 5610 IF sa = 2 THEN dc = INT(RND(1) * 2 + 2): GOTO 5650 5620 dc = INT(RND(1) * 3 + 1) 5650 REM estab quota gap 5660 y = 0: da = 0: FOR q = 1 TO 7 5670 IF s(pl, q) > 0 AND sa(q) > 0 THEN y = y + 1 5680 NEXT: da = df(pl) - y + Im 5700 REM test for buy 5710 rq = 3 FOR q = 1 TO 7 a = so(q) 5713 IF s(pl, a) < 50 / (np + 1) GOTO 5720 5715 xx = INT(RND(1) * 4 + 1): IF xx > 1 GOTO 5860 5720 IF hu(a) = 0 OR sa(a) = 0 GOTO 5860 5730 IF s(pl, a) = 0 AND da <= 0 GOTO 5860 5740 IF sa(a) < dc THEN ab = sa(a): GOTO 5760 5750 ab = dc 5760 IF m(pl) < sv(a) * ab THEN ab = ab - 1: GOTO 5760 5770 IF ab = 0 GOTO 5860 5800 REM buy 5805 IF s(pl, a) = 0 THEN da = da - 1: REM reduce da if new purchase 5810 s(pl, a) = s(pl, a) + ab: sa(a) = sa(a) - ab IF sa(a) = 0 THEN sa = sa - 1 5820 cp = sv(a) * ab: ca = ca + cp: m(pl) = m(pl) - cp 5830 COLOR a + 2: LOCATE CSRLIN + 1, 53: PRINT ab; h$(a) 5840 rq = rq - ab: IF rq = 0 GOTO 5880 5850 IF dc > 1 THEN dc = rq 5860 NEXT q 5870 IF rq = 3 THEN LOCATE CSRLIN + 1, 58: PRINT "None": GOSUB Pause: GOTO 8000 END IF 5880 COLOR 2: LOCATE CSRLIN + 1, 54 PRINT "(cost "; RIGHT$(STR$(ca), FNz(ca)); ")" GOSUB Stats: GOSUB Pause: GOTO 8000 7000 REM human play 7010 GOSUB Playwindow: LOCATE 2, 50 7011 COLOR 1: PRINT " Your turn, "; : PRINT nm$ 7012 ut = 0 FOR q = 1 TO 6 t$ = th$(1, q): IF t$ = "" GOTO 7018 7014 GOSUB 11000: pv(q) = v: ph(q) = h: REM coords hum.tiles 7015 fx = v * 24 + 9: fy = h * 14 + 20 7016 ON q GOSUB One, Two, Three, Four, Five, Six 7018 NEXT q 7020 IF cheatflg = 1 THEN GOSUB 10050: IF a$ = "c" THEN GOSUB Cheat 7025 LOCATE 4, 53: COLOR 13: PRINT "Tile no: "; 7026 COLOR 1: PRINT "[ ]"; : GOSUB 10700 7030 GOSUB 10100: bt = VAL(a$) 7034 IF a$ = "P" THEN COLOR 13: PRINT a$: SLEEP 2: GOTO 5000 7040 IF bt < 1 OR bt > 6 GOTO 7030 7045 IF th$(1, bt) = "" GOTO 7030 7046 t$ = (th$(1, bt)): GOSUB 11000: REM to identify place 7050 COLOR 13: PRINT a$: SLEEP 1: q = bt COLOR 1: GOSUB 13700: GOTO 1020 7060 th$(pl, bt) = "": GOSUB 17000 7065 IF pm >= 2 THEN GOSUB 12250: 7070 IF pm < 2 GOTO 7400: REM no merger 7072 IF ut = 0 GOTO 7080 7074 LOCATE 6, 44: COLOR 13: PRINT " Unplayable."; IF tr > 1 THEN PRINT " Draw a new tile": SLEEP 3: GOTO 7078 7076 PRINT " As no tiles left," LOCATE 7, 50: PRINT " it is discarded": SLEEP 3 th$(1, bt) = "": GOTO 7079 7078 t = t + 1: tr = tr - 1: th$(1, bt) = t$(t) 7079 COLOR 1: GOSUB 13700: GOSUB 17000: GOSUB Stats: GOTO 7010 7080 bs = 6: GOTO 3200 7100 REM hu. mg. decision 7102 y% = ss: culi = CSRLIN 7104 IF cheatflg = 1 THEN GOSUB 10050: IF a$ = "c" THEN GOSUB Cheat 7107 IF y% < 10 GOTO 7110 7108 LOCATE culi, 45: PRINT "(For deals of 10+ shares, use" 7109 LOCATE culi + 1, 45: PRINT "hex code, eg a=10, b=11 etc.)" culi = culi + 2 7110 ns = 0: n% = 0: nk = 0 IF culi > 8 THEN GOSUB Playwindow: culi = 2 LOCATE culi, 44: COLOR h2 + 2: PRINT "Sell "; 7115 GOSUB 10100: ns = VAL(a$) 7117 IF ASC(a$) > 64 THEN ns = ASC(a$) - 55: PRINT RIGHT$(STR$(ns), 2); : GOTO 7122 END IF IF ns < 1 THEN PRINT "0"; : GOTO 7130 7120 PRINT a$; 7122 IF ns > y% GOTO 7250 7130 IF ns < y% GOTO 7140 7135 PRINT " Change 0"; : PRINT " Keep 0": GOTO 7220 7140 PRINT " Change "; 7150 GOSUB 10100: n% = VAL(a$) 7155 IF ASC(a$) > 64 THEN n% = ASC(a$) - 55: PRINT RIGHT$(STR$(n%), 2); : GOTO 7172 END IF 7160 IF n% / 2 <> INT(n% / 2) GOTO 7150 IF VAL(a$) < 1 THEN PRINT "0"; : GOTO 7180 7170 PRINT a$; 7172 IF ns + n% > y% GOTO 7250 7180 IF n% / 2 <= sa(h1) GOTO 7190 7183 n% = 0: culi = culi + 1: LOCATE culi, 47: COLOR h1 + 2 IF sa(h1) = 0 THEN PRINT "Sorry! no "; : GOTO 7187 ELSE 7185 PRINT "Only"; sa(h1); 7187 PRINT h$(h1); : PRINT " left": COLOR h2 + 2 culi = culi + 1: GOTO 7260 END IF 7190 nk = y% - n% - ns 7200 PRINT " Keep "; 7205 IF nk > 9 THEN PRINT RIGHT$(STR$(nk), 2): GOTO 7220 7210 PRINT RIGHT$(STR$(nk), 1) 7220 culi = culi + 1 LOCATE culi, 52: PRINT "OK (y/n)? [ ]"; : GOSUB 10700 7230 GOSUB 10100: LOCATE posy, posx IF a$ <> "Y" THEN PRINT "N": GOTO 7260 7240 PRINT "Y": culi = culi + 1: IF ns = 0 AND n% = 0 GOTO 7300 7242 IF ns > 0 AND culi > 9 THEN culi = 2: GOSUB Playwindow LOCATE culi, 50: PRINT "You receive"; 7243 IF ns > 0 THEN COLOR 2: PRINT " $"; ns * sv(h2): COLOR 1 IF n% > 0 THEN culi = culi + 1: LOCATE culi, 49: PRINT "&"; END IF 7245 IF n% > 0 THEN PRINT n% / 2; : COLOR h1 + 2: PRINT h$(h1): NE = n% / 2 END IF 7248 COLOR 1: GOTO 7300 7250 culi = culi + 1: LOCATE culi, 44: PRINT "Too many! "; 7260 LOCATE CSRLIN, 55: PRINT "Try again" SLEEP 2: culi = CSRLIN: GOTO 7110 7300 GOSUB 10000: GOTO 3710 7400 IF pm = 0 GOTO 7500: REM no additions 7440 bs = 4: hh(bt) = pm(1): GOTO 2400 7500 IF lc = 0 GOTO 7700: REM lone tile 7510 IF ha > 0 GOTO 7540 7520 LOCATE 6, 47: PRINT "Illegal tile - all hotels" 7521 LOCATE 7, 51: PRINT "built. Try again." th$(1, bt) = t$: GOSUB 17000: GOSUB 13170 7530 SLEEP 3: GOTO 7000 7540 bs = 7: LOCATE 6, 49: PRINT "New hotel. "; : IF ha = 1 GOTO 7600 7545 PRINT "Which? [ ]"; : GOSUB 10700 7550 GOSUB 10100 FOR j = 1 TO 7 7560 IF a$ = MID$(hw$, j, 1) GOTO 7580 7570 NEXT: GOTO 7550 7580 IF hu(j) = 1 GOTO 7550 7590 COLOR j + 2: PRINT hi$(j): COLOR 1: GOTO 7620 7600 FOR j = 1 TO 7 IF hu(j) = 0 GOTO 7610 7605 NEXT 7610 PRINT " No choice." 7620 x = j: LOCATE 8, 49 - LEN(h$(x)) / 2 PRINT "You build"; : GOTO 4225 7700 bs = 5: GOTO 2800 8000 REM end? 8010 IF eb = 0 AND es = 0 GOTO 8980 8020 IF pl = 1 GOTO 8050 8030 x = INT(RND(1) * 3 + 1): IF x <> 2 GOTO 8980 8040 GOSUB 10000: GOSUB Playwindow 8041 LOCATE 5, 48: COLOR 1: PRINT "I declare the game over!" 8045 SLEEP 1: GOTO 8070 8050 GOSUB Pause: GOSUB Playwindow: LOCATE 5, 47: COLOR 1 PRINT " Want to end the game? [ ]"; 8060 GOSUB 10700: GOSUB 10100 8061 LOCATE posy, posx: PRINT a$: SLEEP 1: IF a$ <> "Y" GOTO 8980 8070 ef = 1: COLOR 1: LOCATE 7, 44 PRINT "Terminal bonus values & share" 8080 LOCATE 8, 44: PRINT "proceeds will now be displayed" 8090 SLEEP 3: GOSUB 23200 8100 GOSUB Playwindow: LOCATE 2, 47 8101 COLOR 2: PRINT "...and finally, the cash:" 8110 GOSUB 14120 8120 REM GOSUB 10000 8121 GOSUB Playwindow 8126 LOCATE 2, 48: COLOR 1: PRINT "So the grand totals are:" 8130 LOCATE 3, 53: PRINT "Player $$$$$" LOCATE 4, 53: PRINT "------ -----" 8131 GOSUB 15000 IF oh(1) = 1 THEN GOSUB Trumpet ELSE GOSUB Boosucks 8140 FOR qq = 1 TO np 8150 LOCATE qq + 5, 55: PRINT oh(qq); : LOCATE , 62 PRINT USING "#####"; vh(qq) 8160 NEXT qq: ef = 0: wrapup = 1: sk = 1: ck = 1: vk = 1: GOSUB Cheat COLOR 1 IF oh(1) = 1 THEN LOCATE CSRLIN + 1, 15: PRINT "WELL DONE, "; nm$; "!" ELSE LOCATE CSRLIN + 1, 12: PRINT "Could do better, "; nm$ END IF 8170 END 8980 IF pl = 1 THEN GOSUB 13200 9005 IF tr > 1 GOTO 9010 9007 th$(pl, bt) = "": IF xf = 1 GOTO 9015 9008 SLEEP 2: GOSUB Playwindow: LOCATE 7, 51: COLOR 13 PRINT "TILES HAVE RUN OUT": COLOR 1 9009 xf = 1: SLEEP 3: GOTO 9015 9010 t = t + 1: tr = tr - 1: th$(pl, bt) = t$(t) fincol = 1: GOSUB 17000 9015 pl = pl + 1: IF pl > np THEN pl = 1 9020 FOR q = 1 TO 6: ts(q) = 0: NEXT COLOR 2: LOCATE 11, 42 plstr$ = RIGHT$(STR$(pl), 1): PRINT plstr$ 9210 GOTO 980 10000 REM flashing routine 10001 Pause: 10005 a$ = INKEY$: LOCATE 1, 42: COLOR 2: PRINT "*" 10006 FOR qq = 1 TO 10000: NEXT 10007 LOCATE 1, 42: PRINT " " 10008 FOR qq = 1 TO 10000: NEXT 10010 WHILE a$ = "" 10015 GOTO Pause 10020 WEND 10030 RETURN 10050 Pausec: 10055 a$ = INKEY$: LOCATE 1, 42: COLOR 3: PRINT "*" 10056 FOR qq = 1 TO 10000: NEXT 10057 LOCATE 1, 42: PRINT " " 10058 FOR qq = 1 TO 10000: NEXT 10060 WHILE a$ = "" 10065 GOTO Pausec 10070 WEND 10080 RETURN 10100 Pause2: 10105 a$ = INKEY$: a$ = UCASE$(a$) 10110 WHILE a$ = "" 10115 GOTO Pause2 10120 WEND 10130 RETURN 10200 REM s/r triple merger 10210 h3 = mp(bt, 3): lox = 60 - (LEN(h$(h3)) + 2) / 2 LOCATE CSRLIN, lox: PRINT "& "; : COLOR h3 + 2: PRINT h$(h3) 10220 COLOR 1: LOCATE CSRLIN + 1, 45 PRINT "treated as 2 separate items," 10230 LOCATE CSRLIN, 51: PRINT "biggest one first" 10240 SLEEP 3: GOSUB Playwindow 10250 LOCATE 2, 60 - (LEN(h$(h2)) + 17) / 2 PRINT "Merger 1: t/o of "; 10251 COLOR h2 + 2: PRINT h$(h2): COLOR 1: RETURN 10500 REM s/r 'o' sweep up 10510 v = v(bt): h = h(bt) - 1: GOSUB 10600 10520 v = v(bt) + 1: h = h(bt): GOSUB 10600 10530 v = v(bt): h = h(bt) + 1: GOSUB 10600 10540 v = v(bt) - 1: h = h(bt): GOSUB 10600 10550 hs(h1) = hs(h1) + lc(bt): GOSUB 11800: RETURN 10600 IF B$(v, h) <> "o" THEN RETURN 10610 B$(v, h) = hi$(h1) 10611 GOSUB 13040 10615 RETURN 10700 REM brackets 10710 posx = POS(0) - 2: posy = CSRLIN: LOCATE posy, posx 10720 RETURN Sweeptest: 10810 vr = q: hr = z - 1: GOSUB 10900 10820 vr = q + 1: hr = z: GOSUB 10900 10830 vr = q: hr = z + 1: GOSUB 10900 10840 vr = q - 1: hr = z: GOSUB 10900 10850 RETURN 10900 IF B$(vr, hr) <> "o" THEN RETURN 10910 B$(vr, hr) = hi$(h1): hs(h1) = hs(h1) + 1: GOSUB 11800 10911 v = vr: h = hr: fincol = h1 + 2: GOSUB 13040 10915 RETURN 11000 REM s/r interpreting tiles 11010 v$ = LEFT$(t$, 1): h$ = RIGHT$(t$, 2) 11020 v = ASC(v$) - 64: h = VAL(h$) 11040 RETURN 11100 FOR I = 1 TO 20000: NEXT: RETURN 11110 FOR I = 1 TO 10000: NEXT: RETURN 11120 FOR I = 1 TO 2000: NEXT: RETURN 11500 REM spread infection 11505 vr(1) = v(bt): hr(1) = h(bt) 11510 FOR q = 1 TO 10 IF vr(q) = 0 GOTO 11570 11520 vr = vr(q): hr = hr(q) 11530 v9 = vr: h9 = hr - 1: GOSUB 11600 11540 v9 = vr + 1: h9 = hr: GOSUB 11600 11550 v9 = vr: h9 = hr + 1: GOSUB 11600 11560 v9 = vr - 1: h9 = hr: GOSUB 11600 11570 NEXT q: FOR q = 1 TO 10: vr(q) = 0: hr(q) = 0: NEXT: RETURN 11600 IF B$(v9, h9) <> "o" THEN RETURN 11610 FOR j = 1 TO 10 11620 IF vr(j) = v9 AND hr(j) = h9 THEN RETURN 11630 IF vr(j) > 0 GOTO 11760 11640 vr(j) = v9: hr(j) = h9: B$(v9, h9) = hi$(x) 11650 v = v9: h = h9: fincol = x + 2: GOSUB 13040: GOTO 11651 LINE (px, py)-(px + 9, py + 4), x + 2, BF bx = v9: by = h9 px = bx * 24 + 6 py = by * 14 + 18 LINE (px, py)-(px + 12, py + 8), fincol, BF 11651 hs(x) = hs(x) + 1 11660 IF hs(x) = 41 THEN eb = 1: GOTO 11720 11670 IF hs(x) = 11 THEN e1 = 1 11720 RETURN 11760 NEXT j: RETURN 11800 REM s/r set value shares 11810 IF hs(x) < 6 THEN sv(x) = bv(x) + 100 * hs(x): GOTO 11840 11820 IF hs(x) < 11 THEN sv(x) = bv(x) + 600: GOTO 11840 11830 sv(x) = INT((hs(x) - 1) / 10) * 100 + bv(x) + 600 11835 IF sv(x) > bv(x) + 1000 THEN sv(x) = bv(x) + 1000 11840 GOSUB Stats: RETURN 12000 REM s/r checking squares 12010 IF lr$ = "o" THEN lc = lc + 1: GOTO 12040 12020 FOR j = 1 TO 7 IF RIGHT$(lr$, 1) = MID$(hw$, j, 1) THEN pm = pm + 1: pm(pm) = j: GOTO 12040 END IF 12030 NEXT j 12040 RETURN 12100 REM possible new hotel 12103 IF ha = 0 THEN ts(q) = -5: pn(pl) = 1: RETURN 12105 ht = 0 12110 ht = ht + 1: IF ht = 22 THEN RETURN 12120 x = INT(RND(1) * 7 + 1): IF hu(x) = 1 GOTO 12110 12130 IF 25 - s(pl, x) * 2 - sa(x) > 3 GOTO 12110 12140 ts(q) = 7: RETURN 12250 REM possible merger 12255 REM unduplicate 12260 x = pm: pm = 0: FOR j = 1 TO x: x(j) = pm(j): pm(j) = 0: NEXT 12265 FOR j = 1 TO x e = 0 FOR k = 1 TO x 12270 IF x(j) <> pm(k) THEN e = e + 1 12275 NEXT k 12280 IF e = x THEN pm = pm + 1: pm(pm) = x(j) 12290 NEXT j 12300 IF pm = 1 THEN RETURN 12310 fincol = 1: IF pm = 3 GOTO 12350 12320 hb = SGN(hs(pm(1)) - hs(pm(2))): IF hb <> 0 GOTO 12330 12322 x1 = s(pl, pm(1)) / (25 - sa(pm(1)) + .01) 12323 x2 = s(pl, pm(2)) / (25 - sa(pm(2)) + .01) 12324 IF x1 > x2 THEN hb = 2: GOTO 12330 12325 hb = 1 12330 IF hb = 1 THEN h1 = pm(1): h2 = pm(2): GOTO 12359 12340 h1 = pm(2): h2 = pm(1): GOTO 12359 12350 FOR j = 1 TO 3: n(j) = hs(pm(j)): NEXT 12352 FOR j = 1 TO 3 n = 0 FOR k = 1 TO 3 12354 IF n(k) >= n THEN n = n(k): y = k 12356 NEXT k: hr(j) = pm(y): n(y) = 0 12358 NEXT j: h1 = hr(1): h2 = hr(2): h3 = hr(3) 12359 IF hs(h2) > 10 THEN ut = 1: RETURN 12360 IF pl = 1 GOTO 12390 12370 IF s(pl, h3) / (25 - sa(h3) + .01) >= .31 THEN ts(q) = 6: GOTO 12390 END IF 12377 IF s(pl, h2) / (25 - sa(h2) + .01) >= .28 THEN ts(q) = 6: GOTO 12390 END IF 12380 IF s(pl, h1) / (25 - sa(h1) + .01) >= .28 THEN ts(q) = 2: hh = h2: GOSUB 16500: GOTO 12390 END IF 12385 ts(q) = 1: hh = h2: GOSUB 16500 12390 mp(q, 1) = h1: mp(q, 2) = h2: mp(q, 3) = h3 12400 RETURN 12500 REM adding to existing hotels 12510 hh(q) = pm(1): hh = hh(q) 12515 GOSUB 16500 12520 IF s(pl, hh) / (25 - sa(hh) + .01) >= .2 THEN ts(q) = 4: GOTO 12540 END IF 12530 ts(q) = 3 12540 RETURN 13000 REM tile announcement & 1st placing LOCATE 4, 52 13020 COLOR 1: PRINT "I'll play"; 13030 LOCATE CSRLIN, 63: PRINT th$(pl, bt): fincol = 13 13040 REM draw squares bx = v: by = h px = bx * 24 + 6 py = by * 14 + 18 LINE (px, py)-(px + 12, py + 8), fincol, BF 13050 RETURN 13100 REM final tile placing IF bs = 7 THEN GOSUB 13170 ON x GOSUB Lx, Tw, Ar, Fv, Ww, Ct, Ip: GOTO 13110 END IF 13110 RETURN 13170 REM tile erasure LINE (px, py)-(px + 12, py + 8), 14, BF RETURN 13200 REM human's holdings FOR q3 = 1 TO 7 lv = 17 + 47: IF q3 / 2 = INT(q3 / 2) THEN lv = 23 + 47 IF lv = 17 + 47 THEN lh = q3 + 2 + 12 ELSE lh = q3 + 1 + 12 IF q3 = 7 THEN lv = 20 + 47 shares$ = RIGHT$(STR$(s(1, q3)), 2) LOCATE lh, lv COLOR q3 + 2: PRINT hi$(q3); " "; shares$ NEXT LOCATE 21, 51: COLOR 2: PRINT "CASH"; PRINT USING "######"; m(1) RETURN 13500 REM human merger choice 13505 a = mp(bt, 1) 13510 LOCATE CSRLIN, 48: PRINT " Chains are same size." LOCATE CSRLIN, 47: PRINT " Do you want "; 13520 COLOR a + 2: PRINT h$(a): COLOR 1 13521 LOCATE CSRLIN, 48: PRINT " in control? (y/n) [ ]"; 13523 posx = POS(0) - 2: posy = CSRLIN: LOCATE posy, posx 13530 GOSUB 10100: IF a$ <> "Y" AND a$ <> "N" GOTO 13530 13540 PRINT a$: GOSUB 11110: IF a$ = "Y" THEN RETURN 13550 x% = mp(bt, 1): mp(bt, 1) = mp(bt, 2): mp(bt, 2) = x%: RETURN 13700 REM wipe hum tile nos. 13710 GOSUB 13040: REM marking tile's place on board 13715 FOR j = 1 TO 6 IF ut = 0 AND j = bt THEN 13730 fx = pv(j) * 24 + 6: fy = ph(j) * 14 + 18 13721 LINE (fx, fy)-(fx + 12, fy + 8), 14, BF 13730 NEXT: RETURN 14120 LOCATE 3, 53: PRINT "PLAYER $$$$$" LOCATE 4, 53: PRINT "------ -----" 14130 FOR qq = 1 TO np 14131 LOCATE qq + 5, 55: PRINT qq; : LOCATE , 62 PRINT USING "#####"; m(qq) 14132 NEXT qq 14140 GOSUB 10000: RETURN 14610 REM GOSUB 10100: PRINT "Players' Worth" 14615 REM GOSUB 23200 14620 REM PRINT "Pl. $$$$$": GOSUB 23200: GOSUB 15000 14630 REM FOR qq = 1 TO np REM IF oh(qq) <> 1 AND vk = 0 GOTO 14650 14640 REM PRINT : PRINT oh(qq); TAB(9 - FNz(vh(qq))); vh(qq) 14650 REM NEXT qq: GOSUB 10000 14700 REM IF a$ <> "z" GOTO 14000 14710 REM GOSUB 10100: qf = -1: RETURN 15000 REM Players' worth 15010 FOR qq = 1 TO np: xxx = 0 FOR jj = 1 TO 7 15020 xxx = xxx + sv(jj) * s(qq, jj) 15030 NEXT jj: T5(qq) = xxx + mx(qq) NEXT qq 15040 FOR qq = 1 TO np W5 = T5(qq) 15050 FOR jj = 1 TO np 15060 IF T5(jj) >= W5 THEN W5 = T5(jj): xxx = jj 15070 NEXT jj: vh(qq) = W5: T5(xxx) = 0: oh(qq) = xxx 15080 NEXT qq: RETURN 15500 REM test for end 15510 xz = 0 FOR qq = 1 TO 7 IF hs(qq) > 10 THEN xz = xz + 1 15520 NEXT: IF xz = 7 - ha THEN es = 1 15530 RETURN 15750 SLEEP 2: GOSUB Playwindow: COLOR 1 LOCATE 5, 47: PRINT "As one chain now has over" LOCATE 6, 48: PRINT "40 hotels, "; : GOTO 15770 15760 SLEEP 2: GOSUB Playwindow: COLOR 1 LOCATE 5, 48: PRINT "With every chain on the" LOCATE 6, 48: PRINT "board safe, "; 15770 PRINT "the game may" LOCATE 7, 52: PRINT "end at any time.": SLEEP 3 15780 RETURN 16000 REM Find lowest share price 16010 lp = 1200 FOR qq = 1 TO 7 IF hu(qq) = 0 OR sa(qq) = 0 GOTO 16020 16015 IF sv(qq) < lp THEN lp = sv(qq) 16020 NEXT: RETURN 16500 REM im s/r 16510 IF hs(hh) > 6 OR sa < 2 THEN RETURN 16512 IF Im = 0 GOTO 16518 16514 FOR qq = 1 TO Im IF hh = so(qq) GOTO 16520 16516 NEXT qq 16518 Im = Im + 1: so(Im) = hh 16520 RETURN 17000 REM Human's tiles Humtiles: sx5 = 371: sy5 = 166 FOR qx = 1 TO 6 qx$ = RIGHT$(STR$(qx), 1) lh = qx: lv = 2: IF qx > 3 THEN lh = qx - 3: lv = 9 pv = lv * 8 + 8 + sx5: ph = lh * 28 + 1 + sy5 LINE (pv, ph)-(pv + 32, ph + 16), 0, BF LOCATE lh * 2 + 1 + 12, lv + 47: COLOR 13: PRINT qx$; COLOR 1: LOCATE CSRLIN, lv + 2 + 47: PRINT th$(1, qx) NEXT: COLOR 1 RETURN 18000 REM title up to 18130 inclusive LINE (159, 84)-(471, 236), 2, BF COLOR 14 FOR x = 159 TO 471 STEP 24 LINE (x, 84)-(x, 236), 14 LINE (x + 1, 85)-(x + 1, 237), 14 NEXT FOR y = 84 TO 237 STEP 17 LINE (158, y)-(470, y), 14 NEXT: LOCATE 12, 22: COLOR 5: PRINT "A" LOCATE 12, 28: COLOR 8: PRINT "C" LOCATE 12, 34: COLOR 3: PRINT "Q" LOCATE 12, 40: COLOR 4: PRINT "U" LOCATE 12, 46: COLOR 9: PRINT "I" LOCATE 12, 52: COLOR 6: PRINT "R" LOCATE 12, 58: COLOR 7: PRINT "E" LOCATE 22, 11: COLOR 4 PRINT "The Sid Sackson business game, computerised for the PC by" PRINT TAB(35); "G.C.Crawshay" SLEEP 3 18140 RETURN 20000 REM worth unsorted 20010 GOSUB 23200 20020 FOR q6 = 1 TO np 20025 xxx = 0 FOR j6 = 1 TO 7 20030 xxx = xxx + sv(j6) * s(q6, j6) 20040 NEXT j6: worth(q6) = xxx + mx(q6) 20050 NEXT q6: RETURN 23200 REM bonus valuation 23205 FOR qq = 1 TO np: mx(qq) = m(qq): NEXT 23210 FOR zz = 1 TO 7 IF hu(zz) = 0 GOTO 23600 23220 IF ef = 0 GOTO 23262 23221 GOSUB Playwindow 23230 LOCATE 2, 60 - LEN(h$(zz)) / 2 - 6: COLOR zz + 2: PRINT h$(zz); 23240 PRINT " -"; hs(zz); "hotels" 23262 b1 = sv(zz) * 10: b2 = b1 / 2: IF ef = 0 GOTO 23280 23265 LOCATE 3, 44: PRINT " Bonuses are $"; b1; " & $"; b2: SLEEP 2 23270 LOCATE 4, 47: PRINT "Shares held and values:" 23275 LOCATE 5, 47: PRINT "PLAYER SHARES $$$$$" REM LOCATE 6, 47: PRINT "------ ------ -----" 23280 FOR qq = 1 TO np: n1(qq) = s(qq, zz): NEXT 23285 FOR qq = 1 TO np 23290 n = n1(qq) 23295 FOR j = 1 TO np 23300 IF n1(j) >= n THEN n = n1(j): xx = j 23305 NEXT j: n2(qq) = n: n1(xx) = 0: n3(qq) = xx 23307 IF ef = 0 OR n2(qq) = 0 GOTO 23315 23310 LOCATE qq + 5, 49: PRINT n3(qq); : LOCATE , 57: PRINT n2(qq); 23312 xxx = sv(zz) * n2(qq): LOCATE , 64: PRINT USING "#####"; xxx 23315 NEXT qq IF ef = 1 THEN GOSUB Pause: GOSUB Playwindow: COLOR zz + 2 23340 IF n2(2) > 0 GOTO 23370 23350 IF ef = 1 THEN LOCATE 6, 49: PRINT " Player"; n3(1); "gets $"; b1 + b2 END IF 23360 mx(n3(1)) = mx(n3(1)) + b1 + b2: GOTO 23500 23370 IF n2(1) <> n2(2) OR n2(2) <> n2(3) GOTO 23400 23375 nw = 3: IF n2(3) = n2(4) THEN nw = 4 23380 xxx = INT((b1 + b2) / nw) FOR u = 1 TO nw mx(n3(u)) = mx(n3(u)) + xxx NEXT: IF ef = 0 GOTO 23600 23385 LOCATE 6, 44: PRINT "Players"; 23387 IF nw = 4 THEN PRINT n3(1); n3(2); n3(3); "&"; n3(4): GOTO 23395 23390 PRINT n3(1); n3(2); "&"; n3(3); 23395 PRINT "get $"; RIGHT$(STR$(xxx), 4); " each": GOTO 23500 23400 IF n2(1) <> n2(2) GOTO 23440 23410 xxx = (b1 + b2) / 2 FOR u = 1 TO 2: mx(n3(u)) = mx(n3(u)) + xxx: NEXT IF ef = 0 GOTO 23600 23420 LOCATE 6, 45 PRINT "Players"; n3(1); "&"; n3(2); "get $"; xxx; "each" 23430 GOTO 23500 23440 mx(n3(1)) = mx(n3(1)) + b1 23450 IF ef = 1 THEN LOCATE 5, 49: PRINT "Player"; n3(1); "gets $"; b1 END IF 23460 IF n2(2) <> n2(3) GOTO 23490 23465 nw = 2 IF n2(3) = n2(4) THEN nw = 3: IF n2(4) = n2(5) THEN nw = 4 23470 xxx = INT(b2 / nw) FOR u = 2 TO nw + 1: mx(n3(u)) = mx(n3(u)) + xxx: NEXT IF ef = 0 GOTO 23600 23475 LOCATE 7, 44: PRINT "Players"; IF nw = 4 THEN PRINT n3(2); n3(3); n3(4); "&"; n3(5) LOCATE 8, 52: GOTO 23485 END IF IF nw = 3 THEN PRINT n3(2); n3(3); "&"; n3(4); : GOTO 23485 23480 PRINT n3(2); "&"; n3(3); 23485 PRINT "get $"; RIGHT$(STR$(xxx), 4); " each": GOTO 23500 23490 mx(n3(2)) = mx(n3(2)) + b2 23495 IF ef = 1 THEN LOCATE 7, 49: PRINT "Player"; n3(2); "gets $"; b2 END IF 23500 IF ef = 0 GOTO 23600 23510 GOSUB 10000 23600 NEXT zz: RETURN Humcash: LOCATE 21, 51: COLOR 2: PRINT "CASH"; PRINT USING "######"; mx(1) RETURN 50000 DATA LUXOR,0,12,3,TOWER,0,20,3 50002 DATA AMERICAN,100,1,2 50005 DATA FESTIVAL,100,6,2,WORLDWIDE,100,23,1 50007 DATA CONTINENTAL,200,3,0,IMPERIAL,200,9,2 50010 DATA A 1,B 1,C 1,D 1,E 1,F 1,G 1,H 1,I 1,J 1,K 1,L 1 50020 DATA A 2,B 2,C 2,D 2,E 2,F 2,G 2,H 2,I 2,J 2,K 2,L 2 50030 DATA A 3,B 3,C 3,D 3,E 3,F 3,G 3,H 3,I 3,J 3,K 3,L 3 50040 DATA A 4,B 4,C 4,D 4,E 4,F 4,G 4,H 4,I 4,J 4,K 4,L 4 50050 DATA A 5,B 5,C 5,D 5,E 5,F 5,G 5,H 5,I 5,J 5,K 5,L 5 50060 DATA A 6,B 6,C 6,D 6,E 6,F 6,G 6,H 6,I 6,J 6,K 6,L 6 50070 DATA A 7,B 7,C 7,D 7,E 7,F 7,G 7,H 7,I 7,J 7,K 7,L 7 50080 DATA A 8,B 8,C 8,D 8,E 8,F 8,G 8,H 8,I 8,J 8,K 8,L 8 50090 DATA A 9,B 9,C 9,D 9,E 9,F 9,G 9,H 9,I 9,J 9,K 9,L 9 Lx: LINE (px + 1, py)-(px + 2, py + 8), 3, BF LINE -STEP(11, 0), 3 RETURN Tw: LINE (px + 1, py)-(px + 12, py), 4 LINE (px + 6, py)-(px + 7, py + 8), 4, B RETURN Ar: LINE (px + 5, py)-(px + 7, py), 5 LINE (px + 4, py + 1)-(px + 5, py + 2), 5, B LINE (px + 7, py + 1)-(px + 8, py + 2), 5, B LINE (px + 3, py + 3)-(px + 4, py + 4), 5, B LINE (px + 8, py + 3)-(px + 9, py + 4), 5, B LINE (px + 2, py + 5)-(px + 3, py + 6), 5, B LINE (px + 9, py + 5)-(px + 10, py + 6), 5, B LINE (px + 1, py + 7)-(px + 2, py + 8), 5, B LINE (px + 10, py + 7)-(px + 11, py + 8), 5, B LINE (px + 4, py + 4)-(px + 8, py + 4), 5 REM PSET (px, py + 8), 5: PSET (px + 12, py + 8), 5 RETURN Fv: LINE (px + 1, py)-(px + 2, py + 8), 6, BF LINE (px + 3, py)-(px + 11, py), 6 LINE (px + 3, py + 4)-(px + 7, py + 4), 6 RETURN Ww: FOR qw = 0 TO 11 STEP 11 LINE (px + qw, py)-(px + qw + 1, py + 1), 7, B NEXT FOR qw = 1 TO 10 STEP 9 LINE (px + qw, py + 2)-(px + qw + 1, py + 3), 7, B NEXT FOR qw = 2 TO 9 STEP 7 LINE (px + qw, py + 4)-(px + qw + 1, py + 6), 7, B NEXT FOR qw = 3 TO 7 STEP 4 LINE (px + qw, py + 7)-(px + qw + 2, py + 8), 7, B NEXT REM FOR qw = 4 TO 8 STEP 4: PSET (px + qw, py + 7), 7: NEXT LINE (px + 5, py + 5)-(px + 7, py + 6), 7, B PSET (px + 6, py + 4), 7 RETURN Ct: LINE (px + 4, py)-(px + 10, py), 8 LINE (px + 2, py + 1)-(px + 4, py + 1), 8 LINE (px + 10, py + 1)-(px + 12, py + 1), 8 REM LINE (px + 2, py + 2)-(px + 4, py + 2), 8 LINE (px + 1, py + 2)-(px + 2, py + 6), 8, B REM LINE (px + 2, py + 6)-(px + 4, py + 6), 8 LINE (px + 2, py + 7)-(px + 4, py + 7), 8 LINE (px + 10, py + 7)-(px + 12, py + 7), 8 LINE (px + 4, py + 8)-(px + 10, py + 8), 8 RETURN Ip: LINE (px + 1, py)-(px + 12, py), 9 LINE (px + 6, py)-(px + 7, py + 8), 9, B LINE (px + 1, py + 8)-(px + 12, py + 8), 9 RETURN One: LINE (fx + 4, fy)-(fx + 5, fy + 4), 13, BF RETURN Two: LINE (fx + 3, fy)-(fx + 7, fy), 13 LINE (fx + 2, fy + 1)-(fx + 3, fy + 1), 13 LINE (fx + 7, fy + 1)-(fx + 8, fy + 1), 13 LINE (fx + 5, fy + 2)-(fx + 7, fy + 2), 13 LINE (fx + 3, fy + 3)-(fx + 5, fy + 3), 13 LINE (fx + 2, fy + 4)-(fx + 8, fy + 4), 13 RETURN Three: LINE (fx + 3, fy)-(fx + 7, fy), 13 LINE (fx + 2, fy + 1)-(fx + 3, fy + 1), 13 LINE (fx + 7, fy + 1)-(fx + 8, fy + 1), 13 LINE (fx + 5, fy + 2)-(fx + 7, fy + 2), 13 LINE (fx + 2, fy + 3)-(fx + 3, fy + 3), 13 LINE (fx + 7, fy + 3)-(fx + 8, fy + 3), 13 LINE (fx + 3, fy + 4)-(fx + 7, fy + 4), 13 RETURN Four: LINE (fx + 5, fy)-(fx + 6, fy + 4), 13, BF PSET (fx + 4, fy), 13 LINE (fx + 3, fy + 1)-(fx + 4, fy + 1), 13 LINE (fx + 2, fy + 2)-(fx + 3, fy + 2), 13 LINE (fx + 1, fy + 3)-(fx + 8, fy + 3), 13 RETURN Five: LINE (fx + 2, fy)-(fx + 7, fy), 13 LINE (fx + 2, fy + 1)-(fx + 3, fy + 1), 13 LINE (fx + 2, fy + 2)-(fx + 7, fy + 2), 13 LINE (fx + 7, fy + 3)-(fx + 8, fy + 3), 13 LINE (fx + 2, fy + 4)-(fx + 7, fy + 4), 13 RETURN Six: LINE (fx + 5, fy)-(fx + 6, fy), 13 LINE (fx + 3, fy + 1)-(fx + 5, fy + 1), 13 LINE (fx + 2, fy + 2)-(fx + 6, fy + 2), 13 LINE (fx + 2, fy + 3)-(fx + 3, fy + 3), 13 LINE (fx + 6, fy + 3)-(fx + 7, fy + 3), 13 LINE (fx + 3, fy + 4)-(fx + 6, fy + 4), 13 RETURN Stats: LINE (1, 166)-(353, 320), 11, BF LOCATE 13, 1 FOR q4 = 1 TO 7 COLOR q4 + 2: PRINT TAB(5 + q4 * 5); hi$(q4); NEXT: PRINT : PRINT : COLOR 15: PRINT " Values"; FOR q4 = 1 TO 7 PRINT TAB(3 + 5 * q4); : COLOR q4 + 2 IF sv(q4) > 0 THEN PRINT USING "####"; sv(q4); ELSE PRINT " "; NEXT: PRINT " ": PRINT : COLOR 15: PRINT " No.Left"; FOR q4 = 1 TO 7 PRINT TAB(5 + 5 * q4); : COLOR q4 + 2 IF sa(q4) < 25 OR sv(q4) > 0 THEN PRINT USING "##"; sa(q4); ELSE PRINT " "; END IF NEXT: PRINT : PRINT : COLOR 15: PRINT " Sizes"; FOR q4 = 1 TO 7 PRINT TAB(5 + 5 * q4); : COLOR q4 + 2 IF sv(q4) > 0 THEN PRINT USING "##"; hs(q4); ELSE PRINT " "; NEXT: PRINT : PRINT IF tr < 100 THEN COLOR 13: PRINT " No. of tiles left:"; tr - 1 RETURN Cheat: GOSUB Statswindow LOCATE 13, 2: COLOR 1 PRINT "PL."; FOR q4 = 1 TO 7 COLOR q4 + 2: PRINT TAB(3 + q4 * 4); hi$(q4); NEXT COLOR 2: PRINT " CASH WORTH" PRINT IF vk = 1 THEN FOR j4 = 1 TO np: GOSUB 20000: NEXT FOR j4 = 1 TO np COLOR 1: PRINT " "; j4; FOR q4 = 1 TO 7: PRINT TAB(2 + 4 * q4); : COLOR q4 + 2 IF sk = 1 THEN PRINT USING "##"; s(j4, q4); ELSE PRINT " "; NEXT q4 IF ck = 1 THEN COLOR 2: PRINT USING "#######"; m(j4); ELSE PRINT " "; END IF IF vk = 1 THEN COLOR 2: PRINT USING "######"; worth(j4) ELSE PRINT END IF NEXT j4 IF wrapup = 1 THEN RETURN PRINT : COLOR 1: LOCATE , 8 PRINT "Press any key for normal display" GOSUB Pause GOSUB Statswindow: GOSUB Stats RETURN Colours: shade = 63: PALETTE 1, shade: REM white shade = 7: PALETTE 2, shade: REM light grey shade = 36: PALETTE 3, shade: REM red shade = 54: PALETTE 4, shade: REM yellow shade = 11: PALETTE 5, shade: REM blue shade = 26: PALETTE 6, shade: REM green shade = 38: PALETTE 7, shade: REM brown shade = 59: PALETTE 8, shade: REM turquoise shade = 53: PALETTE 9, shade: REM rose shade = 8: PALETTE 10, shade: REM dark blue shade = 32: PALETTE 11, shade: REM dark brown shade = 16: PALETTE 12, shade: REM dark green shade = 39: PALETTE 13, shade: REM pink shade = 56: PALETTE 14, shade: REM dark grey RETURN Square: fx = 50: fy = 160 LINE (fx - 2, fy - 2)-(fx + 11, fy + 6), 3, B Playwindow: LINE (339, 10)-(600, 159), 10, BF RETURN Holdwindow: LINE (371, 166)-(600, 320), 12, BF LOCATE 13, 53: COLOR 13: PRINT "TILES"; COLOR 15: LOCATE 13, 66: PRINT "SHARES" RETURN Statswindow: LINE (1, 166)-(353, 320), 11, BF RETURN Trumpet: PLAY "mb o3 l2 c l32 d e d e d e d e d e d e" PLAY "l16 c d l3 e l16 l8 f l4" PLAY "e d c d e l8 d c l4 d" PLAY "ms < g g g > mn l2 c l32 d e d e d e d e d e d e" PLAY "l16 c d l3 e l16 l8 f l4 e d l8 c d c" PLAY "d l32 d e d e d e d e d e d e d l8" PLAY "ms c mn l2 c" RETURN Boosucks: PLAY "mb ms o3 l6 g l10 g l6 e l10 a ml l4 g e" PLAY "ms l6 g l10 g l6 e l10 a ml l4 g e" RETURN