-
Notifications
You must be signed in to change notification settings - Fork 0
/
bonus.c
105 lines (91 loc) · 2.26 KB
/
bonus.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
/*****************************************
Mroczna Harmonia
bonus.c xxxxxxxxxxxx
(C) 2001, 2023 M. Feliks
*****************************************/
#include <stdlib.h>
#include "globals.h"
void b_nadaj0(STATEK* bon)
{
bon->aktywny = 0;
}
void bonus_inicjuj(STATEK* bon)
{
int i, j = 36;
bon->x = rand() % 299;
bon->y = 0;
bon->licznik = 0;
for (i = 0; i < 6; i++)
bon->klatka[i] = j + i;
bon->aktywny = 1;
bon->k = 0;
}
void bonus_wykonaj(STATEK* bon, KAPSULA* kaps)
{
if (bon->aktywny) {
draw_sprite(sprite[bon->klatka[bon->k]], bon->x, bon->y, 20, 20, bufor);
if ((bon->licznik++) == 12) {
bon->licznik = 0;
bon->k++;
if (bon->k > 5)
bon->k = 0;
}
if ((bon->y++) > 179)
bon->aktywny = 0;
if (bon->x >= kaps->x - 10 && bon->x <= kaps->x + 30 && bon->y >= kaps->y && bon->y <= kaps->y + 20) {
play_sound(&soundtab[SND_BONUS]);
bon->aktywny = 0;
if (kaps->giwera < 3) {
w_inicjuj(kaps->x + 10, kaps->y + 10, 31, 32);
kaps->giwera++;
bonus_typ = NOWA_GIW;
} else {
pole_inicjuj(&pole);
bonus_typ = BONUS_POLE;
}
}
}
}
void pole_nadaj0(POLE* p)
{
p->aktywne = 0;
}
void pole_inicjuj(POLE* p)
{
p->aktywne = 1;
p->pom = 0;
p->vpom = 0;
p->r = 10;
p->kolor = 32;
p->czas = 0;
}
void pole_wykonaj(POLE* p, KAPSULA* kaps)
{
int i, x, y;
if (p->aktywne) {
if (!p->pom) {
if ((p->vpom++) == 2) {
p->vpom = 0;
if ((p->r++) > 15) {
p->pom = 1;
p->kolor = 44;
}
}
} else {
if ((p->vpom++) == 2) {
p->vpom = 0;
if ((p->r--) < 10) {
p->pom = 0;
p->kolor = 32;
}
}
}
for (i = 1; i < 60; i++) {
x = kaps->x + 10 + b_punkt[p->r][i][0];
y = kaps->y + 10 - b_punkt[p->r][i][1];
pixel(x, y, p->kolor);
}
if ((p->czas++) == 1500)
p->aktywne = 0;
}
}