+sokoban_screen *sokoban_shrink(int x, int y, sokoban_screen *screen, sokoban_screen *newscreen)
+{
+ sokoban_screen *c, *nc = NULL;
+ c = get_coord(x, y, screen);
+ if (c) {
+ nc = get_coord(c->coord.x, c->coord.y, newscreen);
+ if (c->tile != WALL && nc == NULL) {
+ newscreen = add_coord(x, y, c->tile, newscreen);
+ newscreen = sokoban_shrink(x-1, y, screen, newscreen);
+ newscreen = sokoban_shrink(x+1, y, screen, newscreen);
+ newscreen = sokoban_shrink(x, y-1, screen, newscreen);
+ newscreen = sokoban_shrink(x, y+1, screen, newscreen);
+ }
+ }
+ return newscreen;
+}
+
+void sokoban_free(sokoban_screen *screen)