|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 988 (0x3dc)
Types: TextFile
Names: »perm.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Gb/perm.c«
/*
* Galactic Bloodshed (Robert Chansky, smq@ucscb.ucsc.edu)
* perm.c -- randomly permute a sector list
*/
#include "vars.h"
struct map {
char x,y;
} xymap[(MAX_X+1) * (MAX_Y+1)];
/* make a random list of sectors. */
PermuteSects(planet)
planettype *planet;
{
register int i,j,x,y;
struct map sw;
for (i=x=y=0; i < planet->Maxy*planet->Maxx; i++) {
xymap[i].x = x;
xymap[i].y = y;
if (++x >= planet->Maxx)
x=0,y++;
}
for (i=0; i<planet->Maxy*planet->Maxx; i++) {
sw = xymap[i];
xymap[i] = xymap[j = int_rand(0,planet->Maxy*planet->Maxx - 1)];
xymap[j] = sw;
}
}
/* get the next x,y sector in the list. if r=1, reset the counter.
** increments the counter & returns whether or not this reset it to 0.
*/
int Getxysect(p,x,y,r)
reg planettype *p;
reg int *x,*y,r;
{
static int getxy,max;
if (r) {
getxy = 0;
max = p->Maxx * p->Maxy;
} else {
*x = xymap[getxy].x;
*y = xymap[getxy].y;
if (++getxy > max)
getxy = 0;
}
return getxy;
}