Commit 7b5a6fc36c4bffa70c8e8d525968bc18b5cf4a31

Authored by Grzegorz Jabłoński
1 parent 658175b4

Cleanup

Showing 1 changed file with 27 additions and 42 deletions
06-multiple_targets/cannon.c
1 -  
2 #include "primlib.h" 1 #include "primlib.h"
3 #include <math.h> 2 #include <math.h>
4 #include <stdlib.h> 3 #include <stdlib.h>
@@ -8,57 +7,46 @@ struct target { @@ -8,57 +7,46 @@ struct target {
8 int y; 7 int y;
9 int speed_x; 8 int speed_x;
10 int is_explosion; 9 int is_explosion;
11 - int explosion_counter; // ile razy wyswietlalismy eksplozje 10 + int explosion_counter; // how many times we have already displayed an
  11 + // explosion animation
12 int color; 12 int color;
13 }; 13 };
14 14
15 // Draw explosion with the center at coordinates (x,y) 15 // Draw explosion with the center at coordinates (x,y)
16 void drawExplosion(int x, int y, float scaling) { 16 void drawExplosion(int x, int y, float scaling) {
17 17
18 - gfx_filledTriangle(x - 7 * scaling, y - 7 * scaling,  
19 - x + 7 * scaling, y + 7 * scaling,  
20 - x + 22 * scaling, y - 22 * scaling, RED);  
21 - gfx_filledTriangle(x - 7 * scaling, y - 7 * scaling,  
22 - x + 7 * scaling, y + 7 * scaling,  
23 - x - 22 * scaling, y + 22 * scaling, RED);  
24 - gfx_filledTriangle(x - 7 * scaling, y + 7 * scaling,  
25 - x + 7 * scaling, y - 7 * scaling,  
26 - x - 22 * scaling, y - 22 * scaling, RED);  
27 - gfx_filledTriangle(x - 7 * scaling, y + 7 * scaling,  
28 - x + 7 * scaling, y - 7 * scaling,  
29 - x + 22 * scaling, y + 22 * scaling, RED);  
30 -  
31 - gfx_filledTriangle(x - 13 * scaling, y,  
32 - x + 13 * scaling, y, x, 18 + gfx_filledTriangle(x - 7 * scaling, y - 7 * scaling, x + 7 * scaling,
  19 + y + 7 * scaling, x + 22 * scaling, y - 22 * scaling, RED);
  20 + gfx_filledTriangle(x - 7 * scaling, y - 7 * scaling, x + 7 * scaling,
  21 + y + 7 * scaling, x - 22 * scaling, y + 22 * scaling, RED);
  22 + gfx_filledTriangle(x - 7 * scaling, y + 7 * scaling, x + 7 * scaling,
  23 + y - 7 * scaling, x - 22 * scaling, y - 22 * scaling, RED);
  24 + gfx_filledTriangle(x - 7 * scaling, y + 7 * scaling, x + 7 * scaling,
  25 + y - 7 * scaling, x + 22 * scaling, y + 22 * scaling, RED);
  26 +
  27 + gfx_filledTriangle(x - 13 * scaling, y, x + 13 * scaling, y, x,
33 y - 35 * scaling, RED); 28 y - 35 * scaling, RED);
34 - gfx_filledTriangle(x - 13 * scaling, y,  
35 - x + 13 * scaling, y, x, 29 + gfx_filledTriangle(x - 13 * scaling, y, x + 13 * scaling, y, x,
36 y + 35 * scaling, RED); 30 y + 35 * scaling, RED);
37 - gfx_filledTriangle(x, y - 13 * scaling, x,  
38 - y + 13 * scaling, x - 35 * scaling, 31 + gfx_filledTriangle(x, y - 13 * scaling, x, y + 13 * scaling, x - 35 * scaling,
39 y, RED); 32 y, RED);
40 - gfx_filledTriangle(x, y - 13 * scaling, x,  
41 - y + 13 * scaling, x + 35 * scaling, 33 + gfx_filledTriangle(x, y - 13 * scaling, x, y + 13 * scaling, x + 35 * scaling,
42 y, RED); 34 y, RED);
43 } 35 }
44 36
45 -  
46 void draw_target(struct target *t) { 37 void draw_target(struct target *t) {
47 if (!t->is_explosion) 38 if (!t->is_explosion)
48 - gfx_filledRect(t->x - 10, t->y - 10, t->x + 10, t->y + 10,  
49 - t->color); // cel 39 + gfx_filledRect(t->x - 10, t->y - 10, t->x + 10, t->y + 10,
  40 + t->color); // target
50 41
51 if (t->is_explosion) { 42 if (t->is_explosion) {
52 drawExplosion(t->x, t->y + t->explosion_counter * 10, 43 drawExplosion(t->x, t->y + t->explosion_counter * 10,
53 t->explosion_counter / 5.0); 44 t->explosion_counter / 5.0);
54 } 45 }
55 -  
56 } 46 }
57 47
58 -  
59 void move_target(struct target *t) { 48 void move_target(struct target *t) {
60 - if(!t->is_explosion)  
61 - { 49 + if (!t->is_explosion) {
62 t->x += t->speed_x; 50 t->x += t->speed_x;
63 51
64 if (t->x > gfx_screenWidth()) 52 if (t->x > gfx_screenWidth())
@@ -128,26 +116,23 @@ int main() { @@ -128,26 +116,23 @@ int main() {
128 for (int i = 0; i < num_targets; ++i) 116 for (int i = 0; i < num_targets; ++i)
129 draw_target(&(t[i])); 117 draw_target(&(t[i]));
130 118
131 - 119 + // bullet position wrt the center of the bottom of the screen
132 int x_bullet = bullet_distance * cos(fire_angle); 120 int x_bullet = bullet_distance * cos(fire_angle);
133 int y_bullet = bullet_distance * sin(fire_angle); 121 int y_bullet = bullet_distance * sin(fire_angle);
134 - int x_bullet_pot = gfx_screenWidth() / 2 + x_bullet;  
135 - int y_bullet_pot = gfx_screenHeight() - y_bullet;  
136 -  
137 - if (is_shooting) {  
138 - // if(!is_explosion)  
139 - gfx_filledCircle(gfx_screenWidth() / 2 + x_bullet,  
140 - gfx_screenHeight() - y_bullet, 10, RED); // pocisk  
141 122
  123 + // bullet position wrt the top-left corner
  124 + int x_bullet_tlc = gfx_screenWidth() / 2 + x_bullet;
  125 + int y_bullet_tlc = gfx_screenHeight() - y_bullet;
142 126
  127 + if (is_shooting) {
  128 + gfx_filledCircle(x_bullet_tlc, y_bullet_tlc, 10, RED); // bullet
143 } 129 }
144 130
145 gfx_updateScreen(); 131 gfx_updateScreen();
146 132
147 - if (is_shooting)  
148 - { 133 + if (is_shooting) {
149 for (int i = 0; i < num_targets; ++i) { 134 for (int i = 0; i < num_targets; ++i) {
150 - if (hypot(x_bullet_pot - t[i].x, y_bullet_pot - t[i].y) < 50) { 135 + if (hypot(x_bullet_tlc - t[i].x, y_bullet_tlc - t[i].y) < 50) {
151 t[i].is_explosion = 1; 136 t[i].is_explosion = 1;
152 t[i].explosion_counter = 0; 137 t[i].explosion_counter = 0;
153 } 138 }
@@ -156,7 +141,7 @@ int main() { @@ -156,7 +141,7 @@ int main() {
156 } 141 }
157 142
158 for (int i = 0; i < num_targets; ++i) 143 for (int i = 0; i < num_targets; ++i)
159 - move_target(&(t[i])); 144 + move_target(&(t[i]));
160 145
161 if (gfx_isKeyDown(SDLK_RIGHT)) 146 if (gfx_isKeyDown(SDLK_RIGHT))
162 angle -= 1.0 * (M_PI / 180.0); 147 angle -= 1.0 * (M_PI / 180.0);