#include #include #include /* Defines */ #ifndef NO_STTY #define S1 system("stty cbreak -echo")|| #define S2 system("stty echo")|| #else #define S1 #define S2 #endif #define A(i) (((q*)R(8))[i]) #define B p(b) #define C p(&a) #define H(i) sscanf(A(i),"%ld",&R(i+11))&0 || #define P q* #define M(a,b) main((i)(a),(P)(b)) #define p(x) ((i*)(x)) #define D T(B-C,C-B) #define T(x,y) ((a&1)*((i)(x))+(~a&1)*((i)(y))) #define R(x) (*(B+x)) #define q char* #define Q(x) ((q)(x)) #define W(x,y) ((B[x]=(i)(y))&0)|| #define BS (w*l*h) #define do(x,y) (a-x||y)&& #define f(x) M(x,b) #define if(p,q,r,s) ((p)&&!(q)||(s))&&(r)|| #define i long #define I (int) #define while(x,y,z) do(x, y && !(z) && f(a)) #define for(s,i,x,y,z,Z) W(i,x)f(s)||Z) && while(s,R(i)-y,z||W(i,R(i)+1)0)(s #define return return do #define w R(12) #define l R(13) #define h R(14) #define X(i) (R(i)%w) #define Y(i) ((R(i)%(w*l))/w) #define Z(i) (R(i)/(w*l)) #define pr !printf #define switch(x) (W(32+R(15),R(32+x+R(15))) W(32+x+R(15),0) (B[15]+=x)|1) #define case(k,x,y) R(a)==k && x && switch(y) && f(13)|| #define TL(i) R(32+R(i)) /* Main program */ int main(int a, P b) { return (1 >> 1 ^ 1, M(6 + !!M(5, C), C)) do ( 13, pr("\x1b[;H") || for (14, 4, 0, BS, !X(4) && pr( "%*s", I(l - Y(4)), "" ) || if (TL(4), pr( "%*ld", I R(31), TL(4)), 0, pr("%*.*s", I R(31), I R(31), "#####") ) if (X(4) == w - 1, pr("\n"), 0, pr("%*s", I(l + 1), "")) ( (R(4) + 1) % (w * l) == 0 && l > 1) && pr("\n"), 0)) do ( 1 & ~1, pr("Syntax: %s []\n", b[0]) || f(15) ) ((a & ~1) - 6 || D >> 12 && (*(p(T(C, b)) + 8) = *p(Q(b) + (Q(&b) - Q(C))) ) && (*(p(T(C, b)) + 9) = *p(b)) && M( 8, T(C, b)) || f(a)) && do ( 8, if (R(9) & 1, H(1) H( 2) 0, W(14, l) W(13, 1) 0, H(1 ) H(2) H(3) 0) (srand(time(0)), 0 ) || for (9, 4, 0, BS, f(16) || W(R(4) + 32, R(0)) ! R(0) && W(15, R(4)) 0, W( 31, snprintf(A(0), 1, "%ld", BS)) S1 pr("\x1b[2J") || f(13) || f(18) || f(15) )) do ( 16, W(0, rand() % BS ) W(1, 0) for (17, 5, 0, R(4), !( TL( 5) - R(0)) && !( W(1, 1) W(5, R(4) - 1) 0), R(1) && f(16)) ) do ( 18, W(0, 0 ) for (19, 4, 0, BS, TL(4) - (R(4) + 1) % BS && ( W(0, 1) W(4, BS - 1 ) 0) || 0, !R(0) && pr( "You win!\n" ) || R(0) && ( W(a, getchar()) case ('i', 0 < Z(15), -w * l) case ('j', 0 < X(15), -1) case ('k', Z(15) < h - 1, w * l) case ('l', X(15) < w - 1, 1) case ('n', Y(15) < l - 1, w) case ('o', 0 < Y(15), -w ) R(a) == 'q' && ! pr( "You lose :-)\n" ) && f(15) || f(a)) ) ) do ( 15, S2 (exit(0), a) ) (a - 5 || C < p(b)); }