SHOW:
|
|
- or go back to the newest paste.
1 | /*********************************al_draw_star.h*********************************/ | |
2 | #include <allegro5/allegro_primitives.h> | |
3 | #include <math.h> | |
4 | #define PI 3.14159265358979323846264338327950288419716939937510582 | |
5 | int al_draw_star(float x, float y, float r, int s, ALLEGRO_COLOR color, float thickness); | |
6 | /*********************************al_draw_star.c*********************************/ | |
7 | #include "al_draw_star.h" | |
8 | ||
9 | int al_draw_star(float x, float y, float r, int s, ALLEGRO_COLOR color, float thickness) | |
10 | { | |
11 | int i = 0; | |
12 | do | |
13 | - | int i = -90; |
13 | + | |
14 | float y1=y-(r*cos(i*(PI/180))); | |
15 | float x1=x+(r*sin(i*(PI/180))); | |
16 | - | float x1=x+(r*cos(i*(PI/180))); |
16 | + | float y2=y-((r/2)*cos((i+360/s/2)*(PI/180))); |
17 | - | float y1=y+(r*sin(i*(PI/180))); |
17 | + | float x2=x+((r/2)*sin((i+360/s/2)*(PI/180))); |
18 | - | float x2=x+((r/2)*cos((i+360/s/2)*(PI/180))); |
18 | + | |
19 | - | float y2=y+((r/2)*sin((i+360/s/2)*(PI/180))); |
19 | + | y1=y-((r/2)*cos((i+360/s/2)*(PI/180))); |
20 | x1=x+((r/2)*sin((i+360/s/2)*(PI/180))); | |
21 | - | x1=x+((r/2)*cos((i+360/s/2)*(PI/180))); |
21 | + | y2=y-(r*cos((i+360/s)*(PI/180))); |
22 | - | y1=y+((r/2)*sin((i+360/s/2)*(PI/180))); |
22 | + | x2=x+(r*sin((i+360/s)*(PI/180))); |
23 | - | x2=x+(r*cos((i+360/s)*(PI/180))); |
23 | + | |
24 | - | y2=y+(r*sin((i+360/s)*(PI/180))); |
24 | + | |
25 | } while(i<360); | |
26 | } | |
27 | - | } while(i<270); |
27 | + | |
28 | #include <stdio.h> | |
29 | #include <allegro5/allegro.h> | |
30 | #include <stdlib.h> | |
31 | #include "al_draw_star.h" | |
32 | const float FPS = 60; | |
33 | const int SCREEN_W = 640; | |
34 | const int SCREEN_H = 480; | |
35 | int main() | |
36 | { | |
37 | ALLEGRO_DISPLAY *display = NULL; | |
38 | ALLEGRO_EVENT_QUEUE *event_queue = NULL; | |
39 | ALLEGRO_TIMER *timer = NULL; | |
40 | bool redraw = true; | |
41 | al_init(); | |
42 | al_init_primitives_addon(); | |
43 | al_install_mouse(); | |
44 | timer = al_create_timer(1.0 / FPS); | |
45 | display = al_create_display(SCREEN_W, SCREEN_H); | |
46 | al_clear_to_color(al_map_rgb(255, 0, 255)); | |
47 | al_set_target_bitmap(al_get_backbuffer(display)); | |
48 | event_queue = al_create_event_queue(); | |
49 | al_register_event_source(event_queue, al_get_display_event_source(display)); | |
50 | al_register_event_source(event_queue, al_get_timer_event_source(timer)); | |
51 | al_register_event_source(event_queue, al_get_mouse_event_source()); | |
52 | al_clear_to_color(al_map_rgb(0,0,0)); | |
53 | al_flip_display(); | |
54 | al_start_timer(timer); | |
55 | while(1) | |
56 | { | |
57 | ALLEGRO_EVENT ev; | |
58 | al_wait_for_event(event_queue, &ev); | |
59 | if(ev.type == ALLEGRO_EVENT_TIMER) | |
60 | { | |
61 | redraw = true; | |
62 | } | |
63 | else if(ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) | |
64 | { | |
65 | break; | |
66 | } | |
67 | if(redraw && al_is_event_queue_empty(event_queue)) | |
68 | { | |
69 | redraw = false; | |
70 | al_clear_to_color(al_map_rgb(0,0,0)); | |
71 | al_draw_star(300, 300, 100, 5,al_map_rgb(255,255,255),3); | |
72 | al_flip_display(); | |
73 | } | |
74 | } | |
75 | al_destroy_timer(timer); | |
76 | al_destroy_display(display); | |
77 | al_destroy_event_queue(event_queue); | |
78 | return 0; | |
79 | } |