--- deliantra/server/random_maps/square_spiral.C 2007/01/06 14:42:30 1.6 +++ deliantra/server/random_maps/square_spiral.C 2007/07/01 05:00:19 1.10 @@ -1,27 +1,25 @@ /* - CrossFire, A Multiplayer game for X-windows - - Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team - Copyright (C) 2001 Mark Wedel & Crossfire Development Team - Copyright (C) 1992 Frank Tore Johansen - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - The authors can be reached via e-mail at -*/ - + * This file is part of Crossfire TRT, the Roguelike Realtime MORPG. + * + * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team + * Copyright (©) 2001,2007 Mark Wedel & Crossfire Development Team + * Copyright (©) 1992,2007 Frank Tore Johansen + * + * Crossfire TRT is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * The authors can be reached via e-mail to + */ /* peterm@langmuir.eecs.berkeley.edu: this function generates a random snake-type layout. @@ -61,14 +59,15 @@ void find_top_left_corner (char **maze, int *cx, int *cy) { + --(*cy); - (*cy)--; /* find the top wall. */ while (maze[*cx][*cy] == 0) - (*cy)--; + --(*cy); + /* proceed right until a corner is detected */ while (maze[*cx][*cy + 1] == 0) - (*cx)++; + ++(*cx); /* cx and cy should now be the top-right corner of the onion layer */ } @@ -89,21 +88,21 @@ cy = 0; for (i = 0; i < xsize; i++) for (j = 0; j < ysize; j++) - { - if (maze[i][j] == 'C') - { - cx = i; - cy = j; - } - } + if (maze[i][j] == 'C') + { + cx = i; + cy = j; + } + tx = cx; ty = cy; - while (1) + for (;;) { find_top_left_corner (maze, &tx, &ty); if (ty < 2 || tx < 2 || tx > xsize - 2 || ty > ysize - 2) break; + make_wall (maze, tx, ty - 1, 1); /* make a vertical wall with a door */ maze[tx][ty - 1] = '#'; /* convert the door that make_wall puts here to a wall */ @@ -131,7 +130,7 @@ /* place the exits. */ - if (RANDOM () % 2) + if (rndm (2)) { maze[cx][cy] = '>'; maze[xsize - 2][1] = '<'; @@ -144,3 +143,4 @@ return maze; } +