-
Notifications
You must be signed in to change notification settings - Fork 0
/
flames.c
97 lines (77 loc) · 1.88 KB
/
flames.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <ncurses.h>
#include <stdlib.h>
#include <time.h>
#include"declaration.h"
void flames(void);
// int main(int argc, char** argv)
// {
// initscr();
// start_color();
// flames();
// endwin();
// return 0;
// }
void flames(void)
{
int width, height, size, *b, i;
const char characters[] = {' ', '.', ':', '^', '*', 'x', 's', 'S', '#', '$'};
getmaxyx(stdscr,height,width);
size=width*height;
init_pair(1,0,0);
init_pair(2,1,0);
init_pair(3,3,0);
init_pair(4,4,0);
clear();
b=calloc((size+width+1),sizeof(int));
nodelay(stdscr,TRUE);
srand(time(NULL));
const char nyan_cat[4][12] = {
",------, \n",
"| /\\_/\\\n",
"|__( ^ .^) \n",
"\"\" \"\" \n"};
init_pair(1, COLOR_RED, COLOR_BLACK);
init_pair(2, COLOR_YELLOW, COLOR_BLACK);
init_pair(3, COLOR_CYAN, COLOR_BLACK);
init_pair(4, COLOR_GREEN, COLOR_BLACK);
init_pair(5, COLOR_MAGENTA, COLOR_BLACK);
noecho(); // disable echoing of characters on the screen
curs_set(0); // hide the default screen cursor.
/* while we have room, we will animate our cat crossing... */
int c =0;
char *tail = (char*)malloc(width-8);
while (c < width-8 )
{
for (i =0; i < width/9; i++)
b[(int)(((float)rand()/(float)RAND_MAX)*width+width*(height-1))]=65;
for (i=0; i < size; i++)
{
b[i]=(b[i]+b[i+1]+b[i+width]+b[i+width+1])/4;
if (b[i] > 15)
attrset(COLOR_PAIR(4)|A_BOLD);
else if (b[i] > 9)
attrset(COLOR_PAIR(3)|A_BOLD);
else if (b[i] > 4)
attrset(COLOR_PAIR(2)|A_BOLD);
else
attrset(COLOR_PAIR(1)|A_BOLD);
if (i < size-1)
{
move(i/width, i%width);
if (b[i] > 9)
addch(characters[9]);
else
addch(characters[b[i]]);
}
}
draw_cat_step(c, 5 , tail, nyan_cat);
mvprintw(25,47,"BATTLESHIP");
refresh();
timeout(30);
c++;
napms(50);
}
free(b);
free(tail);
return;
}