From 74eb7a909896551721df941a2988cfd2bcc3cb92 Mon Sep 17 00:00:00 2001 From: KatolaZ Date: Wed, 7 Aug 2019 08:18:36 +0100 Subject: initial commit --- 2ls10.c | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 2ls10.c diff --git a/2ls10.c b/2ls10.c new file mode 100644 index 0000000..c3b0d70 --- /dev/null +++ b/2ls10.c @@ -0,0 +1,163 @@ +#include +#include +#include +#include +#include + +int st[1<<7], lo, li, ls; +int m, pt, n, pl, t; +char nf; +struct termios t1, t2; + +int cond (int j){ + return t? j/n : j%n; +} + +void clean(char *str){ + if (str) printf("%s\n", str); + tcsetattr(0, TCSANOW, &t1); + exit(0); +} + +int dash(int i){ + return i? + putchar('-') + dash(i-1):0; + } + +int line(int i){ + return putchar('+') + (i ? + dash(6)+ line(i-1): + putchar(10)); +} + +int valid_move(){ + int i; + for (i=0; i 0) + printf("%5d |", 1<= 0 && cond(j) != ls); +} + +void merge(int j){ + do { + if (st[j] && st[j] == st[j-li]){ + st[j-li] += 1; + if (st[j-li] == 11) pl ^= pl; + pt += 1<= 0 && cond(j) != ls); +} + +void update(){ + int i; + for(i =0; i 1) n = atoi(argv[1]); + nf = n * n; + tcgetattr(0, &t1); + t2 = t1; + t2.c_lflag &= ~(ICANON | ECHO); + tcsetattr(0, TCSANOW, &t2); + set_rnd(); + pt = 0; + pl = 1; + while(pl){ + //pr_st(); + set_rnd(); + print_state(); + switch(getchar()){ + case 'l': + lo = ls = n-1; + li = -1; + m = n; + t = 0; + break; + case 'h': + lo = ls = 0; + li = 1; + m = n; + t = 0; + break; + case 'j': + lo = n * (n-1); + li = -n; + ls = -1; + m = 1; + t=1; + break; + case 'k': + lo = 0; + li = ls = n; + m = 1; + t=1; + break; + case 'q': + clean("Thanks!"); + + } + update(); + + } + print_state(); + clean("you won!"); +} -- cgit v1.2.3