setgid to group "write" so that terminals need not be world writable
[unix-history] / usr / src / games / robots / play_level.c
CommitLineData
81c3a783
KM
1/*
2 * Copyright (c) 1980 Regents of the University of California.
3 * All rights reserved. The Berkeley software License Agreement
4 * specifies the terms and conditions for redistribution.
5 */
6
7#ifndef lint
2ab0461e 8static char sccsid[] = "@(#)play_level.c 5.2 (Berkeley) %G%";
81c3a783
KM
9#endif not lint
10
11# include "robots.h"
12
13/*
14 * play_level:
15 * Let the player play the current level
16 */
17play_level()
18{
19 register COORD *cp;
20 register int y, x, bonus;
21
22 move(My_pos.y, My_pos.x);
23 addch(PLAYER);
24 refresh();
25 for (cp = Robots; cp < &Robots[MAXROBOTS]; cp++) {
2ab0461e
KM
26 if (cp->y < 0)
27 continue;
81c3a783
KM
28 move(cp->y, cp->x);
29 addch(ROBOT);
30 }
31 refresh();
32# ifdef DEBUG
33 standout();
34 move(Min.y, Min.x);
35 addch(inch());
36 move(Max.y, Max.x);
37 addch(inch());
38 standend();
39# endif DEBUG
40 setjmp(End_move);
41 flush_in();
42 while (!Dead && Num_robots > 0) {
43 move(My_pos.y, My_pos.x);
44 if (!jumping())
45 refresh();
46 get_move();
47 if (Real_time)
48 alarm(0);
49 if (Field[My_pos.y][My_pos.x] != 0)
50 Dead = TRUE;
51 if (!Dead)
52 move_robots(FALSE);
53 if (Was_bonus) {
54 move(Y_PROMPT, X_PROMPT);
55 clrtoeol();
56 move(Y_PROMPT + 1, X_PROMPT);
57 clrtoeol();
58 Was_bonus = FALSE;
59 }
60 }
61
62 /*
63 * if the player didn't die, add on the possible bonuses
64 */
65
66 if (!Dead) {
67 Was_bonus = FALSE;
68
69 if (Level == Start_level && Start_level > 1) {
70 move(Y_PROMPT, X_PROMPT);
71 printw("Advance bonus: %d", S_BONUS);
72 refresh();
73 add_score(S_BONUS);
74 Was_bonus = TRUE;
75 }
76
77 if (Wait_bonus != 0) {
78 if (!Was_bonus)
79 move(Y_PROMPT, X_PROMPT);
80 else
81 move(Y_PROMPT + 1, X_PROMPT);
82 printw("Wait bonus: %d", Wait_bonus);
83 refresh();
84 add_score(Wait_bonus);
85 Was_bonus = TRUE;
86 }
87 }
88}