Annotation of 43BSDReno/games/atc/atc.6, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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