cleanup, add manual page
[unix-history] / usr / src / games / robots / play_level.c
CommitLineData
81c3a783
KM
1/*
2 * Copyright (c) 1980 Regents of the University of California.
4cd7a139
KB
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
b7647a4b
KB
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
81c3a783
KM
16 */
17
18#ifndef lint
b7647a4b 19static char sccsid[] = "@(#)play_level.c 5.4 (Berkeley) %G%";
4cd7a139 20#endif /* not lint */
81c3a783
KM
21
22# include "robots.h"
23
24/*
25 * play_level:
26 * Let the player play the current level
27 */
28play_level()
29{
30 register COORD *cp;
31 register int y, x, bonus;
32
33 move(My_pos.y, My_pos.x);
34 addch(PLAYER);
35 refresh();
36 for (cp = Robots; cp < &Robots[MAXROBOTS]; cp++) {
2ab0461e
KM
37 if (cp->y < 0)
38 continue;
81c3a783
KM
39 move(cp->y, cp->x);
40 addch(ROBOT);
41 }
42 refresh();
43# ifdef DEBUG
44 standout();
45 move(Min.y, Min.x);
46 addch(inch());
47 move(Max.y, Max.x);
48 addch(inch());
49 standend();
50# endif DEBUG
51 setjmp(End_move);
52 flush_in();
53 while (!Dead && Num_robots > 0) {
54 move(My_pos.y, My_pos.x);
55 if (!jumping())
56 refresh();
57 get_move();
58 if (Real_time)
59 alarm(0);
60 if (Field[My_pos.y][My_pos.x] != 0)
61 Dead = TRUE;
62 if (!Dead)
63 move_robots(FALSE);
64 if (Was_bonus) {
65 move(Y_PROMPT, X_PROMPT);
66 clrtoeol();
67 move(Y_PROMPT + 1, X_PROMPT);
68 clrtoeol();
69 Was_bonus = FALSE;
70 }
71 }
72
73 /*
74 * if the player didn't die, add on the possible bonuses
75 */
76
77 if (!Dead) {
78 Was_bonus = FALSE;
79
80 if (Level == Start_level && Start_level > 1) {
81 move(Y_PROMPT, X_PROMPT);
82 printw("Advance bonus: %d", S_BONUS);
83 refresh();
84 add_score(S_BONUS);
85 Was_bonus = TRUE;
86 }
87
88 if (Wait_bonus != 0) {
89 if (!Was_bonus)
90 move(Y_PROMPT, X_PROMPT);
91 else
92 move(Y_PROMPT + 1, X_PROMPT);
93 printw("Wait bonus: %d", Wait_bonus);
94 refresh();
95 add_score(Wait_bonus);
96 Was_bonus = TRUE;
97 }
98 }
99}