Bug fix and add alt code to 2005/anon
Previously the alt rule in the Makefile defined NO_STTY which stops the code from using stty(1) at the beginning and at the end. The stty sane resulted in a bus error in macOS and since the sole purpose was to set echo back on I changed it to stty echo (which works). (The NO_STTY macro is still checked, see below.) Added alt code with vi(m) like movements. The way to get it to not use stty is to use either make alt-no_stty or no_stty. The former will compile into anon.alt and the latter will compile into anon. Format and typo fix README.md file.
This commit is contained in:
1 parent
86b6b2e41e
commit
d1a462593f
5 files changed
+306
-128
No files matched your search
@@ -0,0 +1,176 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
|
||||
/* 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 <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 ('k',
|
||||
0 < Z(15),
|
||||
-w * l)
|
||||
case ('h',
|
||||
0 < X(15),
|
||||
-1)
|
||||
case ('j',
|
||||
Z(15) < h - 1,
|
||||
w * l)
|
||||
case ('l',
|
||||
X(15) < w - 1,
|
||||
1)
|
||||
case ('J',
|
||||
Y(15) < l - 1,
|
||||
w)
|
||||
case ('K',
|
||||
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));
|
||||
}
|
||||
Reference in new issue
Block a user