xref: /csrg-svn/games/robots/make_level.c (revision 60840)
121467Smckusick /*
2*60840Sbostic  * Copyright (c) 1980, 1993
3*60840Sbostic  *	The Regents of the University of California.  All rights reserved.
433690Sbostic  *
542589Sbostic  * %sccs.include.redist.c%
621467Smckusick  */
721467Smckusick 
821467Smckusick #ifndef lint
9*60840Sbostic static char sccsid[] = "@(#)make_level.c	8.1 (Berkeley) 05/31/93";
1033690Sbostic #endif /* not lint */
1121467Smckusick 
1221467Smckusick # include	"robots.h"
1321467Smckusick 
1421467Smckusick /*
1521467Smckusick  * make_level:
1621467Smckusick  *	Make the current level
1721467Smckusick  */
make_level()1821467Smckusick make_level()
1921467Smckusick {
2021467Smckusick 	register int	i;
2121467Smckusick 	register COORD	*cp;
2221467Smckusick 	register WINDOW	*wp;
2321467Smckusick 	register int	x, *endp;
2421467Smckusick 
2521467Smckusick 	reset_count();
2621467Smckusick 	for (i = 1; i < Y_FIELDSIZE; i++)
2721467Smckusick 		for (x = 1; x < X_FIELDSIZE; x++)
2821467Smckusick 			if (Field[i][x] != 0)
2921467Smckusick 				mvaddch(i, x, ' ');
3021467Smckusick 	if (My_pos.y > 0)
3121467Smckusick 		mvaddch(My_pos.y, My_pos.x, ' ');
3221467Smckusick 
3321467Smckusick 	Waiting = FALSE;
3421467Smckusick 	Wait_bonus = 0;
3521467Smckusick 	leaveok(stdscr, FALSE);
3621467Smckusick 	for (cp = Robots; cp < &Robots[MAXROBOTS]; cp++)
3721467Smckusick 		cp->y = -1;
3821467Smckusick 	My_pos.y = -1;
3921467Smckusick 
4021467Smckusick 	bzero(Field, sizeof Field);
4121467Smckusick 	Min.y = Y_FIELDSIZE;
4221467Smckusick 	Min.x = X_FIELDSIZE;
4321467Smckusick 	Max.y = 0;
4421467Smckusick 	Max.x = 0;
4521467Smckusick 	if ((i = Level * 10) > MAXROBOTS)
4621467Smckusick 		i = MAXROBOTS;
4721467Smckusick 	Num_robots = i;
4821467Smckusick 	while (i-- > 0) {
4921467Smckusick 		cp = rnd_pos();
5021467Smckusick 		Robots[i] = *cp;
5121467Smckusick 		Field[cp->y][cp->x]++;
5221467Smckusick 		if (cp->y < Min.y)
5321467Smckusick 			Min.y = cp->y;
5421467Smckusick 		if (cp->x < Min.x)
5521467Smckusick 			Min.x = cp->x;
5621467Smckusick 		if (cp->y > Max.y)
5721467Smckusick 			Max.y = cp->y;
5821467Smckusick 		if (cp->x > Max.x)
5921467Smckusick 			Max.x = cp->x;
6021467Smckusick 	}
6121467Smckusick 	My_pos = *rnd_pos();
6221467Smckusick 	refresh();
6321467Smckusick }
64