|
|
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.