Annotation of 43BSDTahoe/man/man6/atc.6, revision 1.1.1.1

1.1       root        1: .       \" XP - exdented paragraph
                      2: .de XP
                      3: .RT
                      4: .if \\n(1T .sp \\n(PDu
                      5: .ne 1.1
                      6: .if !\\n(IP .nr IP +1
                      7: .in +\\n(I\\n(IRu
                      8: .ti -\\n(I\\n(IRu
                      9: ..
                     10: .\" Copyright (c) 1986 Ed James. All rights reserved. 
                     11: .\"
                     12: .TH ATC 6 "January 1, 1986"
                     13: .UC
                     14: .SH NAME
                     15: atc \- Air Traffic Controller Game
                     16: .SH SYNOPSIS
                     17: .B atc
                     18: -[u?lstp] [-[gf] game_name] [-r random seed]
                     19: .SH DESCRIPTION
                     20: .LP
                     21: .I Atc
                     22: lets you try your hand at the nerve wracking duties of the air traffic
                     23: controller without endangering the lives of millions of
                     24: travelers each year.
                     25: Your responsibilities require you to direct the flight of jets
                     26: and prop planes into and out of the flight arena and airports.
                     27: The speed (update time) and frequency of the planes depend on the
                     28: difficulty of the chosen arena.
                     29: .SH OPTIONS
                     30: .LP
                     31: .TP 8
                     32: .B \-u
                     33: Print the usage line and exit.
                     34: .TP
                     35: .B \-?
                     36: Same as
                     37: .B \-u.
                     38: .TP
                     39: .B \-l
                     40: Print a list of available games and exit.
                     41: The first game name printed is the default game.
                     42: .TP
                     43: .B \-s
                     44: Print the score list (formerly the Top Ten list).
                     45: .TP
                     46: .B \-t
                     47: Same as
                     48: .B \-s.
                     49: .TP
                     50: .B \-p
                     51: Print the path to the special directory where 
                     52: .I atc
                     53: expects to find its private files.  This is used during the
                     54: installation of the program.
                     55: .TP
                     56: .B "\-g game"
                     57: Play the named game.  If the game listed is not one of the
                     58: ones printed from the 
                     59: .B \-l
                     60: option, the default game is played.
                     61: .TP
                     62: .B "\-f game"
                     63: Same as
                     64: .B \-g.
                     65: .TP
                     66: .B "\-r seed"
                     67: Set the random seed.  The purpose of this flag is questionable.
                     68: .SH GOALS
                     69: .LP
                     70: Your goal in 
                     71: .I atc
                     72: is to keep the game going as long as possible.  
                     73: There is no winning state, except to beat the times of other players.
                     74: You will need to: launch planes at airports (by instructing them to
                     75: increase their altitude); land planes at airports (by instructing them to
                     76: go to altitude zero when exactly over the airport); and maneuver planes
                     77: out of exit points.  
                     78: .LP
                     79: Several things will cause the end of the game.
                     80: Each plane has a destination (see information area), and 
                     81: sending a plane to the wrong destination is an error.
                     82: Planes can run out of fuel, or can collide.  Collision is defined as
                     83: adjacency in any of the three dimensions.  A plane leaving the arena
                     84: in any other way than through its destination exit is an error as well.
                     85: .LP
                     86: Scores are sorted in order of the number of planes safe.  The other
                     87: statistics are provided merely for fun.  There is no penalty for 
                     88: taking longer than another player (except in the case of ties).
                     89: .LP
                     90: Suspending a game is not permitted.  If you get a talk message, tough.
                     91: When was the last time an Air Traffic Controller got called away to
                     92: the phone? 
                     93: .SH "THE DISPLAY"
                     94: .LP
                     95: Depending on the terminal you run 
                     96: .I atc
                     97: on, the screen will be divided into 4 areas. 
                     98: It should be stressed that the terminal driver portion of the
                     99: game was designed to be reconfigurable, so the display format can vary
                    100: depending the version you are playing.  The descriptions here are based 
                    101: on the ascii version
                    102: of the game.  The game rules and input format, however,
                    103: should remain consistent.
                    104: Control-L redraws the screen, should it become muddled.
                    105: .SS RADAR
                    106: .IP
                    107: The first screen area is the radar display, showing the relative locations
                    108: of the planes, airports, standard entry/exit points, radar
                    109: beacons, and "lines" which simply serve to aid you in guiding
                    110: the planes. 
                    111: .IP
                    112: Planes are shown as a single letter with an altitude.  If
                    113: the numerical altitude is a single digit, then it represents
                    114: thousands of feet.
                    115: Some distinction is made between the prop
                    116: planes and the jets.  On ascii terminals, prop planes are
                    117: represented by a upper case letter, jets by a lower case letter.
                    118: .IP
                    119: Airports are shown as a number and some indication of the direction
                    120: planes must be going to land at the airport.  
                    121: On ascii terminals, this is one of '^', '>', '<', and 'v', to indicate
                    122: north (0 degrees), east (90), west (270) and south (180), respectively.
                    123: The planes will also
                    124: take off in this direction.
                    125: .IP
                    126: Beacons are represented as circles or asterisks and a number.
                    127: Their purpose is to offer a place of easy reference to the plane pilots.
                    128: See 'the delay command' under the input section of this manual.
                    129: .IP
                    130: Entry/exit points are displayed as numbers along the border of the 
                    131: radar screen.  Planes will enter the arena from these points without
                    132: warning.  These points have a direction associated with them, and 
                    133: planes will always enter the arena from this direction.  On the
                    134: ascii version of
                    135: .I atc,
                    136: this direction is not displayed.  It will become apparent
                    137: what this direction is as the game progresses.
                    138: .IP
                    139: Incoming planes will always enter at the same altitude: 7000 feet.
                    140: For a plane to successfully depart through an entry/exit point, 
                    141: it must be flying at 9000 feet.
                    142: It is not necessary for the planes to be flying in any particular
                    143: direction when they leave the arena (yet).
                    144: .SS "INFORMATION AREA"
                    145: .IP
                    146: The second area of the display is the information area, which lists
                    147: the time (number of updates since start), and the number of planes you
                    148: have directed safely out of the arena.
                    149: Below this is a list of planes currently in the air, followed by a 
                    150: blank line, and then a list of planes on the ground (at airports).
                    151: Each line lists the plane name and its current altitude, 
                    152: an optional asterisk indicating low fuel, the plane's destination,
                    153: and the plane's current command.  Changing altitude is not considered
                    154: to be a command and is therefore not displayed.  The following are 
                    155: some possible information lines:
                    156: .IP
                    157:        B4*A0: Circle @ b1
                    158: .br
                    159:        g7 E4: 225
                    160: .IP
                    161: The first example shows a prop plane named 'B' that is flying at 4000
                    162: feet.  It is low on fuel (note the '*').  It's destination is
                    163: Airport #0.
                    164: The next command it expects
                    165: to do is circle when it reaches Beacon #1.
                    166: The second example shows a jet named 'g' at 7000 feet, destined for 
                    167: Exit #4.  It is just now executing a turn to 225 degrees (South-West).
                    168: .SS "INPUT AREA"
                    169: .IP
                    170: The third area of the display is the input area.  It is here that 
                    171: your input is reflected.  See the INPUT heading of this manual
                    172: for more details.
                    173: .SS "AUTHOR AREA"
                    174: .IP
                    175: This area is used simply to give credit where credit is due. :-)
                    176: .SH INPUT
                    177: .LP
                    178: A command completion interface is built into
                    179: the game.  At any time, typing '?' will list possible input characters.
                    180: Typing a backspace (your erase character) backs up, erasing the last part
                    181: of the command.  When a command is complete, a return enters it, and 
                    182: any semantic checking is done at that time.  If no errors are detected,
                    183: the command is sent to the appropriate plane.  If an error is discovered
                    184: during the check, the offending statement will be underscored and a
                    185: (hopefully) descriptive message will be printed under it.
                    186: .LP
                    187: The command syntax is broken into two parts:
                    188: .I "Immediate Only"
                    189: and 
                    190: .I Delayable
                    191: commands.
                    192: .I "Immediate Only"
                    193: commands happen on the next
                    194: update.  
                    195: .I Delayable
                    196: commands also happen on the next update unless they
                    197: are followed by an optional predicate called the 
                    198: .I Delay 
                    199: command.
                    200: .LP
                    201: In the following tables, the syntax 
                    202: .B [0\-9]
                    203: means any single digit, and 
                    204: .B <dir>
                    205: refers to the keys around the 's' key, namely ``wedcxzaq''.
                    206: In absolute references, 'q' refers to North-West or 315 degrees, and 'w'
                    207: refers to North, or 0 degrees.  
                    208: In relative references, 'q' refers to -45 degrees or 45 degrees left, and 'w'
                    209: refers to 0 degrees, or no change in direction.
                    210: .LP
                    211: All commands start with a plane letter.  This indicates the recipient
                    212: of the command.  Case is ignored.
                    213: .SS "IMMEDIATE ONLY COMMANDS"
                    214: .RS
                    215: .B "\- a Altitude:"
                    216: .RS
                    217: Affect a plane's altitude (and take off).
                    218: .RE
                    219: .RS
                    220: .B "\- [0\-9] Number:"
                    221: .RS
                    222: Go to the given altitude (thousands of feet).
                    223: .RE
                    224: .B "\- c/+ Climb:"
                    225: .RS
                    226: Relative altitude change.
                    227: .RE
                    228: .RS
                    229: .B "\- [0\-9] Number:"
                    230: .RS
                    231: Difference in thousands of feet.
                    232: .RE
                    233: .RE
                    234: .B "\- d/\- Descend:"
                    235: .RS
                    236: Relative altitude change.
                    237: .RE
                    238: .RS
                    239: .B "\- [0\-9] Number:"
                    240: .RS
                    241: Difference in thousands of feet.
                    242: .RE
                    243: .RE
                    244: .RE
                    245: .B "\- m Mark:"
                    246: .RS
                    247: Display in highlighted mode.  Command is displayed normally.
                    248: .RE
                    249: .B "\- i Ignore:"
                    250: .RS
                    251: Do not display highlighted.  Command is displayed as a
                    252: line of dashes if there is no command.
                    253: .RE
                    254: .B "\- u Unmark:"
                    255: .RS
                    256: Same as ignore, but if a delayed command is processed, 
                    257: the plane will become marked.  This is useful if you want
                    258: to forget about a plane during part, but not all, of its
                    259: journey.
                    260: .RE
                    261: .RE
                    262: .SS "DELAYABLE COMMANDS"
                    263: .RS
                    264: .B "\- c Circle:"
                    265: .RS
                    266: Have the plane circle (clockwise by default).
                    267: .RE
                    268: .RS
                    269: .B "\- l Left:"
                    270: .RS
                    271: Circle counterclockwise.
                    272: .RE
                    273: .B "\- r Right:"
                    274: .RS
                    275: Circle clockwise.
                    276: .RE
                    277: .RE
                    278: .B "\- t Turn:"
                    279: .RS
                    280: Change direction.
                    281: .RE
                    282: .RS
                    283: .B "\- l Left:"
                    284: .RS
                    285: Turn counterclockwise (45 degrees by default).
                    286: .RE
                    287: .RS
                    288: .B "\- <dir> Direction:"
                    289: .RS
                    290: Turn ccw the given number of degrees.
                    291: Zero degrees is no turn.  A ccw turn
                    292: of -45 degrees is 45 cw.
                    293: .RE
                    294: .RE
                    295: .B "\- r Right:"
                    296: .RS
                    297: Turn clockwise (45 degrees by default).
                    298: .RE
                    299: .RS
                    300: .B "\- <dir> Direction:"
                    301: .RS
                    302: Same as turn left <dir>.
                    303: .RE
                    304: .RE
                    305: .B "\- L Left 90:"
                    306: .RS
                    307: Turn counterclockwise 90 degrees.
                    308: .RE
                    309: .B "\- R Right 90:"
                    310: .RS
                    311: Turn clockwise 90 degrees.
                    312: .RE
                    313: .B "\- <dir> Direction:"
                    314: .RS
                    315: Turn to the absolute compass heading given.
                    316: The shortest turn will be taken.
                    317: .RE
                    318: .B "\- t Towards:"
                    319: .RS
                    320: Turn towards a beacon, airport or exit.  The turn is
                    321: just an estimate.
                    322: .RE
                    323: .RS
                    324: .B "\- b/* Beacon:"
                    325: .RS
                    326: Turn towards the beacon.
                    327: .RE
                    328: .RS
                    329: .B "\- [0-9] Number:"
                    330: .RS
                    331: The beacon number.
                    332: .RE
                    333: .RE
                    334: .B "\- e Exit:"
                    335: .RS
                    336: Turn towards the exit.
                    337: .RE
                    338: .RS
                    339: .B "\- [0-9] Number:"
                    340: .RS
                    341: The exit number.
                    342: .RE
                    343: .RE
                    344: .B "\- a Airport:"
                    345: .RS
                    346: Turn towards the airport.
                    347: .RE
                    348: .RS
                    349: .B "\- [0-9] Number:"
                    350: .RS
                    351: The airport number.
                    352: .RE
                    353: .RE
                    354: .RE
                    355: .RE
                    356: .RE
                    357: .SS THE DELAY COMMAND
                    358: .LP
                    359: The 
                    360: .B Delay
                    361: (a/@)
                    362: command may be appended to any 
                    363: .B Delayable 
                    364: command.  It allows the controller to instruct a plane to do an action
                    365: when the plane reaches a particular beacon (or other objects in future
                    366: versions).
                    367: .sp
                    368: .RS
                    369: .B "\- a/@ At:"
                    370: .RS
                    371: Do the given delayable command when the plane reaches the given beacon.
                    372: .RE
                    373: .RS
                    374: .B "\- b/* Beacon:"
                    375: .RS
                    376: This is redundant to allow for expansion.
                    377: .RE
                    378: .RS
                    379: .B "\- [0-9] Number:"
                    380: .RS
                    381: The beacon number.
                    382: .RE
                    383: .RE
                    384: .RE
                    385: .RE
                    386: .SS "MARKING, UNMARKING AND IGNORING"
                    387: .LP
                    388: Planes are 
                    389: .B marked
                    390: when they enter the arena.  This means they are displayed in highlighted
                    391: mode on the radar display.  A plane may also be either 
                    392: .B unmarked
                    393: or
                    394: .B ignored.
                    395: An
                    396: .B unmarked
                    397: plane is drawn in unhighlighted mode, and a line of dashes is displayed in
                    398: the command field of the information area.  The plane will remain this
                    399: way until a mark command has been issued.  Any other command will be issued,
                    400: but the command line will return to a line of dashes when the command
                    401: is completed.  
                    402: .LP
                    403: An
                    404: .B ignored
                    405: plane is treated the same as an unmarked plane, except that it will
                    406: automatically switch to 
                    407: .B marked
                    408: status when a delayed command has been processed.  This is useful if
                    409: you want to forget about a plane for a while, but its flight path has
                    410: not yet been completely set.
                    411: .LP
                    412: As with all of the commands, marking, unmarking and ignoring will take effect 
                    413: at the beginning of the next update.  Do not be surprised if the plane does
                    414: not immediately switch to unhighlighted mode.
                    415: .SS EXAMPLES
                    416: .RS
                    417: .TP 16
                    418: atlab1
                    419: a: turn left at beacon #1
                    420: .TP 16
                    421: cc
                    422: C: circle
                    423: .TP 16
                    424: gtte4ab2
                    425: g: turn towards exit #4 at beacon #2
                    426: .TP 16
                    427: ma+2
                    428: m: altitude: climb 2000 feet
                    429: .TP 16
                    430: stq
                    431: S: turn to 315
                    432: .TP 16
                    433: xi
                    434: x: ignore
                    435: .RE
                    436: .SH "OTHER INFORMATION"
                    437: .LP
                    438: Jets move every update; prop planes move every other update.
                    439: .LP
                    440: All planes turn a most 90 degrees per movement.
                    441: .LP
                    442: Planes enter at 7000 feet and leave at 9000 feet.
                    443: .LP
                    444: Planes flying at an altitude of 0 crash if they are not over an airport.
                    445: .LP
                    446: Planes waiting at airports can only be told to take off (climb in altitude).
                    447: .SH "NEW GAMES"
                    448: .LP
                    449: The 
                    450: .B Game_List
                    451: file lists the currently available play fields.  New field description
                    452: file names must be placed in this file to be 'playable'.  If a player
                    453: specifies a game not in this file, his score will not be logged.
                    454: .LP
                    455: The game field description files are broken into two parts.  The first
                    456: part is the definition section.  Here, the four tunable game parameters
                    457: must be set.  These variables are set with the syntax:
                    458: .IP
                    459: variable = number;
                    460: .LP
                    461: Variable may be one of: 
                    462: .B update,
                    463: indicating the number of seconds between forced updates;
                    464: .B newplane,
                    465: indicating (about) the number of updates between new plane entries;
                    466: .B width,
                    467: indicating the width of the play field; and
                    468: .B height,
                    469: indicating the height of the play field.
                    470: .LP
                    471: The second part of the field description files describes the locations
                    472: of the exits, the beacons, the airports and the lines.
                    473: The syntax is as follows:
                    474: .IP
                    475: beacon:        (x y) ... ;
                    476: .br
                    477: airport:       (x y direction) ... ;
                    478: .br
                    479: exit:  (x y direction) ... ;
                    480: .br
                    481: line:  [ (x1 y1) (x2 y2) ] ... ;
                    482: .LP
                    483: For beacons, a simple x, y coordinate pair is used (enclosed in parenthesis).
                    484: Airports and exits require a third value, a direction, which is one
                    485: of 
                    486: .B wedcxzaq.
                    487: For airports, this is the direction that planes must be going to take
                    488: off and land, and for exits, this is the direction that planes will going
                    489: when they
                    490: .B enter
                    491: the arena.  This may not seem intuitive, but as there is no restriction on
                    492: direction of exit, this is appropriate.
                    493: Lines are slightly different, since they need two coordinate pairs to
                    494: specify the line endpoints.  These endpoints must be enclosed in 
                    495: square brackets.
                    496: .LP
                    497: All statements are semi-colon (;) terminated.  Multiple item statements
                    498: accumulate.  Each definition must occur exactly once, before any
                    499: item statements.  Comments begin with a hash (#) symbol
                    500: and terminate with a newline.
                    501: The coordinates are between zero and width-1 and height-1
                    502: inclusive.  All of the exit coordinates must lie on the borders, and
                    503: all of the beacons and airports must lie inside of the borders.
                    504: Line endpoints may be anywhere within the field, so long as 
                    505: the lines are horizontal, vertical or 
                    506: .B "exactly diagonal."
                    507: .SS "FIELD FILE EXAMPLE"
                    508: .RS
                    509: .sp
                    510: .nf
                    511: .TA 1i 1i
                    512: .ta 1i 1i
                    513: # This is the default game.
                    514: 
                    515: update = 5;
                    516: newplane = 5;
                    517: width = 30;
                    518: height = 21;
                    519: 
                    520: exit:          ( 12  0 x ) ( 29  0 z ) ( 29  7 a ) ( 29 17 a )
                    521:                (  9 20 e ) (  0 13 d ) (  0  7 d ) (  0  0 c ) ;
                    522: 
                    523: beacon:                ( 12  7 ) ( 12 17 ) ;
                    524: 
                    525: airport:       ( 20 15 w ) ( 20 18 d ) ;
                    526: 
                    527: line:          [ (  1  1 ) (  6  6 ) ]
                    528:                [ ( 12  1 ) ( 12  6 ) ]
                    529:                [ ( 13  7 ) ( 28  7 ) ]
                    530:                [ ( 28  1 ) ( 13 16 ) ]
                    531:                [ (  1 13 ) ( 11 13 ) ]
                    532:                [ ( 12  8 ) ( 12 16 ) ]
                    533:                [ ( 11 18 ) ( 10 19 ) ]
                    534:                [ ( 13 17 ) ( 28 17 ) ]
                    535:                [ (  1  7 ) ( 11  7 ) ] ;
                    536: .fi
                    537: .RE
                    538: .SH FILES
                    539: .LP
                    540: Files are kept in a special directory. See the OPTIONS for a way to 
                    541: print this path out.
                    542: .TP 16
                    543: .B ATC_score
                    544: Where the scores are kept.
                    545: .TP 16
                    546: .B Game_List
                    547: The list of playable games.
                    548: .SH AUTHOR
                    549: .LP
                    550: Ed James, UC Berkeley: [email protected], ucbvax!edjames
                    551: .LP
                    552: This game is based on someone's description of the overall flavor
                    553: of a game written for some unknown PC many years ago, maybe.
                    554: .SH BUGS
                    555: .LP
                    556: The screen sometimes refreshes after you have quit.
                    557: .LP
                    558: Yet Another Curses Bug was discovered during the development of this game.
                    559: If your curses library clrtobot.o is version 5.1 or earlier, 
                    560: you will have erase problems with the backspace operator in the input
                    561: window.
                    562: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.