|
|
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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.