Commit | Line | Data |
---|---|---|
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 | 8 | static 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 | */ | |
17 | play_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 | } |