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 | } |