Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- /* Defines */
- #ifndef NO_STTY
- #define S1 system("stty cbreak -echo")||
- #define S2 system("stty sane")||
- #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 <x> <y> [<z>]\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));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement