Expand PMF_FN_* macros.
[netbsd-mini2440.git] / games / robots / init_field.c
blob02379b7487a8458095f3b8fb18142fe82c586f53
1 /* $NetBSD: init_field.c,v 1.11 2009/07/20 06:09:29 dholland Exp $ */
3 /*
4 * Copyright (c) 1980, 1993
5 * The Regents of the University of California. All rights reserved.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the University nor the names of its contributors
16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission.
19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
32 #include <sys/cdefs.h>
33 #ifndef lint
34 #if 0
35 static char sccsid[] = "@(#)init_field.c 8.1 (Berkeley) 5/31/93";
36 #else
37 __RCSID("$NetBSD: init_field.c,v 1.11 2009/07/20 06:09:29 dholland Exp $");
38 #endif
39 #endif /* not lint */
41 #include <curses.h>
42 #include "robots.h"
44 static int telx = 0;
45 static int tely = 0;
48 * init_field:
49 * Lay down the initial pattern whih is constant across all levels,
50 * and initialize all the global variables.
52 void
53 init_field(void)
55 int i;
56 static bool first = true;
57 static const char *const desc[] = {
58 "Directions:",
59 "",
60 "y k u",
61 " \\|/",
62 "h- -l",
63 " /|\\",
64 "b j n",
65 "",
66 "Commands:",
67 "",
68 "w: wait for end",
69 "t: teleport",
70 "q: quit",
71 "^L: redraw screen",
72 "",
73 "Legend:",
74 "",
75 "+: robot",
76 "*: junk heap",
77 "@: you",
78 "",
79 "Score: 0",
80 NULL
83 Dead = false;
84 Waiting = false;
85 Score = 0;
87 erase();
88 move(0, 0);
89 addch('+');
90 for (i = 1; i < Y_FIELDSIZE; i++) {
91 move(i, 0);
92 addch('|');
94 move(Y_FIELDSIZE, 0);
95 addch('+');
96 for (i = 1; i < X_FIELDSIZE; i++)
97 addch('-');
98 addch('+');
99 if (first)
100 refresh();
101 move(0, 1);
102 for (i = 1; i < X_FIELDSIZE; i++)
103 addch('-');
104 addch('+');
105 for (i = 1; i < Y_FIELDSIZE; i++) {
106 move(i, X_FIELDSIZE);
107 addch('|');
109 if (first)
110 refresh();
111 for (i = 0; desc[i] != NULL; i++) {
112 move(i, X_FIELDSIZE + 2);
113 addstr(desc[i]);
115 telx = X_FIELDSIZE + 2;
116 tely = i;
117 if (first)
118 refresh();
119 first = false;
120 #ifdef FANCY
121 if (Pattern_roll)
122 Next_move = &Move_list[-1];
123 #endif
126 void
127 telmsg(int on)
129 move(tely, telx);
130 addstr(on ? "Teleport!" : " ");