-
Notifications
You must be signed in to change notification settings - Fork 0
/
draw.c
94 lines (87 loc) · 2.5 KB
/
draw.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
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* draw.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: rvagner <rvagner@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2015/05/03 19:38:45 by rvagner #+# #+# */
/* Updated: 2015/05/03 22:47:21 by rvagner ### ########.fr */
/* */
/* ************************************************************************** */
#include "arkanoid.h"
void get_color(char nb)
{
if (nb == '1')
glColor3f(1.f, 0.f, 0.f);
else if (nb == '2')
glColor3f(0.f, 1.f, 0.f);
else if (nb == '3')
glColor3f(0.f, 0.f, 1.f);
else if (nb == '4')
glColor3f(0.5f, 0.5f, 0.5f);
}
void draw_barre(float x, float y)
{
float tx;
float ty;
tx = 0.25;
ty = -0.05;
glBegin(GL_POLYGON);
glColor3f(0.1f, 0.5f, 0.5f);
glVertex2f(x, y);
glColor3f(0.5f, 0.8f, 0.5f);
glVertex2f(x + tx, y);
glColor3f(0.5f, 0.5f, 0.99f);
glVertex2f(x + tx, y + ty);
glColor3f(0.12f, 0.5f, 0.5f);
glVertex2f(x, y + ty);
glEnd();
}
void draw_circle(t_bal *bal, t_env *e)
{
float angle;
angle = 0.0;
glBegin(GL_TRIANGLE_FAN);
if (e->lives == 3)
glColor3f(0.2, 0.9, 0.6);
else if (e->lives == 2)
glColor3f(0.9, 0.2, 0.6);
else if (e->lives == 1)
glColor3f(0.2, 0.6, 0.9);
glVertex2f(bal->x1, bal->y1);
while (angle <= 2 * 3.14159265)
{
bal->x2 = bal->x1 + ft_sin(angle) * bal->radius;
bal->y2 = bal->y1 + ft_cos(angle) * bal->radius;
glVertex2f(bal->x2, bal->y2);
angle += 0.005;
}
glEnd();
}
void draw_bricks(t_env *e, t_brick *brick)
{
init_brick(brick);
while (e->map[brick->i])
{
brick->x = -0.99;
brick->j = 0;
while (e->map[brick->i][brick->j])
{
if (e->map[brick->i][brick->j] != '0')
{
glBegin(GL_POLYGON);
get_color(e->map[brick->i][brick->j]);
glVertex2f(brick->x, brick->y);
glVertex2f(brick->x + brick->tx, brick->y);
glVertex2f(brick->x + brick->tx, brick->y + brick->ty);
glVertex2f(brick->x, brick->y + brick->ty);
glEnd();
}
brick->x += brick->tx + 0.01;
brick->j++;
}
brick->y += brick->ty - 0.01;
brick->i++;
}
}