diff --git a/textpong.c b/textpong.c new file mode 100644 index 0000000..5bba1d2 --- /dev/null +++ b/textpong.c @@ -0,0 +1,49 @@ +#include +#include +#include + +#define ESC "\x1b[" + +void locate(int x, int y) +{ + printf(ESC "%d;%dH", y, x); +} + +int abs(int x) { + if (x < 0) + return -x; + else + return x; +} + +int main(int argc, char const* argv[]) +{ + int x=10, y=10, bx, by, vx=1, vy=1; + int bar_x = 16; + + bx = x; by = y; + fcntl(fileno(stdin), F_SETFL, O_NONBLOCK); + printf(ESC "2J"); + + while (y < 21) { + int c = getchar(); + locate(bar_x, 21); printf(" ====== "); + locate(bx, by); printf(" "); + locate( x, y); printf("o"); + + bar_x += c == 'l'? 1: c=='h'? -1: 0; + if (bar_x < 1) + bar_x = 1; + else if (bar_x > 30) + bar_x = 30; + + bx = x; by = y; + x += vx; y += vy; + if (x == 0 || x >= 35) vx = -vx; + if (y == 1 || (y == 20 && + 1 <= (x - bar_x) && (x - bar_x ) <= 7)) vy = -vy; + usleep(200000); + } + printf("GAME OVER\n"); + return 0; +}