+ int w = state->p.w, h = state->p.h, r, c;
+ int cw = 4, ch = 2, gw = (w+1)*cw + 2, gh = (h+1)*ch + 1, len = gw * gh;
+ char *board = snewn(len + 1, char);
+
+ sprintf(board, "%*s\n", len - 2, "");
+ for (r = 0; r <= h; ++r) {
+ for (c = 0; c <= w; ++c) {
+ int cell = r*ch*gw + cw*c, center = cell + gw*ch/2 + cw/2;
+ int i = r*w + c, n = 1000;
+
+ if (r == h && c == w) /* NOP */;
+ else if (c == w) n = state->numbers->numbers[w + r];
+ else if (r == h) n = state->numbers->numbers[c];
+ else switch (state->grid[i]) {
+ case BLANK: board[center] = '.'; break;
+ case TREE: board[center] = 'T'; break;
+ case TENT: memcpy(board + center - 1, "//\\", 3); break;
+ case NONTENT: break;
+ default: memcpy(board + center - 1, "wtf", 3);
+ }