home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG033.ARK / SERCHGME.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  9KB  |  172 lines

  1. REM THIS IS THE PROGRAM "SERCHGME.BAS" AN AERIAL SEARCH FOR A DOWNED A/C
  2. REM WRITTEN BY MJ.R.A.GREGOIRE, BASED UPON THE PROGRAM "C.A.P.SEARCH" WHICH WAS
  3. REM WRITTEN BY CAPT. BRUCE BEAM CAP, 1683 COACHLIGHT DR  NEW BERLIN,WI 53151
  4. REM
  5.     INPUT"WOULD YOU LIKE TO HAVE A SEARCH GRID PRINTED?(Y/N)";K$:RANDOMIZE
  6.     IF LEFT$(K$,1)<>"Y" THEN GOTO 15 ELSE LPRINTER    REM HARD COPY COMMAND
  7.     FOR I=1 TO 32:FOR J=1 TO 16:K$=STR$(32*(16-J)+I)
  8. 10  IF LEN(K$)<4 THEN K$=" "+K$:GOTO 10
  9.     PRINT K$;:NEXT J:PRINT:PRINT:NEXT I:PRINT CHR$(12):CONSOLE    REM SOFT COPY
  10. 15  DIM X(36),Y(36),V(3),H(3)
  11.     X0=INT(31*RND)+1:Y0=INT(15*RND)+1:X1=INT(31*RND)+1:Y1=INT(15*RND)
  12.     P1=X0:P2=Y0:P3=X0:P4=Y0:P5=X0:P6=Y0:F1=28:F2=50:K$="A FARMER"
  13. REM
  14. REM INITIALIZATION ROUTINE FOLLOWS ********************************************
  15. REM
  16. R=RND*INT(.5+SQR((Y1-Y0)*(Y1-Y0)+(X1-X0)*(X1-X0)))
  17.     FOR I=1 TO R                       REM DESIGNATE LEAD GRIDS
  18.     S=S+INT(SGN(X1-X0)+SGN(.5-RND))
  19.     T=T+INT(SGN(Y1-Y0)+RND*1.99)
  20.     X(I)=X0+S:Y(I)=Y0+T
  21.     IF X(I)<3 OR X(I)>30 OR Y(I)<2 OR Y(I)>13 THEN X2=X(I):Y2=Y(I):GOTO 20
  22.     NEXT I:X2=X(I-1):Y2=Y(I-1)              REM X2,Y2 IS X,Y COORD OF TARGET
  23.  20 PRINT "YOUR MISSION IS TO FIND AN AIRCRAFT THAT"
  24.     PRINT "DEPARTED AN AIRPORT IN ";32*Y0+X0;"FOR ONE IN ";32*Y1+X1
  25. REM
  26. REM COMMAND MENUE *************************************************************
  27. REM
  28. 100 PRINT:INPUT"COMMAND? 0-MOVE UNITS, 1-ASSIGN UNITS, 2-STATUS, 3-QUIT";M
  29.     IF M=0 THEN L=L+1:GOSUB 400:GOSUB 500:GOSUB 700    REM L IS # OF MOVES
  30.     IF M=1 THEN GOSUB 200
  31.     IF M=2 THEN GOSUB 300
  32.     IF M=3 THEN GOTO 800
  33.     IF K$="A FARMER" THEN GOTO 100 ELSE GOTO 800    REM END OF GAME
  34. REM
  35. REM ASSIGN UNITS **************************************************************
  36. REM
  37. 200 INPUT "WHICH UNIT? 1-'8633S'  2-'532GF'  3-'LRT'";N
  38.     IF N<1 OR N>3 THEN GOTO 200
  39. 210 INPUT "TO WHICH GRID IS THAT UNIT ASSIGNED";G
  40.     IF G<1 OR G>512 THEN GOTO 210 ELSE V(N)=INT((G-1)/32):H(N)=G-32*V(N)
  41. RETURN
  42. REM
  43. REM STATUS ROUTINE ************************************************************
  44. REM
  45. 300 PRINT "TIME ";INT(L/3);":";(L-3*INT(L/3))*20
  46.     PRINT "UNIT","33S","2GF","LRT"
  47.     PRINT:PRINT "ASSIGNED TO",V(1)*32+H(1),V(2)*32+H(2),V(3)*32+H(3)
  48.     PRINT "NOW IN",P2*32+P1,P4*32+P3,P6*32+P5
  49.     PRINT "FUEL",F1,F2
  50.     RETURN
  51. REM
  52. REM 8633S MOVE ROUTINE ********************************************************
  53. REM
  54. 400 IF ((P2=V(1) AND P1=H(1)) AND (L<>1)) OR (V(1)=0 AND H(1)=0) THEN GOTO 440
  55.     FOR I=1 TO 2
  56.     IF F1-1>0 THEN F1=F1-1 ELSE PRINT"8633S DOWN FOR GAS IN ";\
  57.                         32*P2+P1:F1=28:GOTO 440
  58.     IF P2<>V(1) THEN P2=P2+SGN(V(1)-P2)         REM F1 IS FUEL REMAINING
  59.     IF P1<>H(1) THEN P1=P1+SGN(H(1)-P1)
  60.     IF RND<.07 THEN PRINT "8633S LANDING IN ";32*P2+P1;:GOSUB 600:GOTO 440
  61.     IF X2=P1 AND Y2=P2 AND RND<.7 THEN K$="A/C N8633S":GOTO 440   REM FIND!
  62.     NEXT I             REM 8633S MUST BE IN TARGET GRID+RND>70% FOR FIND
  63. 440 RETURN
  64. REM
  65. REM 532GF MOVE ROUTINE*********************************************************
  66. REM
  67. 500 IF ((P4=V(2) AND P3=H(2)) AND (L<>1)) OR (V(2)=0 AND H(2)=0) THEN GOTO 580
  68.     FOR I=1 TO 3
  69.     IF F2-1>0 THEN F2=F2-1 ELSE PRINT "532GF DOWN FOR GAS IN ";\
  70.                         32*P4+P3:F2=50:GOTO 580
  71.     IF P4<>V(2) THEN P4=P4+SGN(V(2)-P4)         REM F2 IS FUEL REMAINING
  72.     IF P3<>H(2) THEN P3=P3+SGN(H(2)-P3)
  73.     IF RND<.035 THEN PRINT "532GF LANDING IN ";32*P4+P3;:GOSUB 600:GOTO 580
  74.     IF ABS(Y2-P4)<=1 AND ABS(X2-P3)<=1 AND L<12+RND*12 THEN \
  75.             PRINT"ELT HEARD IN ";32*P4+P3
  76.     IF X2=P3 AND Y2=P4 AND RND<.7 THEN K$="A/C N532GF":GOTO 580   REM FIND!
  77.     NEXT I
  78. 580 RETURN
  79. REM
  80. REM HAZARD IDENTIFICATION ROUTINE *********************************************
  81. REM
  82. 600 ON .501+2.999*RND GOTO 610,620,630
  83. 610 PRINT ",PILOT GOT LOST":GOTO 640
  84. 620 PRINT ",PRECAUTIONARY LANDING DUE TO STORM":GOTO 640
  85. 630 PRINT ",OBSERVER IS AIRSICK"
  86. 640 RETURN
  87. REM
  88. REM LRT(LAND RANGER TEAM) MOVE ROUTINE ****************************************
  89. REM
  90. 700 IF ((P5=H(3) AND P6=V(3)) AND (L<>1)) OR (H(3)=0 AND V(3)=0) THEN GOTO 770
  91.     IF P5<>H(3) THEN P5=P5+SGN(H(3)-P5)
  92.     IF P6<>V(3) THEN P6=P6+SGN(V(3)-P6)
  93.     IF Y2=P6 AND X2=P5 AND RND<.7 THEN K$="THE LRT":GOTO 770    REM FIND!
  94.     FOR I=1 TO R
  95.     IF X(I)<>P5 OR Y(I)<>P6 THEN GOTO 760
  96.     PRINT"LRT HAS A LEAD":PRINT"AN AIRCRAFT WAS SEEN FLYING ";
  97.     IF Y2<P6 THEN PRINT "NORTH"; ELSE PRINT "SOUTH";
  98.     IF X2<P5 THEN PRINT "WEST"; ELSE PRINT "EAST";
  99.     PRINT " IN GRID ";32*P6+P5
  100. 760 NEXT I
  101. 770 RETURN
  102. REM END OF GAME ROUTINE *******************************************************
  103. 800 PRINT "A/C FOUND IN GRID ";32*Y2+X2;"BY ";K$
  104. PRINT "TOTAL SEARCH EFFORT WAS ";INT(L/3);"HOURS AND ";(L-3*INT(L/3))*20;"MIN"
  105. END
  106. THIS IS THE GAME SERCHGME.BAS.  ITS PURPOSE IS TO SIMULATE, USING A COMPUTER
  107. PROGRAM, THE SEARCH METHODS USED IN ALLOCATING FORCES FOR A DOWNED AIRCRAFT
  108. SEARCH MISSION.  THIS PROGRAM IS FURTHER DESCRIBED IN THE FOLLOWING PARAGRAPHS.
  109.  
  110. A.OBJECTIVE--TO FIND A MISSING AIRCRAFT
  111.  
  112. B.RESOURCES--TWO AIRCRAFT AND ONE LRT(LAND RESCUE TEAM). THE AIRCRAFT N532GF IS
  113. CAPABLE OF HEARING THE ELT IF IT IS WITHIN ONE GRID OF THE TARGET (AND THE ELT
  114. (EMERGENCY LOCATION TRANSMITTER) IS TURNED ON OF COURSE). AIRCRAFT N8633S CAN
  115. ONLY BE USED FOR VISUAL SEARCHES. THE LRT CAN FIND LEADS THAT TELL WHICH WAY
  116. THE MISSING AIRCRAFT WAS SEEN FLYING.  NO PHONEY LEADS ARE GIVEN.  ALL SEARCH
  117. UNITS HAVE A 70% CHANCE OF FINDING THE TARGET PROVIDING THAT THEY ARE LOCATED
  118. IN THE TARGET GRID.
  119.  
  120. C.PLAYING BOARD--THE PLAYING BOARD CONSISTS OF 512 GRIDS NUMBERED FROM LEFT TO
  121. RIGHT STARTING FROM UPPER LEFT, WITH 32 ACROSS THE TOP. IF YOU HAVE A PRINTER
  122. THE PROGRAM WILL TYPE OUT A NUMBERED GRID PLAYING BOARD.
  123.  
  124. D.ASSIGNMENT--TYPING A '1' WILL ALLOW YOU TO ASSIGN ANY OF THE AIRCRAFT OR THE
  125. LRT TO A GRID. ONCE A GRID IS ASSIGNED YOU MUST USE THE COMMAND '0' TO GET THE
  126. UNIT TO MOVE TO THAT GRID AND BEGIN SEARCH OPERATIONS.  THERE IS A PENALTY OF
  127. 20 MINUTES(SIMULATED TIME) FOR EACH MOVE WHETHER OR NOT 1 OR ALL 3 UNITS ARE
  128. MOVING. THE AIRCRAFT N532GF CAN MOVE 3 GRIDS PER TURN, N8633S MOVES 2 GRIDS
  129. AND THE LRT WILL MOVE 1 GRID. THEY WILL MOVE THE SHORTEST DISTANCE BY MOVING
  130. VERTICALLY, HORIZONTALLY ONLY. ONCE IN THE ASSIGNED GRID THEY WILL REMAIN 
  131. THERE UNTIL REASSIGNED.
  132.  
  133. E.ELT--ONLY THE AIRCRAFT N532GF CAN FIND AN ELT. THE ELT WILL REMAIN ON FOR 4
  134. HOURS. BETWEEN 4 AND 8 HOURS THE ELT WILL BE RANDOMLY ON AND OFF. THE ELT 
  135. CANNOT BE HEARD AFTER 8 HOURS.
  136.  
  137. F.LEADS--CERTAIN GRIDS WILL CONTAIN LEADS THAT MAY BE FOUND BY THE LRT. THE
  138. LRT MUST MOVE INTO THESE GRIDS IN ORDER TO DISCOVER THESE LEADS.
  139.  
  140. G.HAZARDS--BOTH AIRCRAFT HAVE A SMALL CHANCE OF HAVING THE PILOT GET LOST,
  141. OBSERVER GET AIRSICK OR OF FLYING INTO A STORM. IF THIS HAPPENS THE AIRCRAFT
  142. WILL IMMEDIATELY LAND AND NOTIFY YOU OF THE SITUATION. ALSO WHEN THE AIRCRAFT
  143. RUNS OUT OF GAS IT WILL LAND IN THE NEAREST GRID.
  144.  
  145. H.STATUS BOARDS--TYPING A '2' WILL SHOW THE MISSION TIME, CURRENT LOCATION OF
  146. ALL UNITS, CURRENT ASSIGNMENT OF UNITS AND THE FUEL SITUATION. THERE IS NO
  147. PENALTY FOR CHECKING STATUS.
  148.  
  149. I MOVE--TYPING A '0' WILL CAUSE THE UNITS TO MOVE TO THEIR ASSIGNED GRIDS,
  150. ADVANCE THE CLOCK AND FIND ANY LEADS, ELT REPORTS OR HAZARDS. AFTER THEY ARE
  151. ASSIGNED, THE UNITS MOVE DIAGONALLY TO THE NEAREST ROW OR COLUMN WHICH CONTAINS
  152. THEIR ASSIGNED GRID, AND THEN THEY MOVE ACROSS THE ROW OR UP/DOWN THE COLUMN
  153. UNTIL THEIR ASSIGNED GRID IS REACHED.  IF IT IS NOT POSSIBLE TO REACH THE
  154. ASSIGNED GRID IN ONE TURN, DUE TO MOVEMENT LIMITATIONS OF THE UNITS, THE UNITS
  155. WILL CONTINUE THEIR JOURNEY,UNLESS REASSIGNED TO A NEW GRID, UPON THE NEXT
  156. MOVEMENT COMMAND (COMMAND '0'). EVERY GRID THAT THE UNIT PASSES THROUGH IS 
  157. VISUALLY AND ELECTRONICALLY (N532GF ONLY) SEARCHED.
  158.  
  159. J.CONCLUSION--WHEN A SEARCH UNIT HAS FOUND THE TARGET YOUWILL BE NOTIFIED. IF
  160. YOU GIVE UP, TYPING A '3' WILL CONCLUDE THE GAME.
  161.  
  162. K.GENERAL NOTES--THE MISSING AIRCRAFT WILL ALWAYS BE ON THE PLAYING BOARD.
  163. AND IT WILL BE IN THE QUADRANT FROM THE DEPARTURE AIRPORT THAT THE DESTINATION
  164. AIRPORT IS IN. THERE IS A 45 DEGREE AMBIGUITY IN THE DIRECTIONS GIVEN IN THE 
  165. LEADS. FOR INSTANCE A LEAD THAT SAYS THAT THE AIRCRAFT WAS SEEN FLYING
  166. NORTHEAST MAY VERY WELL BE REFERING TO AN AIRCRAFT THAT WAS ACTUALLY FLYING
  167. DIRECTLY NORTH OR DIRECTLY EAST.
  168.  
  169. PROGRAM NOTES--THIS PROGRAM WAS ORIGINALLY WRITTEN BY CAPTAIN BRUCE BEAM CAP
  170. (WISCONSIN WING). IT HAS BEEN SOMEWHAT REWRITTEN AND REFORMATTED FOR THE 
  171. PROGRAM LANGUAGE CBASIC AND BASIC-E BY MAJOR BOB GREGOIRE (GROUP 30 PA WING)
  172.