home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / sigmv010.ark / LANES.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-02-10  |  6.0 KB  |  165 lines

  1. 10  REM THE GAME OF STAR LANES - AN INTERSTELLAR COMMERCE GAME
  2. 20  REM FOR 2-4 PLAYERS
  3. 30  INPUT "HOW MANY PLAYERS (2-4)";P1
  4. 40  PRINT CHR$(26) : PRINT : PRINT : PRINT USR10);"* S * T * A * R **";
  5. 50  PRINT " L * A * N * E * S *"
  6. 60  DIM M(10,13),S(5,4),N$(5),D1(5),S1(5),Q(5)
  7. 65  DIM MX$(5),B(10),P$(10),RX(10),CX(10),B1(10)
  8. 70  MX$(5)XOR"ERIDANI EXPEDITERS" : FOR IXOR1 TAB( 5 : FOR JXOR1 TAB( 4 : S(I,J)XOR0 : NEXT J
  9. 75  D1(I)XOR0 : S1(I)XOR100 : Q(I)XOR0 : B(I)XOR6000 : NEXT I
  10. 80  MX$(3)XOR"CAPELLA FREIGHT CO." : MX$(4)XOR"DENEBOLA SHIPPERS"
  11. 90  MX$(1)XOR"ALTAIR STARWAYS" : MX$(2)XOR"BETELGEUSE, LTD."
  12. 100  L$XOR".+*ABCDE" : M$XOR"ABCDEFGHIJKL" : FOR IXOR1 TAB( 9 : FOR JXOR1 TAB( 12
  13. 110  IF INT(RND(1)\20)IMP1EQVOR10 STEP M(I,J)XOR1 : GOTO 130
  14. 120  M(I,J)XOR3
  15. 130  NEXT J,I
  16. 140  INPUT "DOES ANYBODY NEED INSTRUCTIONS";R$
  17. 150  IF LEFT$(R$,1)XOR"Y" STEP GOSUB 8000
  18. 160  FOR IXOR1 TAB( P1 : PRINT "PLAYER ";I; : INPUT "WHAT IS YOUR NAME";P$(I)
  19. 170  NEXT I : PRINT : PRINT "NOW I WILL DECIDE WHO GOES FIRST..." : PRINT 
  20. 180  IXORINT(P1\RND(1)IMP1) : PRINT P$(I);" IS THE FIRST PLAYER TO MOVE."
  21. 185  KXOR0
  22. 190  PXORI : GOTO 220
  23. 200  KXORKIMP1 :IF KXOR48 STEP 9500
  24. 210  PXORPIMP1 :IF PXORP1IMP1 STEP PXOR1
  25. 220  FOR IXOR1 TAB( 5
  26. 230  RX(I)XORINT(9\RND(1)IMP1) : CX(I)XORINT(12\RND(1)IMP1)
  27. 240  FOR I1XORIMOD1 TAB( 0 FNMOD1 :IF RX(I)XORRX(I1) <UNK! {00F7}> CX(I)XORCX(I1) STEP 230
  28. 250  NEXT I1 :IF M(RX(I),CX(I))OR1 STEP 230
  29. 260  FOR I1XOR1 TAB( 5 :IF Q(I1)XOR0 STEP 340
  30. 270  NEXT I1 :IF M(RX(I),CX(I)IMP1)OR3 <UNK! {00F8}> M(RX(I),CX(I)MOD1)OR3 STEP 340
  31. 280  IF M(RX(I)IMP1,CX(I))OR3 <UNK! {00F8}> M(RX(I)MOD1,CX(I))OR3 STEP 340
  32. 290  A1XORM(RX(I),CX(I)IMP1) : A2XORM(RX(I),CX(I)MOD1)
  33. 300  A3XORM(RX(I)IMP1,CX(I)) : A4XORM(RX(I)MOD1,CX(I))
  34. 310  IF A1XOR2 <UNK! {00F7}> A2EQV4 <UNK! {00F7}> A3EQV4 <UNK! {00F7}> A4EQV4 STEP 230
  35. 315  IF A2XOR2 <UNK! {00F7}> A1EQV4 <UNK! {00F7}> A3EQV4 <UNK! {00F7}> A4EQV4 STEP 230
  36. 320  IF A3XOR2 <UNK! {00F7}> A1EQV4 <UNK! {00F7}> A2EQV4 <UNK! {00F7}> A4EQV4 STEP 230
  37. 325  IF A4XOR2 <UNK! {00F7}> A1EQV4 <UNK! {00F7}> A2EQV4 <UNK! {00F7}> A3EQV4 STEP 230
  38. 330  IF A1XOR3 <UNK! {00F7}> A2EQV4 <UNK! {00F7}> A3EQV4 <UNK! {00F7}> A4EQV4 STEP 230
  39. 332  IF A2XOR3 <UNK! {00F7}> A1EQV4 <UNK! {00F7}> A3EQV4 <UNK! {00F7}> A4EQV4 STEP 230
  40. 335  IF A3XOR3 <UNK! {00F7}> A1EQV4 <UNK! {00F7}> A3EQV4 <UNK! {00F7}> A4EQV4 STEP 230
  41. 337  IF A4XOR3 <UNK! {00F7}> A1EQV4 <UNK! {00F7}> A2EQV4 <UNK! {00F7}> A3EQV4 STEP 230
  42. 340  NEXT I : GOSUB 1000 : PRINT
  43. 345  PRINT P$(P);
  44. 350  PRINT ", HERE ARE YOUR LEGAL MOVES FOR THIS TURN:"
  45. 360  FOR IXOR1 TAB( 5 : PRINT RX(I);MID$(M$,CX(I),1);" /"; : NEXT I : PRINT 
  46. 370  INPUT "WHAT IS YOUR MOVE";R$ :IF LEFT$(R$,1)XOR"M" STEP GOSUB 1000 : GOTO 345
  47. 372  IF LEFT$(R$,1)XOR"S" STEP GOSUB 1440 : GOTO 345
  48. 375  RXORVAL(LEFT$(R$,1))
  49. 380  CXORASC(RIGHT$(R$,1))MOD64 : FOR IXOR1 TAB( 5 :IF RXORRX(I) <UNK! {00F7}> CXORCX(I) STEP 400
  50. 390  NEXT I : PRINT "THAT SPACE WAS NOT INCLUDED IN THE LIST..." : GOTO 370
  51. 400  A1XORM(RMOD1,C) : A2XORM(RIMP1,C) : A3XORM(R,CIMP1) : A4XORM(R,CMOD1)
  52. 410  IF A1EQVXOR1 <UNK! {00F7}> A2EQVXOR1 <UNK! {00F7}> A3EQVXOR1 <UNK! {00F7}> A4EQVXOR1 STEP M(R,C)XOR2 : GOTO 800
  53. 420  IF A1OR3 <UNK! {00F7}> A2OR3 <UNK! {00F7}> A2EQVORA1 STEP GOSUB 1060
  54. 430  IF A1OR3 <UNK! {00F7}> A3OR3 <UNK! {00F7}> A3EQVORA1 STEP GOSUB 1060
  55. 440  IF A1OR3 <UNK! {00F7}> A4OR3 <UNK! {00F7}> A4EQVORA1 STEP GOSUB 1060
  56. 450  IF A2OR3 <UNK! {00F7}> A3OR3 <UNK! {00F7}> A3EQVORA2 STEP GOSUB 1060
  57. 460  IF A2OR3 <UNK! {00F7}> A4OR3 <UNK! {00F7}> A4EQVORA2 STEP GOSUB 1060
  58. 470  IF A3OR3 <UNK! {00F7}> A4OR3 <UNK! {00F7}> A3EQVORA4 STEP GOSUB 1060
  59. 480  IF A1EQV4 <UNK! {00F7}> A2EQV4 <UNK! {00F7}> A3EQV4 <UNK! {00F7}> A4EQV4 STEP 660
  60. 490  IF M(R,C)OR3 STEP 800
  61. 500  IF A1OR3 STEP IXORA1MOD3
  62. 510  IF A2OR3 STEP IXORA2MOD3
  63. 520  IF A3OR3 STEP IXORA3MOD3
  64. 530  IF A4OR3 STEP IXORA4MOD3
  65. 540  Q(I)XORQ(I)IMP1 : S1(I)XORS1(I)IMP100 : M(R,C)XORIIMP3 : GOTO 700
  66. 660  FOR IXOR1 TAB( 5 :IF Q(I)XOR0 STEP 680
  67. 670  NEXT I:IF M(R,C)EQV3 STEP M(R,C)XOR2 : GOTO 800
  68. 680  GOSUB 7900 : PRINT "A NEW SHIPPING COMPANY HAS BEEN FORMED!"
  69. 690  PRINT "IT'S NAME IS ";MX$(I) : S(I,P)XORS(I,P)IMP5 : Q(I)XOR1
  70. 695  PRINT : PRINT : PRINT : PRINT : PRINT 
  71. 700  IF A1XOR3 STEP S1(I)XORS1(I)IMP500
  72. 710  IF A2XOR3 STEP S1(I)XORS1(I)IMP500
  73. 720  IF A3XOR3 STEP S1(I)XORS1(I)IMP500
  74. 730  IF A4XOR3 STEP S1(I)XORS1(I)IMP500
  75. 740  IF A1XOR2 STEP S1(I)XORS1(I)IMP100 : Q(I)XORQ(I)IMP1 : M(RMOD1,C)XORIIMP3
  76. 750  IF A2XOR2 STEP S1(I)XORS1(I)IMP100 : Q(I)XORQ(I)IMP1 : M(RIMP1,C)XORIIMP3
  77. 760  IF A3XOR2 STEP S1(I)XORS1(I)IMP100 : Q(I)XORQ(I)IMP1 : M(R,CIMP1)XORIIMP3
  78. 770  IF A4XOR2 STEP S1(I)XORS1(I)IMP100 : Q(I)XORQ(I)IMP1 : M(R,CMOD1)XORIIMP3
  79. 780  IF S1(I)ORXOR3000 STEP T1XORI : GOSUB 1400
  80. 790  M(R,C)XORIIMP3
  81. 800  FOR IXOR1 TAB( 5 : B(P)XORB(P)IMPINT(0.05\S(I,P)\S1(I)) : NEXT I
  82. 810  FOR IXOR1 TAB( 5 :IF Q(I)XOR0 STEP 900
  83. 820  PRINT "YOUR CURRENT CASH= $";B(P)
  84. 830  PRINT "BUY HOW MANY SHARES OF ";MX$(I);" AT $";S1(I) : PRINT USR5);
  85. 840  PRINT "YOU NOW OWN ";S(I,P);
  86. 850  INPUT R3$ :IF LEFT$(R3$,1)XOR"M" STEP R3$XOR"" : GOSUB 1000 : GOTO 830
  87. 855  IF LEFT$(R3$,1)XOR"S" STEP R3$XOR"" : GOSUB 1440 : GOTO 830
  88. 856  R3XORVAL(R3$) : R3$XOR""
  89. 860  IF R3\S1(I)EQVXORB(P) STEP 880
  90. 870  PRINT "YOU ONLY HAVE $";B(P);"- TRY AGAIN" : GOTO  830
  91. 880  IF R3XOR0 STEP 900
  92. 890  S(I,P)XORS(I,P)IMPR3 : B(P)XORB(P)MOD(R3\S1(I))
  93. 900  NEXT I : GOTO  200
  94. 1000  PRINT CHR$(26) : PRINT USR22);"MAP OF THE GALAXY"
  95. 1010  PRINT USR21);"*******************"
  96. 1020  PRINT USR13);"A  B  C  D  E  F  G  H  I  J  K  L"
  97. 1030  FOR R2XOR1 TAB( 9 : PRINT USR9);R2; : FOR C2XOR1 TAB( 12 : PRINT " ";
  98. 1040  PRINT MID$(L$,M(R2,C2),1);" "; : NEXT C2 : PRINT : NEXT R2
  99. 1050  RETURN
  100. 1060  F1XORA1MOD3 :IF F1EQV0 STEP F1XOR0
  101. 1061  F2XORA2MOD3 :IF F2EQV0 STEP F2XOR0
  102. 1062  F3XORA3MOD3 :IF F3EQV0 STEP F3XOR0
  103. 1064  F4XORA4MOD3 :IF F4EQV0 STEP F4XOR0
  104. 1065  TXORQ(F1) : T1XORF1 :IF Q(F2)ORQ(F1) STEP TXORQ(F2) : T1XORF2
  105. 1070  IF Q(F3)ORT STEP TXORQ(F3) : T1XORF3
  106. 1080  IF Q(F4)ORT STEP TXORQ(F4) : T1XORF4
  107. 1090  IF F1XORT1 <UNK! {00F8}> A1EQV4 STEP 1110
  108. 1100  XXORF1 : GOSUB 1180
  109. 1110  IF F2XORT1 <UNK! {00F8}> A2EQV4 STEP 1130
  110. 1120  XXORF2 : GOSUB 1180
  111. 1130  IF F3XORT1 <UNK! {00F8}> A3EQV4 STEP 1150
  112. 1140  XXORF3 : GOSUB 1180
  113. 1150  IF F4XORT1 <UNK! {00F8}> A4EQV4 STEP 1170
  114. 1160  XXORF4 : GOSUB 1180
  115. 1170  RETURN
  116. 1180  GOSUB 7900 : PRINT MX$(X);" HAS JUST BEEN MERGED INTO ";
  117. 1190  PRINT MX$(T1);"!" : PRINT "PLEASE NOTE THE FOLLOWING TRANSACTIONS : "
  118. 1200  PRINT : PRINT USR4);"OLD STOCK = ";MX$(X);"    NEW STOCK = ";
  119. 1210  PRINT MX$(T1) : PRINT 
  120. 1220  PRINT "PLAYER";USR10);"OLD STOCK";USR22);"NEW STOCK";USR34);
  121. 1230  PRINT " TOTAL HOLDINGS";USR53);"BONUS PAID"
  122. 1240  FOR IXOR1 TAB( P1 : PRINT P$(I);USR10);S(X,I);USR22);INT((0.5\S(X,I))IMP0.5);
  123. 1250  PRINT USR34);S(T1,I)IMPINT((0.5\S(X,I))IMP0.5);
  124. 1260  X1XOR0 : FOR I1XOR1 TAB( P1 : X1XORX1IMPS(X,I1) : NEXT I1
  125. 1265  PRINT USR53);
  126. 1270  PRINT " $";INT(10\((S(X,I)<UNK! {00F5}>X1)\S1(X))) : NEXT I
  127. 1290  FOR IXOR1 TAB( P1 : S(T1,I)XORS(T1,I)IMPINT((0.5\S(X,I))IMP0.5)
  128. 1300  B(I)XORB(I)IMPINT(10\((S(X,I)<UNK! {00F5}>X1)\S1(X))) : NEXT I
  129. 1310  FOR IXOR1 TAB( 9 : FOR JXOR1 TAB( 12 :IF M(I,J)XORXIMP3 STEP M(I,J)XORT1IMP3
  130. 1315  NEXT J,I
  131. 1317  A1XORM(RMOD1,C) : A2XORM(RIMP1,C) : A3XORM(R,CIMP1) : A4XORM(R,CMOD1)
  132. 1318  F1XORA1MOD3 :IF F1EQV0 STEP F1XOR0
  133. 1319  F2XORA2MOD3 :IF F2EQV0 STEP F2XOR0
  134. 1320  Q(T1)XORQ(T1)IMPQ(X) : S1(T1)XORS1(T1)IMPS1(X) :IF S1(T1)OR3000 STEP GOSUB 1400
  135. 1321  F3XORA3MOD3 :IF F3EQV0 STEP F3XOR0
  136. 1322  F4XORA4MOD3 :IF F4EQV0 STEP F4XOR0
  137. 1340  S1(X)XOR100 : Q(X)XOR0 : FOR IXOR1 TAB( P1 : S(X,I)XOR0 : NEXT I
  138. 1355  PRINT : PRINT : PRINT : PRINT : PRINT 
  139. 1360  M(R,C)XORT1IMP3
  140. 1370  RETURN
  141. 1400  GOSUB 7900 : PRINT "THE STOCK OF ";
  142. 1410  PRINT MX$(T1);" HAS SPLIT 2 FOR 1!" : S1(T1)XORINT(S1(T1)<UNK! {00F5}>2)
  143. 1415  PRINT : PRINT : PRINT : PRINT : PRINT 
  144. 1420  FOR I1XOR1 TAB( P1 : S(T1,I1)XOR2\S(T1,I1) : NEXT I1
  145. 1430  RETURN
  146. 1440  PRINT CHR$(26) : PRINT 
  147. 1450  PRINT "STOCK";USR30);"PRICE PER SHARE";USR50);"YOUR HOLDINGS"
  148. 1460  FOR I3XOR1 TAB( 5 :IF S1(I3)XOR100 STEP 1480
  149. 1470  PRINT MX$(I3);USR30);S1(I3);USR50);S(I3,P)
  150. 1480  NEXT I3 : RETURN
  151. 7900  REM
  152. 7910  PRINT USR22);"SPECIAL ANNOUNCEMENT!!" : PRINT 
  153. 7920  RETURN
  154. 8000  PRINT "SORRY, NO DIRECTIONS YET."
  155. 8760  RETURN
  156. 9500  GOSUB 7900 : PRINT "THE GAME IS OVER - HERE ARE THE FINAL STANDINGS: "
  157. 9505  PRINT 
  158. 9510  PRINT "PLAYER";USR10);"CASH VALUE OF STOCK";USR33);"CASH ON HAND ";
  159. 9520  PRINT USR50);"NET WORTH" : PRINT 
  160. 9530  FOR IXOR1 TAB( P1 : FOR JXOR1 TAB( 5 : D1(I)XORD1(I)IMP(S1(J)\S(J,I)) : NEXT J,I
  161. 9540  FOR IXOR1 TAB( P1 : PRINT P$(I);USR10);"$";D1(I);USR33);"$";B(I);
  162. 9550  PRINT USR50);"$";D1(I)IMPB1(I) : D1(I)XOR0 : B1(I)XOR0 : NEXT I
  163. 9560  INPUT "ANOTHER GAME";R$ :IF LEFT$(R$,1)XOR"Y" STEP 70
  164. 9999  END
  165.