8 Click NC = { -1, 0, 0, };
11 Cl(int d, int x, int y)
13 return (Click){d, x, y};
17 eqcl(Click c1, Click c2)
19 return c1.d == c2.d && c1.x == c2.x && c1.y == c2.y;
25 if(c.d == Depth -1 || (level.board[c.d+1][c.x][c.y].which == None &&
26 level.board[c.d+1][c.x+1][c.y].which == None &&
27 level.board[c.d+1][c.x][c.y+1].which == None &&
28 level.board[c.d+1][c.x+1][c.y+1].which == None))
36 if(c.x == 0 || (level.board[c.d][c.x-1][c.y].which == None &&
37 level.board[c.d][c.x-1][c.y+1].which == None))
45 if(c.x == Lx-2 || (level.board[c.d][c.x+2][c.y].which == None &&
46 level.board[c.d][c.x+2][c.y+1].which == None))
54 return (freeleft(c) || freeright(c)) && freeup(c);
58 cmatch(Click c, int dtop)
64 for(lc.y = 0; lc.y < Ly; lc.y++)
65 for(lc.x = 0; lc.x < Lx; lc.x++)
66 if(level.board[lc.d][lc.x][lc.y].which == TL &&
67 isfree(lc) && !eqcl(c, lc) &&
68 level.board[c.d][c.x][c.y].type ==
69 level.board[lc.d][lc.x][lc.y].type)
80 lc = cmatch(c, Depth);
84 return &level.board[lc.d][lc.x][lc.y];
92 for(c.d = Depth - 1; c.d >= 0; c.d--)
93 for(c.y = 0; c.y < Ly; c.y++)
94 for(c.x = 0; c.x < Lx; c.x++)
95 if(level.board[c.d][c.x][c.y].which == TL &&
96 isfree(c) && bmatch(c) != nil)