home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug086.arc / EXCHANGE.BAS < prev    next >
BASIC Source File  |  1979-12-31  |  5KB  |  184 lines

  1. 10    rem    FOREIGN EXCHANGE
  2.     \      By TIM HARTNELL
  3.     \    Code converted to CBASIC and compiled with CB80
  4.     \    29/03/1988
  5.     restore
  6.     dim n$(9), v(9), f(9), u(9), l(9), h(9)
  7.  
  8.     
  9.     print chr$(26)
  10.     print tab(20);"The game of $$    FOREIGN EXCHANGE   $$$"
  11.     PRINT
  12.     print tab(20);"By Tim Hartnell and keyed by A. Barfoot"
  13.     print
  14. 10.2    print"The object of this game it to turn $1000.00 into $5000.00 in"
  15.     print"the least amount of time as possible by buying and selling "
  16.     print"foreign currencies. Sales and purchases are in multiples of 10."
  17.     print
  18.     print"E.G. If you want to buy or sell 100 U.S. DOLLARS, enter 10 "
  19.     print"when asked how many you wish to buy or (sell)."
  20.     print
  21.     print"Each negiotation costs .25 and your CASH attracts .125% interest"
  22.     print
  23.  
  24.     print"Apart from that, the least amount of `negotations' the better."
  25.     print
  26.     print"Good Luck!"
  27.     print
  28.     print
  29.     gosub 1040
  30.     print "PRESS ANY KEY TO CONTINUE ";
  31. 10.21    fetch=inkey:key$=chr$(fetch):if ucase$(key$) ="" THEN 10.21
  32. 20    GOSUB 1040 : print chr$(26)
  33. 30    PRINT CHR$(26) : GOSUB 220
  34. 40    rem    each negotition costs .25
  35.       rem    cash attracts .125% interest
  36. 60    rem    per negotation
  37. 70    cash = 1.0125 * cash
  38. 80    neg = neg + 1 : cash = cash - .25
  39. 90    gosub 380
  40. 100    if money + cash le 0 or money + cash ge 500 then 130
  41. 110    gosub 950
  42. 120    goto 30
  43. 130    print chr$(26)
  44.     print "After ";neg-1;" negotations you have managed to trade your" 
  45.     print "original $1,000 into $";int((money+cash)*100/10)
  46. 160    gosub 1360
  47. 170    if money+cash le 0 then \
  48.     print "You've not done well in foregin exchange."
  49.     goto 190
  50. 180    print "You have done well on the foregin exchange."
  51. 190    gosub 270
  52.     goto 2000
  53. 220    PRINT CHR$(26)
  54. 240    if health lt 0 then \
  55.     print"* Market weak. This is negotation ";neg
  56. 250    if health gt 0 then \
  57.     print"* Market rallies. This is negotation ";neg
  58. 260    print
  59.     print"Currency";tab(19);"Rate";tab(26);"Number Value"
  60. 270    money = 0
  61. 280    for j = 1 to 9
  62. 290    print j;left$(n$(j),13);tab(18);sgn(f(j))*int(v(j)*1000)/(1000);
  63. 300    if h(j)>0 then \
  64.         print tab(25);h(j);tab(32);int(h(j)*v(j)*100)/10
  65.             money = money +h(j)*v(j)
  66. 310    if h(j) = 0 then \
  67.         print
  68. 320    next j
  69. 330    gosub 1360
  70. 340    print"CURR HELD $";INT(100*MONEY)/10;\
  71.     TAB(20);"IN HAND $";INT(CASH*100/10);
  72.     print tab(20);"TOTAL   $";int((money+cash)*100)/10
  73.     return
  74. 370    rem
  75. 380    print"B - Buy,     S - Sell,     W - Wait,     Q - Quit ";
  76. 401    fetch=inkey:key$=chr$(fetch)
  77.         if ucase$(key$)="Q" then 130
  78.         if ucase$(key$)="W" then RETURN
  79.         if ucase$(key$)="S" then 700
  80.         if ucase$(key$)="B" then 480
  81.         GOTO 401
  82. 480    PRINT
  83.     input"Currency to buy (enter number)";t
  84.     randomize
  85. 490    if t < 1 or t > 9 then 490
  86.     y = t
  87. 520    print"You wish to buy ";n$(y)
  88. 530    print"Curent price is $";v(y)
  89. 540    input"How many do you wish to purchase ";x
  90. 550    if x < 1 then 590
  91.     x = 10 * x
  92. 580    if x*v(y) > cash then \
  93.         print"You cannot afford that many!" : gosub 1360 : goto 540
  94. 590    cash = cash - x * v(y)
  95. 600    h(y) = h(y) + x
  96. 610    gosub 220
  97.  
  98. 630    input"Enter number to buy more, 0 to end";t
  99. 631    if t < 0 or t > 9 then 631
  100.     if t = 0 then return
  101.     y = t
  102. 680    gosub 220
  103. 690    goto 520
  104. 700    rem
  105. 710    rem 
  106. 720    print
  107.     INPUT"Currency (number) to sell, 0 to end.";r
  108. 721    if r < 1 or r > 9 then 721
  109. 760    q = r
  110.     if q = 0 then return
  111. 780    if h(q) = 0 then \
  112.         print"You have no ";n$(q) : \
  113.         for j = 1 to 700 : next j : gosub 1360 : return
  114. 790    print"How many ";n$(q);" to sell ";
  115.     input r
  116.     r = 10 * r
  117. 810    if r > h(q) then \
  118.         print"You do not have that many!" : gosub 1360 : goto 790
  119. 820    h(q)=h(q) - r
  120. 830    cash = cash + v(q) * r
  121. 840    gosub 220
  122. 850    print
  123. 860    INPUT"Enter number to sell more, 0 to end ";T
  124. 861    if t < 0 or t > 9 then 861
  125.      if t = 0 then return
  126.     q = t
  127. 920    gosub 220
  128. 930    goto 780
  129. 950    health = 0
  130.     for j = 1 to 9
  131. 980    if rnd > .3 then \
  132.         v(j) = int((v(j)+f(j))*1000)/1000
  133. 990    if v(j) > u(j) or v(j) < l(j) then \
  134.         v(j) = v(j) - f(j) /2 : f(j) =-f(j) 
  135.  
  136. 1000    health = health + sgn(f(j))
  137.         next j
  138.         return
  139. 1030    rem
  140. 1040    restore 
  141. 1050    \    n$ = currency name
  142.     \    v  = value (in US $)
  143.     \    f  = fulctuation rate
  144.     \     u  = upper limit
  145.     \    l  = lower limit
  146.     \    h  = holdings
  147.     cash = 100
  148.     neg = 1
  149.     health = 1
  150.     for j = 1 to 9
  151. 1180    read n$(j),v(j)
  152. 1190    x = rnd
  153.     v(j)=v(j) + (x * 10 + 1 ) /100
  154. 1200    f(j) = v(J)/9
  155.     u(j) = v(j) + 4 * f(j)
  156.     l(j) = 4 * f(j)
  157. 1230    if rnd > .5 then
  158.         f(j) = -f(j)
  159. 1240    if l(j) > v(j) then \
  160.         l(j) = l(j) - f(j) 
  161.     next j
  162. 1260    return
  163. 1270    data "U.S. DOLLAR",1
  164.     data "DANISH KRONER",0.1071
  165.     data "FRENCH FRANC",0.1267
  166.         data "GERMAN MARK",0.3906
  167.     data "CHINESE YUAN",0.5181
  168.         data "SOUTH AFRICAN RAND",0.8730
  169.         data "SWISS FRANC",0.4784
  170.         data "SAUDI ARABIAN RYL",0.3039
  171.     data "HONG KONG DOLLAR",0.1369
  172. 1360    REM    line    
  173.     PRINT"-------------------------------------"
  174.     return
  175.  
  176.     goto 30 
  177.  
  178. 2000    PRINT
  179.     print"Do you want to play again Y/N ?";
  180.  
  181.     fetch=inkey:key$=chr$(fetch):if ucase$(key$)="Y" then \
  182.         print chr$(26) : goto 20
  183.     stop
  184.