X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fpolyominoes.c;h=a3037d281c381e11ae6130b0cc39973356a7a03c;hp=c7b84a74a42146f5a3f9f6409bf42ba402e3551c;hb=4ade52359b6eba3621566dac79793a33aa4c915f;hpb=ff35d056d723c9a5ffe728dbba5f1c25e141be04 diff --git a/hacks/polyominoes.c b/hacks/polyominoes.c index c7b84a74..a3037d28 100644 --- a/hacks/polyominoes.c +++ b/hacks/polyominoes.c @@ -54,6 +54,9 @@ static const char sccsid[] = "@(#)polyominoes.c 5.01 2000/12/18 xlockmore"; static Bool identical; static Bool plain; +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + static XrmOptionDescRec opts[] = { {"-identical", ".polyominoes.identical", XrmoptionNoArg, "on"}, @@ -791,7 +794,7 @@ static void create_bitmaps(ModeInfo * mi, polyominoesstruct *sp) int x,y,n; char *data; - for (n=0;n<256;n++) { + for (n=0;nbitmaps);n++) { /* Avoid duplication of identical bitmaps. */ if (IS_LEFT_UP(n) && (IS_LEFT(n) || IS_UP(n))) @@ -1030,7 +1033,7 @@ static void free_bitmaps(polyominoesstruct *sp) { int n; - for (n=0;n<256;n++) + for (n=0;nbitmaps);n++) /* Don't bother to free duplicates */ if (IS_LEFT_UP(n) && (IS_LEFT(n) || IS_UP(n))) sp->bitmaps[n] = None; @@ -1500,7 +1503,7 @@ static void make_one_sided_pentomino(void) int i,j,t,u; j=0; - for (i=0;i<18;i++) { + for (i=0;i=4) { @@ -1522,7 +1525,7 @@ static void make_one_sided_hexomino(void) int i,j,t,u; j=0; - for (i=0;i<35;i++) { + for (i=0;i=4) { @@ -1567,9 +1570,10 @@ int set_pentomino_puzzle(polyominoesstruct *sp) } sp->nr_polyominoes = 12; - set_allocate(sp->polyomino,polyomino_type,12*sizeof(polyomino_type)); - random_permutation(12,perm_poly); - for (p=0;p<12;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + random_permutation(sp->nr_polyominoes,perm_poly); + for (p=0;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],pentomino[perm_poly[p]],1); } @@ -1615,9 +1619,10 @@ int set_one_sided_pentomino_puzzle(polyominoesstruct *sp) } sp->nr_polyominoes = 18; - set_allocate(sp->polyomino,polyomino_type,18*sizeof(polyomino_type)); - random_permutation(18,perm_poly); - for (p=0;p<18;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + random_permutation(sp->nr_polyominoes,perm_poly); + for (p=0;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],one_sided_pentomino[perm_poly[p]],1); } @@ -1674,9 +1679,10 @@ int set_one_sided_hexomino_puzzle(polyominoesstruct *sp) } sp->nr_polyominoes = 60; - set_allocate(sp->polyomino,polyomino_type,60*sizeof(polyomino_type)); - random_permutation(60,perm_poly); - for (p=0;p<60;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + random_permutation(sp->nr_polyominoes,perm_poly); + for (p=0;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],one_sided_hexomino[perm_poly[p]],1); } @@ -1711,12 +1717,13 @@ int set_tetr_pentomino_puzzle(polyominoesstruct *sp) } sp->nr_polyominoes = 17; - set_allocate(sp->polyomino,polyomino_type,17*sizeof(polyomino_type)); - random_permutation(17,perm_poly); - for (p=0;p<5;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + random_permutation(sp->nr_polyominoes,perm_poly); + for (p=0;ppolyomino[perm_poly[p]],tetromino[p],1); } - for (p=0;p<12;p++) { + for (p=0;ppolyomino[perm_poly[p+5]],pentomino[p],1); } @@ -1760,10 +1767,10 @@ int set_pent_hexomino_puzzle(polyominoesstruct *sp) sp->nr_polyominoes = 47; set_allocate(sp->polyomino,polyomino_type,47*sizeof(polyomino_type)); random_permutation(47,perm_poly); - for (p=0;p<12;p++) { + for (p=0;ppolyomino[perm_poly[p]],pentomino[p],1); } - for (p=0;p<35;p++) { + for (p=0;ppolyomino[perm_poly[p+12]],hexomino[p],1); } @@ -1800,8 +1807,9 @@ int set_pentomino_puzzle1(polyominoesstruct *sp) sp->height =5; sp->nr_polyominoes = 10; - set_allocate(sp->polyomino,polyomino_type,10*sizeof(polyomino_type)); - for (p=0;p<10;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + for (p=0;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],pentomino1,1); } @@ -1831,8 +1839,9 @@ int set_hexomino_puzzle1(polyominoesstruct *sp) sp->height =23; sp->nr_polyominoes = 92; - set_allocate(sp->polyomino,polyomino_type,92*sizeof(polyomino_type)); - for (p=0;p<92;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + for (p=0;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],hexomino1,1); } @@ -1866,8 +1875,9 @@ int set_heptomino_puzzle1(polyominoesstruct *sp) sp->height =21; sp->nr_polyominoes = 78; - set_allocate(sp->polyomino,polyomino_type,78*sizeof(polyomino_type)); - for (p=0;p<78;p+=2) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + for (p=0;pnr_polyominoes;p+=2) { copy_polyomino(sp->polyomino[p],heptomino1,1); copy_polyomino(sp->polyomino[p+1],heptomino1,0); } @@ -1897,8 +1907,9 @@ int set_heptomino_puzzle2(polyominoesstruct *sp) sp->height =19; sp->nr_polyominoes = 76; - set_allocate(sp->polyomino,polyomino_type,76*sizeof(polyomino_type)); - for (p=0;p<76;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + for (p=0;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],heptomino1,1); } @@ -1933,8 +1944,9 @@ int set_elevenomino_puzzle1(polyominoesstruct *sp) sp->height =22; sp->nr_polyominoes = 50; - set_allocate(sp->polyomino,polyomino_type,50*sizeof(polyomino_type)); - for (p=0;p<50;p+=2) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + for (p=0;pnr_polyominoes;p+=2) { copy_polyomino(sp->polyomino[p],elevenomino1,1); copy_polyomino(sp->polyomino[p+1],elevenomino1,0); } @@ -1970,8 +1982,9 @@ int set_dekomino_puzzle1(polyominoesstruct *sp) sp->height =30; sp->nr_polyominoes = 96; - set_allocate(sp->polyomino,polyomino_type,96*sizeof(polyomino_type)); - for (p=0;p<96;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + for (p=0;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],dekomino1,1); } @@ -2004,8 +2017,9 @@ int set_octomino_puzzle1(polyominoesstruct *sp) sp->height =26; sp->nr_polyominoes = 312; - set_allocate(sp->polyomino,polyomino_type,312*sizeof(polyomino_type)); - for (p=0;p<312;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + for (p=0;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],octomino1,1); } @@ -2030,8 +2044,9 @@ int set_pentomino_puzzle2(polyominoesstruct *sp) sp->height =15; sp->nr_polyominoes = 45; - set_allocate(sp->polyomino,polyomino_type,45*sizeof(polyomino_type)); - for (p=0;p<45;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + for (p=0;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],pentomino1,1); } @@ -2057,8 +2072,9 @@ int set_elevenomino_puzzle2(polyominoesstruct *sp) sp->height =33; sp->nr_polyominoes = 141; - set_allocate(sp->polyomino,polyomino_type,141*sizeof(polyomino_type)); - for (p=0;p<141;p++) { + set_allocate(sp->polyomino,polyomino_type, + sp->nr_polyominoes*sizeof(polyomino_type)); + for (p=0;pnr_polyominoes;p++) { copy_polyomino(sp->polyomino[p],elevenomino1,1); }