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 >
Wrap
BASIC Source File
|
1984-04-29
|
9KB
|
172 lines
REM THIS IS THE PROGRAM "SERCHGME.BAS" AN AERIAL SEARCH FOR A DOWNED A/C
REM WRITTEN BY MJ.R.A.GREGOIRE, BASED UPON THE PROGRAM "C.A.P.SEARCH" WHICH WAS
REM WRITTEN BY CAPT. BRUCE BEAM CAP, 1683 COACHLIGHT DR NEW BERLIN,WI 53151
REM
INPUT"WOULD YOU LIKE TO HAVE A SEARCH GRID PRINTED?(Y/N)";K$:RANDOMIZE
IF LEFT$(K$,1)<>"Y" THEN GOTO 15 ELSE LPRINTER REM HARD COPY COMMAND
FOR I=1 TO 32:FOR J=1 TO 16:K$=STR$(32*(16-J)+I)
10 IF LEN(K$)<4 THEN K$=" "+K$:GOTO 10
PRINT K$;:NEXT J:PRINT:PRINT:NEXT I:PRINT CHR$(12):CONSOLE REM SOFT COPY
15 DIM X(36),Y(36),V(3),H(3)
X0=INT(31*RND)+1:Y0=INT(15*RND)+1:X1=INT(31*RND)+1:Y1=INT(15*RND)
P1=X0:P2=Y0:P3=X0:P4=Y0:P5=X0:P6=Y0:F1=28:F2=50:K$="A FARMER"
REM
REM INITIALIZATION ROUTINE FOLLOWS ********************************************
REM
R=RND*INT(.5+SQR((Y1-Y0)*(Y1-Y0)+(X1-X0)*(X1-X0)))
FOR I=1 TO R REM DESIGNATE LEAD GRIDS
S=S+INT(SGN(X1-X0)+SGN(.5-RND))
T=T+INT(SGN(Y1-Y0)+RND*1.99)
X(I)=X0+S:Y(I)=Y0+T
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
NEXT I:X2=X(I-1):Y2=Y(I-1) REM X2,Y2 IS X,Y COORD OF TARGET
20 PRINT "YOUR MISSION IS TO FIND AN AIRCRAFT THAT"
PRINT "DEPARTED AN AIRPORT IN ";32*Y0+X0;"FOR ONE IN ";32*Y1+X1
REM
REM COMMAND MENUE *************************************************************
REM
100 PRINT:INPUT"COMMAND? 0-MOVE UNITS, 1-ASSIGN UNITS, 2-STATUS, 3-QUIT";M
IF M=0 THEN L=L+1:GOSUB 400:GOSUB 500:GOSUB 700 REM L IS # OF MOVES
IF M=1 THEN GOSUB 200
IF M=2 THEN GOSUB 300
IF M=3 THEN GOTO 800
IF K$="A FARMER" THEN GOTO 100 ELSE GOTO 800 REM END OF GAME
REM
REM ASSIGN UNITS **************************************************************
REM
200 INPUT "WHICH UNIT? 1-'8633S' 2-'532GF' 3-'LRT'";N
IF N<1 OR N>3 THEN GOTO 200
210 INPUT "TO WHICH GRID IS THAT UNIT ASSIGNED";G
IF G<1 OR G>512 THEN GOTO 210 ELSE V(N)=INT((G-1)/32):H(N)=G-32*V(N)
RETURN
REM
REM STATUS ROUTINE ************************************************************
REM
300 PRINT "TIME ";INT(L/3);":";(L-3*INT(L/3))*20
PRINT "UNIT","33S","2GF","LRT"
PRINT:PRINT "ASSIGNED TO",V(1)*32+H(1),V(2)*32+H(2),V(3)*32+H(3)
PRINT "NOW IN",P2*32+P1,P4*32+P3,P6*32+P5
PRINT "FUEL",F1,F2
RETURN
REM
REM 8633S MOVE ROUTINE ********************************************************
REM
400 IF ((P2=V(1) AND P1=H(1)) AND (L<>1)) OR (V(1)=0 AND H(1)=0) THEN GOTO 440
FOR I=1 TO 2
IF F1-1>0 THEN F1=F1-1 ELSE PRINT"8633S DOWN FOR GAS IN ";\
32*P2+P1:F1=28:GOTO 440
IF P2<>V(1) THEN P2=P2+SGN(V(1)-P2) REM F1 IS FUEL REMAINING
IF P1<>H(1) THEN P1=P1+SGN(H(1)-P1)
IF RND<.07 THEN PRINT "8633S LANDING IN ";32*P2+P1;:GOSUB 600:GOTO 440
IF X2=P1 AND Y2=P2 AND RND<.7 THEN K$="A/C N8633S":GOTO 440 REM FIND!
NEXT I REM 8633S MUST BE IN TARGET GRID+RND>70% FOR FIND
440 RETURN
REM
REM 532GF MOVE ROUTINE*********************************************************
REM
500 IF ((P4=V(2) AND P3=H(2)) AND (L<>1)) OR (V(2)=0 AND H(2)=0) THEN GOTO 580
FOR I=1 TO 3
IF F2-1>0 THEN F2=F2-1 ELSE PRINT "532GF DOWN FOR GAS IN ";\
32*P4+P3:F2=50:GOTO 580
IF P4<>V(2) THEN P4=P4+SGN(V(2)-P4) REM F2 IS FUEL REMAINING
IF P3<>H(2) THEN P3=P3+SGN(H(2)-P3)
IF RND<.035 THEN PRINT "532GF LANDING IN ";32*P4+P3;:GOSUB 600:GOTO 580
IF ABS(Y2-P4)<=1 AND ABS(X2-P3)<=1 AND L<12+RND*12 THEN \
PRINT"ELT HEARD IN ";32*P4+P3
IF X2=P3 AND Y2=P4 AND RND<.7 THEN K$="A/C N532GF":GOTO 580 REM FIND!
NEXT I
580 RETURN
REM
REM HAZARD IDENTIFICATION ROUTINE *********************************************
REM
600 ON .501+2.999*RND GOTO 610,620,630
610 PRINT ",PILOT GOT LOST":GOTO 640
620 PRINT ",PRECAUTIONARY LANDING DUE TO STORM":GOTO 640
630 PRINT ",OBSERVER IS AIRSICK"
640 RETURN
REM
REM LRT(LAND RANGER TEAM) MOVE ROUTINE ****************************************
REM
700 IF ((P5=H(3) AND P6=V(3)) AND (L<>1)) OR (H(3)=0 AND V(3)=0) THEN GOTO 770
IF P5<>H(3) THEN P5=P5+SGN(H(3)-P5)
IF P6<>V(3) THEN P6=P6+SGN(V(3)-P6)
IF Y2=P6 AND X2=P5 AND RND<.7 THEN K$="THE LRT":GOTO 770 REM FIND!
FOR I=1 TO R
IF X(I)<>P5 OR Y(I)<>P6 THEN GOTO 760
PRINT"LRT HAS A LEAD":PRINT"AN AIRCRAFT WAS SEEN FLYING ";
IF Y2<P6 THEN PRINT "NORTH"; ELSE PRINT "SOUTH";
IF X2<P5 THEN PRINT "WEST"; ELSE PRINT "EAST";
PRINT " IN GRID ";32*P6+P5
760 NEXT I
770 RETURN
REM END OF GAME ROUTINE *******************************************************
800 PRINT "A/C FOUND IN GRID ";32*Y2+X2;"BY ";K$
PRINT "TOTAL SEARCH EFFORT WAS ";INT(L/3);"HOURS AND ";(L-3*INT(L/3))*20;"MIN"
END
THIS IS THE GAME SERCHGME.BAS. ITS PURPOSE IS TO SIMULATE, USING A COMPUTER
PROGRAM, THE SEARCH METHODS USED IN ALLOCATING FORCES FOR A DOWNED AIRCRAFT
SEARCH MISSION. THIS PROGRAM IS FURTHER DESCRIBED IN THE FOLLOWING PARAGRAPHS.
A.OBJECTIVE--TO FIND A MISSING AIRCRAFT
B.RESOURCES--TWO AIRCRAFT AND ONE LRT(LAND RESCUE TEAM). THE AIRCRAFT N532GF IS
CAPABLE OF HEARING THE ELT IF IT IS WITHIN ONE GRID OF THE TARGET (AND THE ELT
(EMERGENCY LOCATION TRANSMITTER) IS TURNED ON OF COURSE). AIRCRAFT N8633S CAN
ONLY BE USED FOR VISUAL SEARCHES. THE LRT CAN FIND LEADS THAT TELL WHICH WAY
THE MISSING AIRCRAFT WAS SEEN FLYING. NO PHONEY LEADS ARE GIVEN. ALL SEARCH
UNITS HAVE A 70% CHANCE OF FINDING THE TARGET PROVIDING THAT THEY ARE LOCATED
IN THE TARGET GRID.
C.PLAYING BOARD--THE PLAYING BOARD CONSISTS OF 512 GRIDS NUMBERED FROM LEFT TO
RIGHT STARTING FROM UPPER LEFT, WITH 32 ACROSS THE TOP. IF YOU HAVE A PRINTER
THE PROGRAM WILL TYPE OUT A NUMBERED GRID PLAYING BOARD.
D.ASSIGNMENT--TYPING A '1' WILL ALLOW YOU TO ASSIGN ANY OF THE AIRCRAFT OR THE
LRT TO A GRID. ONCE A GRID IS ASSIGNED YOU MUST USE THE COMMAND '0' TO GET THE
UNIT TO MOVE TO THAT GRID AND BEGIN SEARCH OPERATIONS. THERE IS A PENALTY OF
20 MINUTES(SIMULATED TIME) FOR EACH MOVE WHETHER OR NOT 1 OR ALL 3 UNITS ARE
MOVING. THE AIRCRAFT N532GF CAN MOVE 3 GRIDS PER TURN, N8633S MOVES 2 GRIDS
AND THE LRT WILL MOVE 1 GRID. THEY WILL MOVE THE SHORTEST DISTANCE BY MOVING
VERTICALLY, HORIZONTALLY ONLY. ONCE IN THE ASSIGNED GRID THEY WILL REMAIN
THERE UNTIL REASSIGNED.
E.ELT--ONLY THE AIRCRAFT N532GF CAN FIND AN ELT. THE ELT WILL REMAIN ON FOR 4
HOURS. BETWEEN 4 AND 8 HOURS THE ELT WILL BE RANDOMLY ON AND OFF. THE ELT
CANNOT BE HEARD AFTER 8 HOURS.
F.LEADS--CERTAIN GRIDS WILL CONTAIN LEADS THAT MAY BE FOUND BY THE LRT. THE
LRT MUST MOVE INTO THESE GRIDS IN ORDER TO DISCOVER THESE LEADS.
G.HAZARDS--BOTH AIRCRAFT HAVE A SMALL CHANCE OF HAVING THE PILOT GET LOST,
OBSERVER GET AIRSICK OR OF FLYING INTO A STORM. IF THIS HAPPENS THE AIRCRAFT
WILL IMMEDIATELY LAND AND NOTIFY YOU OF THE SITUATION. ALSO WHEN THE AIRCRAFT
RUNS OUT OF GAS IT WILL LAND IN THE NEAREST GRID.
H.STATUS BOARDS--TYPING A '2' WILL SHOW THE MISSION TIME, CURRENT LOCATION OF
ALL UNITS, CURRENT ASSIGNMENT OF UNITS AND THE FUEL SITUATION. THERE IS NO
PENALTY FOR CHECKING STATUS.
I MOVE--TYPING A '0' WILL CAUSE THE UNITS TO MOVE TO THEIR ASSIGNED GRIDS,
ADVANCE THE CLOCK AND FIND ANY LEADS, ELT REPORTS OR HAZARDS. AFTER THEY ARE
ASSIGNED, THE UNITS MOVE DIAGONALLY TO THE NEAREST ROW OR COLUMN WHICH CONTAINS
THEIR ASSIGNED GRID, AND THEN THEY MOVE ACROSS THE ROW OR UP/DOWN THE COLUMN
UNTIL THEIR ASSIGNED GRID IS REACHED. IF IT IS NOT POSSIBLE TO REACH THE
ASSIGNED GRID IN ONE TURN, DUE TO MOVEMENT LIMITATIONS OF THE UNITS, THE UNITS
WILL CONTINUE THEIR JOURNEY,UNLESS REASSIGNED TO A NEW GRID, UPON THE NEXT
MOVEMENT COMMAND (COMMAND '0'). EVERY GRID THAT THE UNIT PASSES THROUGH IS
VISUALLY AND ELECTRONICALLY (N532GF ONLY) SEARCHED.
J.CONCLUSION--WHEN A SEARCH UNIT HAS FOUND THE TARGET YOUWILL BE NOTIFIED. IF
YOU GIVE UP, TYPING A '3' WILL CONCLUDE THE GAME.
K.GENERAL NOTES--THE MISSING AIRCRAFT WILL ALWAYS BE ON THE PLAYING BOARD.
AND IT WILL BE IN THE QUADRANT FROM THE DEPARTURE AIRPORT THAT THE DESTINATION
AIRPORT IS IN. THERE IS A 45 DEGREE AMBIGUITY IN THE DIRECTIONS GIVEN IN THE
LEADS. FOR INSTANCE A LEAD THAT SAYS THAT THE AIRCRAFT WAS SEEN FLYING
NORTHEAST MAY VERY WELL BE REFERING TO AN AIRCRAFT THAT WAS ACTUALLY FLYING
DIRECTLY NORTH OR DIRECTLY EAST.
PROGRAM NOTES--THIS PROGRAM WAS ORIGINALLY WRITTEN BY CAPTAIN BRUCE BEAM CAP
(WISCONSIN WING). IT HAS BEEN SOMEWHAT REWRITTEN AND REFORMATTED FOR THE
PROGRAM LANGUAGE CBASIC AND BASIC-E BY MAJOR BOB GREGOIRE (GROUP 30 PA WING)