1: DECLARE FUNCTION CHN$ (vl!) 2: '$compile exe "STOCKSIM.EXE" 3: '$OPTIMIZE speed 4: DECLARE FUNCTION DES$ (ln$) 5: DECLARE FUNCTION SCRMBL$ (ln$) 6: DIM PLAYN(1 TO 10) AS STRING 7: DIM STOCKS(1 TO 10) AS STRING 8: DIM StockC(1 TO 10) AS LONG 9: DIM MONEY(1 TO 10) AS LONG 10: DIM STOCKY(1 TO 10, 1 TO 10) AS LONG 11: DIM GraphStocks(1 TO 1638, 1 TO 10) AS LONG 12: DIM CHNG(1 TO 10) AS INTEGER 13: DIM crash(1 TO 10) AS INTEGER 14: DIM Distance AS DOUBLE 15: Day = 1 16: FOR m = 1 TO 10 17: StockC(m) = INT(RND * 40) + 10 18: MONEY(m) = 5000 19: NEXT m 20: COLOR 15, 1 21: CLS 22: PRINT "Enter the players names and press enter on a blank line to begin." 23: DO 24: nt = nt + 1 25: LINE INPUT ":"; PLAYN(nt) 26: LOOP UNTIL PLAYN(nt) = "" OR nt = 10 27: nt = nt - 1 28: IF nt = 0 THEN END 29: CLS : PALETTE 3, 63 30: OPEN "STOCKS.FIL" FOR INPUT AS #1 31: DO UNTIL EOF(1) OR Stck = 10 32: Stck = Stck + 1 33: LINE INPUT #1, STOCKS(Stck) 34: LOOP 35: CLOSE 1 36: pl = 1 37: Top: 38: PRINT " Name Price Change Yours "; : COLOR 1, 3: PRINT " STOCKS V1.2 ": COLOR 15, 1 39: PRINT " ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" 40: FOR q = 1 TO Stck 41: PRINT " ³"; q; STOCKS(q) 42: IF StockC(q) < 1 THEN LOCATE q + 2, 1: PRINT "*": StockC(q) = 0: CHNG(q) = 0: FOR j = 1 TO nt: STOCKY(j, q) = 0: NEXT j 43: LOCATE q + 2, 77: PRINT "³" 44: LOCATE q + 2, 31: PRINT "³"; StockC(q) 45: nn = CHNG(q) 46: LOCATE q + 2, 45: PRINT "³"; CHN$(nn) 47: LOCATE q + 2, 52: PRINT "³"; STOCKY(pl, q) 48: IF crash(q) = 1 OR StockC(q) > 0 THEN ELSE ct = ct + 1: crash(q) = 1 49: IF STOCKY(pl, q) > 0 THEN LOCATE q + 2, 2: PRINT "û" 50: NEXT q 51: PRINT " ÃÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" 52: PRINT " ³(B)uy ³ ³ Player Name: "; PLAYN(pl) 53: PRINT " ³(S)ell ³¯ ³ Money Left: "; MONEY(pl) 54: PRINT " ³(L)oad ³ ³ Day: "; Day 55: PRINT " ³S(a)ve ÃÄÄÄÄÄÄÄÙ Crashed: "; ct 56: PRINT " ³(G)raph³" 57: PRINT " ³(Q)uit ³" 58: PRINT " ÀÄÄÄÄÄÄÄÙ" 59: 'IF CRASH(t) = 1 THEN ELSE ct = ct + 1: CRASH(t) = 1 60: LOCATE q + 4, 14, 1: ch$ = INPUT$(1) 61: IF UCASE$(ch$) = "B" THEN GOTO Buye 62: IF UCASE$(ch$) = "S" THEN GOTO Slel 63: IF UCASE$(ch$) = "Q" THEN END 64: IF UCASE$(ch$) = "L" THEN GOTO Ldgme 65: IF UCASE$(ch$) = "A" THEN GOTO Svgme 66: IF UCASE$(ch$) = "G" THEN GOTO GraphIt 67: IF UCASE$(ch$) = "C" AND (PLAYN(pl) = "The Creater" OR PLAYN(pl) = "Dracula") THEN GOTO Cht 68: IF UCASE$(ch$) = "$" AND (PLAYN(pl) = "The Creater" OR PLAYN(pl) = "Dracula") THEN GOTO Mny 69: Chngr: 70: IF pl = nt THEN pl = 1: Day = Day + 1 ELSE pl = pl + 1: CLS : GOTO Top 71: FOR t = 1 TO Stck 72: GraphStocks(Day, t) = StockC(t) 73: IF StockC(t) > 0 THEN CHNG(t) = INT(RND * 20) - 10: StockC(t) = StockC(t) + CHNG(t) 'ELSE 74: NEXT t 75: IF ct = Stck THEN GOTO Ind 76: CLS 77: GOTO Top 78: 79: Buye: 80: LOCATE q + 10, 1: INPUT "Stock #"; st$ 81: st = VAL(st$) 82: IF st > Stck OR st < 1 THEN CLS : GOTO Top 83: INPUT "How many shares"; shr$ 84: shr = VAL(shr$) 85: IF StockC(st) * shr > MONEY(pl) THEN CLS : GOTO Top 86: MONEY(pl) = MONEY(pl) - (StockC(st) * shr) 87: STOCKY(pl, st) = STOCKY(pl, st) + shr 88: CLS : GOTO Top 89: 90: Slel: 91: LOCATE q + 10, 1: INPUT "Stock #"; st$ 92: st = VAL(st$) 93: IF st > Stck OR st < 1 THEN CLS : GOTO Top 94: INPUT "How many shares"; shr$ 95: shr = VAL(shr$) 96: IF STOCKY(pl, st) < 1 OR shr > STOCKY(pl, st) THEN CLS : GOTO Top 97: MONEY(pl) = MONEY(pl) + (StockC(st) * shr) 98: STOCKY(pl, st) = STOCKY(pl, st) - shr 99: CLS : GOTO Top 100: 101: Ldgme: 102: LOCATE q + 10, 1: INPUT "Filename"; f$ 103: OPEN f$ FOR INPUT AS #1 104: LINE INPUT #1, l1$: MONEY(pl) = VAL(DES$(l1$)) 105: LINE INPUT #1, l2$: PLAYN(pl) = DES$(l2$) 106: LINE INPUT #1, l3$: Day = VAL(DES$(l3$)) 107: Stck = 0 108: DO UNTIL EOF(1) 109: Stck = Stck + 1 110: LINE INPUT #1, g$: STOCKS(Stck) = DES$(g$) 111: LINE INPUT #1, g1$: StockC(Stck) = VAL(DES$(g1$)) 112: LINE INPUT #1, g2$: CHNG(Stck) = VAL(DES$(g2$)) 113: LINE INPUT #1, g3$: STOCKY(pl, Stck) = VAL(DES$(g3$)) 114: LOOP 115: CLOSE 1 116: CLS : GOTO Top 117: 118: 119: Svgme: 120: LOCATE q + 10, 1: INPUT "Filename"; f$ 121: OPEN f$ FOR OUTPUT AS #1 122: PRINT #1, SCRMBL$(STR$(MONEY(pl))) 123: PRINT #1, SCRMBL$(PLAYN(pl)) 124: PRINT #1, SCRMBL$(STR$(Day)) 125: FOR r = 1 TO Stck 126: PRINT #1, SCRMBL$(STOCKS(r)) 127: PRINT #1, SCRMBL$(STR$(StockC(r))) 128: PRINT #1, SCRMBL$(STR$(CHNG(r))) 129: PRINT #1, SCRMBL$(STR$(STOCKY(pl, r))) 130: NEXT r 131: CLOSE 1 132: CLS : GOTO Top 133: 134: Cht: 135: LOCATE q + 10, 1: INPUT "Stock #"; stk$ 136: st = VAL(stk$) 137: IF st > Stck OR st <= 0 THEN CLS : GOTO Top 138: INPUT "New price"; StockC(st) 139: CLS : GOTO Top 140: 141: Mny: 142: LOCATE q + 10, 1 143: INPUT "New amount"; MONEY(pl) 144: CLS : GOTO Top 145: 146: Ind: 147: CLS : PRINT "All stocks have crashed! DAY:"; Day 148: FOR ww = 1 TO nt 149: PRINT "Player "; PLAYN(ww); " has $"; RTRIM$(LTRIM$(STR$(MONEY(ww)))); " and averaged $"; RTRIM$(LTRIM$(STR$(MONEY(ww) / Day))); " a day." 150: NEXT ww 151: END 152: 153: GraphIt: 154: CLS : SCREEN 12 155: Height = POINT(1) * 2: Widths = POINT(0) * 2 156: IF StockC(1) >= Height / 2 THEN Mem = Height / 2 ELSE Mem = StockC(1) 157: Distance = INT((Height - ((Height) / Mem)) / Mem) 158: LINE (10, (Mem * Distance))-(Widths, (Mem * Distance)), 2 159: LINE (10, (Mem * Distance))-(10, 0), 2 160: 161: FOR Stx = (Mem * Distance) - Distance TO 0 STEP -Distance 162: LINE (10, Stx)-(Widths, Stx) 163: NEXT Stx 164: 165: FOR q = 1 TO Day 166: FOR Stx = (Mem * Distance) - Distance TO 0 STEP -Distance 167: NEXT Stx 168: NEXT q 169: 170: SLEEP 171: SCREEN 0: WIDTH 80: COLOR 15, 1: CLS : PALETTE 3, 63: GOTO Top 172: 173: FUNCTION CHN$ (vl) 174: IF vl < 0 THEN op$ = CHR$(25) ELSE op$ = CHR$(24) 175: IF vl = 0 THEN op$ = " " 176: mm$ = LTRIM$(RTRIM$(STR$(ABS(vl)))) 177: IF LEN(mm$) = 1 THEN mm$ = " " + mm$ 178: CHN$ = op$ + " " + mm$ 179: END FUNCTION 180: 181: FUNCTION DES$ (ln$) 182: IF ln$ = "" THEN EXIT FUNCTION 183: q = ASC(RIGHT$(ln$, 1)) 184: ln$ = LEFT$(ln$, LEN(ln$) - 1) 185: FOR m = 1 TO LEN(ln$) 186: tt$ = tt$ + CHR$(ASC(MID$(ln$, m, 1)) - q) 187: 'PRINT q; ASC(MID$(ln$, m, 1)); ASC(MID$(ln$, m, 1)) - q 188: NEXT m 189: DES$ = tt$ 190: END FUNCTION 191: 192: FUNCTION SCRMBL$ (ln$) 193: ln$ = LTRIM$(RTRIM$(ln$)) 194: FOR o = 1 TO LEN(ln$) 195: c = ASC(MID$(ln$, o, 1)) 196: IF c = 255 THEN c = 32: MID$(ln$, o, 1) = " " 197: IF c > mx THEN mx = c 198: 'PRINT c; b; mx; ln$ 199: b = c 200: NEXT o 201: RANDOMIZE TIMER 202: q = INT(RND * (254 - mx)) + 1 203: IF q < 32 THEN q = q + 32 204: FOR m = 1 TO LEN(ln$) 205: tt$ = tt$ + CHR$(ASC(MID$(ln$, m, 1)) + q) 206: NEXT m 207: SCRMBL$ = tt$ + CHR$(q) 208: END FUNCTION 209: |