Annotation of 43BSDReno/games/atc/atc.6, revision 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.