This repository has been archived by the owner on Mar 12, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ocean.c
113 lines (108 loc) · 2.13 KB
/
ocean.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "headers.h"
void free_waves(int **waves)
{
int i;
i = 0;
while (waves[i])
{
free(waves[i]);
i++;
}
free(waves);
}
int **draw_ocean(int ended)
{
static int frame;
static int seconds;
static int wave_amount;
static int **waves;
int i;
int j;
if (wave_amount == 0)
{
wave_amount = COLS / 4;
if (waves)
free_waves(waves);
waves = (int **)malloc(sizeof(int *) * (wave_amount + 1));
i = 0;
while (i < wave_amount)
{
waves[i] = (int *)malloc(sizeof(int) * 2);
waves[i][0] = 0;
waves[i][1] = 0;
i++;
}
waves[i] = NULL;
}
if (frame == 0)
{
i = 0;
while (i < wave_amount)
{
waves[i][0] = (rand() % (LINES) + 1);
if (!ended)
waves[i][1] = (rand() % (COLS + 30 + seconds * 2 + 1) + 5 + seconds * 2);
else
waves[i][1] = (rand() % (COLS - 5) + 5);
i += 2;
}
}
if (frame == 20)
{
i = 1;
while (i < wave_amount)
{
waves[i][0] = (rand() % (LINES) + 1);
if (!ended)
waves[i][1] = (rand() % (COLS + 30 + seconds * 2) + 5 + seconds * 2);
else
waves[i][1] = (rand() % (COLS - 5) + 5);
i += 2;
}
}
i = 0;
while (i < wave_amount)
{
if (seconds > 3)
attron(COLOR_PAIR((rand() % (-14) + 1)));
if (i % 2 || i == 0)
{
if (waves[i][0] > 0)
{
if (frame >= 0 && frame < 15)
mvprintw(waves[i][0], waves[i][1], "_");
else if (frame >= 15 && frame < 23)
mvprintw(waves[i][0], waves[i][1], "~");
else if (frame >= 23 && frame < 30)
mvprintw(waves[i][0], waves[i][1], "=");
else
mvprintw(waves[i][0], waves[i][1], ".");
}
}
else
{
if (waves[i][0] > 0)
{
if (frame >= 20 && frame < 30)
mvprintw(waves[i][0], waves[i][1], "_");
else if (frame >= 30 || frame < 7)
mvprintw(waves[i][0], waves[i][1], "~");
else if (frame >= 7 && frame < 10)
mvprintw(waves[i][0], waves[i][1], "=");
else if (frame >= 10 && frame < 20)
mvprintw(waves[i][0], waves[i][1], ".");
}
}
if (!ended)
waves[i][1] = waves[i][1] - 1 - seconds / 4;
i++;
}
//printw("seconds: %d, frame: %d", seconds, frame);
frame++;
if (frame > FRAMERATE * 2)
{
frame = 0;
seconds++;
}
return (waves);
}