Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!
0 Пользователей и 1 Гость просматривают эту тему.
// test_rain_on_time.c// victor00000 (c) 2018#include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <pthread.h>#include <locale.h>#include <sys/ioctl.h>// ~$ gcc test_rain_on_time.c -o test_rain_on_time -lpthread// ~$ ./test_rain_on_time// exit - 'Enter'const char *cls_c = "\e[1;1H\e[2J";int cvadr[] = { L'┏',L'━',L'┓',L'│',L'┛',L'━',L'┗',L'│', 0 };typedef struct {int w,h;}wht;int **xy;//=================clsvoid cls (){fwrite (cls_c,1,strlen (cls_c),stdout);}//=====================get w hint getwhterm (int *wt, int *ht){int e;struct winsize wl;e = ioctl ( STDOUT_FILENO,TIOCGWINSZ, &wl );*ht = wl.ws_row;*wt = wl.ws_col;return e;}//=================xy_rndvoid xy_rnd (wht wh){int i,x = wh.w - 2,y = 1;for (i=1;i < x+1; i++)xy [y] [i] = L' ';for (i=0;i< (1+rand()% 16 ); i++){xy [y] [1 + rand()%x] = cvadr [3];}}//===================xy_downvoid xy_down (wht wh){int x,y;for (y = wh.h - 2;y > 1;y--){for (x=1;x<wh.w - 1;x++){//xy [y] [x] = L'.';xy [y] [x] = xy [y-1] [x];}}}//===================xy_clearvoid xy_clear (wht wh){int x,y;for (y=0;y<wh.h;y++){for (x=0;x<wh.w;x++){if (x == 0 || x == wh.w - 1)xy [y] [x] = cvadr [3];elsexy [y] [x] = L' ';if (y == 0){xy [y] [x] = cvadr [1];if (x == 0)xy [y] [x] = cvadr [0];if (x == wh.w-1)xy [y] [x] = cvadr [2];}if (y == wh.h - 1){xy [y] [x] = cvadr [1];if (x == 0)xy [y] [x] = cvadr [6];if (x == wh.w - 1)xy [y] [x] = cvadr [4];//===================1}}}}//====================xy_initint **xy_init (wht wh){int **x_y = 0;x_y = malloc (sizeof (int) * wh.h);int i;for (i=0;i<wh.h;i++){x_y [ i ] = malloc (sizeof (int) * wh.w);}return x_y;}//=================tpvoid *tp (void *a){wht *wh = (wht*)a;int x,y;while (1){xy_rnd (*wh);xy_down (*wh);cls ();for (y=0;y<wh->h;y++){for (x=0;x<wh->w;x++){printf ("%lc",xy [y] [x]);}// if (y != wh->h - 1) puts ("");}usleep (1000* 100);}return 0;}//==================m0int main (){setlocale (LC_ALL,getenv("LANG"));int wt,ht,e;e = getwhterm (&wt,&ht);if (e != 0){perror ("Err");return 1;}pthread_t t;wht wh;wh.w = wt; wh.h = ht - 1;xy = xy_init (wh);xy_clear (wh);xy_down (wh);pthread_create (&t,0,tp,&wh);char cb;while (fread (&cb,1,1,stdin) != 1){}pthread_cancel (t);pthread_join (t,0);for (e=0;e<wh.h;e++)free (xy [e]);free (xy);return 0;}
Страница сгенерирована за 0.024 секунд. Запросов: 21.