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
|
#include <stdlib.h>
#include <stdbool.h>
#include <vectorlib.c>
#include <SDL2/SDL.h>
#include <SDL2/SDL_video.h>
#include <time.h>
#define PROJECT_NAME "vectors-mover"
#define obj_n 1
typedef struct {
Point pos;
Point vel;
Point acc;
} OBJECT_INER;
typedef struct OBJECT {
OBJECT_INER *objs[obj_n];
} OBJECT;
#include <init.h>
void constructor(int w, int h, OBJECT_INER *obj){
obj->pos.x = (float)w/2;
obj->pos.y = (float)h/2;
obj->vel.x = RandomFloat(-1, 1);
obj->vel.y = RandomFloat(-1, 1);
point_mul(&obj->vel, &(Point){3,3});
obj->acc.x = RandomFloat(-1, 1);
obj->acc.y = RandomFloat(-1, 1);
point_set_mag(&obj->acc, 0.01);
}
void init_stuffs(int w, int h, OBJECT_INER *objs, STUFFS *stuff){
srand(time(NULL));
constructor(w,h,&objs[0]);
}
Point vec_sub(Point A, Point B){
point_sub(&A, &B);
return A;
}
void update(STUFFS *stuff, OBJECT_INER *obj){
Point mouse = {
stuff->mx,
stuff->my,
};
obj->acc = vec_sub(mouse, obj->pos);
point_set_mag(&obj->acc, 1);
//stuff->obj->acc.x = RandomFloat(-1, 1);
//stuff->obj->acc.y = RandomFloat(-1, 1);
point_add(&obj->vel,&obj->acc);
point_limit(&obj->vel, 5);
point_add(&obj->pos, &obj->vel);
}
void show(SDL_Renderer* renderer,OBJECT_INER *obj){
SDL_SetRenderDrawColor(renderer,150,50,255,255);
SDL_RenderFillRect(renderer,&(SDL_Rect){.x = obj->pos.x - 5, .y=obj->pos.y - 5, .w = 10, .h = 10});
}
void draw(SDL_Renderer* renderer,SDL_Window* window, STUFFS *stuff){
SDL_SetRenderDrawColor(renderer,0,0,0,255);
SDL_RenderClear(renderer);
update(stuff, stuff->obj.objs[0]);
show(renderer,stuff->obj.objs[0]);
SDL_RenderPresent(renderer);
}
#include <init.c>
|