diff --git a/Makefile b/Makefile index d50fcb2..7b32397 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ LFLAGS = -lSDL2 -lSDL2_image -lm all: bin/back test: bin/back - bin/back + bin/back levels/test.txt bots/dumb bots/dumb bots/dumb bots/dumb mem: bin/back valgrind --leak-check=full ./bin/back diff --git a/bin/back b/bin/back index 3d7ffae..c32f6d8 100755 Binary files a/bin/back and b/bin/back differ diff --git a/bots/answer.txt b/bots/answer.txt new file mode 100644 index 0000000..7de715a --- /dev/null +++ b/bots/answer.txt @@ -0,0 +1 @@ +165 74 \ No newline at end of file diff --git a/bots/dumb b/bots/dumb new file mode 100755 index 0000000..fe5f510 Binary files /dev/null and b/bots/dumb differ diff --git a/bots/dumb.cmi b/bots/dumb.cmi new file mode 100644 index 0000000..6a4fb00 Binary files /dev/null and b/bots/dumb.cmi differ diff --git a/bots/dumb.cmx b/bots/dumb.cmx new file mode 100644 index 0000000..6e76fa6 Binary files /dev/null and b/bots/dumb.cmx differ diff --git a/bots/dumb.ml b/bots/dumb.ml new file mode 100644 index 0000000..994b657 --- /dev/null +++ b/bots/dumb.ml @@ -0,0 +1,6 @@ +Random.self_init () ;; + +let ptr = open_out "bots/answer.txt" in +Printf.fprintf ptr "%d %d" (Random.int 360) (60 + Random.int 40); + +close_out ptr \ No newline at end of file diff --git a/bots/dumb.o b/bots/dumb.o new file mode 100644 index 0000000..271c27a Binary files /dev/null and b/bots/dumb.o differ diff --git a/obj/cars.o b/obj/cars.o index 4747e92..ccd5c67 100644 Binary files a/obj/cars.o and b/obj/cars.o differ diff --git a/obj/display.o b/obj/display.o index 1824e6c..0995f13 100644 Binary files a/obj/display.o and b/obj/display.o differ diff --git a/obj/main.o b/obj/main.o index 2099d51..f2247a2 100644 Binary files a/obj/main.o and b/obj/main.o differ diff --git a/obj/structure.o b/obj/structure.o index 00072d0..083284c 100644 Binary files a/obj/structure.o and b/obj/structure.o differ diff --git a/output.txt b/output.txt index d6430eb..64a88f9 100644 --- a/output.txt +++ b/output.txt @@ -1,9 +1,9 @@ 4 -0 (2 0) (38.73 87.83) -1 (3 0) (12.86 46.67) -2 (2 0) (96.96 38.71) -3 (4 0) (55.58 91.72) -[2] +0 (3 0) (45.17 65.83) +1 (4 2) (65.68 34.72) +2 (3 3) (37.74 58.35) +3 (2 0) (19.47 35.72) +[3] 5 5 ..S14 @@ -11,3 +11,18 @@ ...35 .E15. ..... + +100 +200 +10 +0.90 +0.80 +0.20 + + +Room Size +Maximum speed +Player Radius +Friction +Restitution factor +Track Distance to Edge diff --git a/res/arrows.png b/res/arrows.png deleted file mode 100644 index 1771d4a..0000000 Binary files a/res/arrows.png and /dev/null differ diff --git a/res/brick.jpeg b/res/brick.jpeg deleted file mode 100644 index 9e2747f..0000000 Binary files a/res/brick.jpeg and /dev/null differ diff --git a/res/brick.png b/res/brick.png deleted file mode 100644 index 02a5481..0000000 Binary files a/res/brick.png and /dev/null differ diff --git a/res/button_off.jpg b/res/button_off.jpg deleted file mode 100644 index 7afe72d..0000000 Binary files a/res/button_off.jpg and /dev/null differ diff --git a/res/button_on.png b/res/button_on.png deleted file mode 100644 index 281aa53..0000000 Binary files a/res/button_on.png and /dev/null differ diff --git a/res/coin2.png b/res/coin2.png deleted file mode 100644 index 4f3089c..0000000 Binary files a/res/coin2.png and /dev/null differ diff --git a/res/container.jpg b/res/container.jpg deleted file mode 100644 index d07bee4..0000000 Binary files a/res/container.jpg and /dev/null differ diff --git a/res/digits/big-sign-sum.bmp b/res/digits/big-sign-sum.bmp new file mode 100755 index 0000000..3941036 Binary files /dev/null and b/res/digits/big-sign-sum.bmp differ diff --git a/res/digits/digit-0.bmp b/res/digits/digit-0.bmp new file mode 100755 index 0000000..2d29cce Binary files /dev/null and b/res/digits/digit-0.bmp differ diff --git a/res/digits/digit-1.bmp b/res/digits/digit-1.bmp new file mode 100755 index 0000000..50cbccb Binary files /dev/null and b/res/digits/digit-1.bmp differ diff --git a/res/digits/digit-2.bmp b/res/digits/digit-2.bmp new file mode 100755 index 0000000..8afa656 Binary files /dev/null and b/res/digits/digit-2.bmp differ diff --git a/res/digits/digit-3.bmp b/res/digits/digit-3.bmp new file mode 100755 index 0000000..0b75609 Binary files /dev/null and b/res/digits/digit-3.bmp differ diff --git a/res/digits/digit-4.bmp b/res/digits/digit-4.bmp new file mode 100755 index 0000000..88cb6e8 Binary files /dev/null and b/res/digits/digit-4.bmp differ diff --git a/res/digits/digit-5.bmp b/res/digits/digit-5.bmp new file mode 100755 index 0000000..d6d03f4 Binary files /dev/null and b/res/digits/digit-5.bmp differ diff --git a/res/digits/digit-6.bmp b/res/digits/digit-6.bmp new file mode 100755 index 0000000..9bca97a Binary files /dev/null and b/res/digits/digit-6.bmp differ diff --git a/res/digits/digit-7.bmp b/res/digits/digit-7.bmp new file mode 100755 index 0000000..538fafb Binary files /dev/null and b/res/digits/digit-7.bmp differ diff --git a/res/digits/digit-8.bmp b/res/digits/digit-8.bmp new file mode 100755 index 0000000..541457a Binary files /dev/null and b/res/digits/digit-8.bmp differ diff --git a/res/digits/digit-9.bmp b/res/digits/digit-9.bmp new file mode 100755 index 0000000..976c2af Binary files /dev/null and b/res/digits/digit-9.bmp differ diff --git a/res/digits/sign-minus.bmp b/res/digits/sign-minus.bmp new file mode 100755 index 0000000..9709c17 Binary files /dev/null and b/res/digits/sign-minus.bmp differ diff --git a/res/digits/sign-plus.bmp b/res/digits/sign-plus.bmp new file mode 100755 index 0000000..5c79139 Binary files /dev/null and b/res/digits/sign-plus.bmp differ diff --git a/res/digits/sign-prod.bmp b/res/digits/sign-prod.bmp new file mode 100755 index 0000000..cdb645f Binary files /dev/null and b/res/digits/sign-prod.bmp differ diff --git a/res/digits/sum-k.bmp b/res/digits/sum-k.bmp new file mode 100755 index 0000000..e078d79 Binary files /dev/null and b/res/digits/sum-k.bmp differ diff --git a/res/exclamation_block.png b/res/exclamation_block.png deleted file mode 100644 index a422303..0000000 Binary files a/res/exclamation_block.png and /dev/null differ diff --git a/res/gateway.jpeg b/res/gateway.jpeg deleted file mode 100644 index fb81d68..0000000 Binary files a/res/gateway.jpeg and /dev/null differ diff --git a/res/letters/letter-a.bmp b/res/letters/letter-a.bmp new file mode 100755 index 0000000..14f2b35 Binary files /dev/null and b/res/letters/letter-a.bmp differ diff --git a/res/letters/letter-b.bmp b/res/letters/letter-b.bmp new file mode 100755 index 0000000..262a69f Binary files /dev/null and b/res/letters/letter-b.bmp differ diff --git a/res/letters/letter-c.bmp b/res/letters/letter-c.bmp new file mode 100755 index 0000000..2679118 Binary files /dev/null and b/res/letters/letter-c.bmp differ diff --git a/res/letters/letter-d.bmp b/res/letters/letter-d.bmp new file mode 100755 index 0000000..5b8b9ba Binary files /dev/null and b/res/letters/letter-d.bmp differ diff --git a/res/letters/letter-e.bmp b/res/letters/letter-e.bmp new file mode 100755 index 0000000..de2b701 Binary files /dev/null and b/res/letters/letter-e.bmp differ diff --git a/res/letters/letter-f.bmp b/res/letters/letter-f.bmp new file mode 100755 index 0000000..2372800 Binary files /dev/null and b/res/letters/letter-f.bmp differ diff --git a/res/letters/letter-g.bmp b/res/letters/letter-g.bmp new file mode 100755 index 0000000..237148a Binary files /dev/null and b/res/letters/letter-g.bmp differ diff --git a/res/letters/letter-h.bmp b/res/letters/letter-h.bmp new file mode 100755 index 0000000..360b232 Binary files /dev/null and b/res/letters/letter-h.bmp differ diff --git a/res/letters/letter-i.bmp b/res/letters/letter-i.bmp new file mode 100755 index 0000000..be20a23 Binary files /dev/null and b/res/letters/letter-i.bmp differ diff --git a/res/letters/letter-j.bmp b/res/letters/letter-j.bmp new file mode 100755 index 0000000..e24a36f Binary files /dev/null and b/res/letters/letter-j.bmp differ diff --git a/res/letters/letter-k.bmp b/res/letters/letter-k.bmp new file mode 100755 index 0000000..feb33bf Binary files /dev/null and b/res/letters/letter-k.bmp differ diff --git a/res/letters/letter-l.bmp b/res/letters/letter-l.bmp new file mode 100755 index 0000000..c4c746f Binary files /dev/null and b/res/letters/letter-l.bmp differ diff --git a/res/letters/letter-m.bmp b/res/letters/letter-m.bmp new file mode 100755 index 0000000..227af44 Binary files /dev/null and b/res/letters/letter-m.bmp differ diff --git a/res/letters/letter-n.bmp b/res/letters/letter-n.bmp new file mode 100755 index 0000000..0493414 Binary files /dev/null and b/res/letters/letter-n.bmp differ diff --git a/res/letters/letter-o.bmp b/res/letters/letter-o.bmp new file mode 100755 index 0000000..5e66c2d Binary files /dev/null and b/res/letters/letter-o.bmp differ diff --git a/res/letters/letter-p.bmp b/res/letters/letter-p.bmp new file mode 100755 index 0000000..680a103 Binary files /dev/null and b/res/letters/letter-p.bmp differ diff --git a/res/letters/letter-q.bmp b/res/letters/letter-q.bmp new file mode 100755 index 0000000..ec1425b Binary files /dev/null and b/res/letters/letter-q.bmp differ diff --git a/res/letters/letter-r.bmp b/res/letters/letter-r.bmp new file mode 100755 index 0000000..cf35973 Binary files /dev/null and b/res/letters/letter-r.bmp differ diff --git a/res/letters/letter-s.bmp b/res/letters/letter-s.bmp new file mode 100755 index 0000000..778ab9d Binary files /dev/null and b/res/letters/letter-s.bmp differ diff --git a/res/letters/letter-t.bmp b/res/letters/letter-t.bmp new file mode 100755 index 0000000..789c76c Binary files /dev/null and b/res/letters/letter-t.bmp differ diff --git a/res/letters/letter-u.bmp b/res/letters/letter-u.bmp new file mode 100755 index 0000000..741d11f Binary files /dev/null and b/res/letters/letter-u.bmp differ diff --git a/res/letters/letter-v.bmp b/res/letters/letter-v.bmp new file mode 100755 index 0000000..69071e9 Binary files /dev/null and b/res/letters/letter-v.bmp differ diff --git a/res/letters/letter-w.bmp b/res/letters/letter-w.bmp new file mode 100755 index 0000000..46d063d Binary files /dev/null and b/res/letters/letter-w.bmp differ diff --git a/res/letters/letter-x.bmp b/res/letters/letter-x.bmp new file mode 100755 index 0000000..a8d4395 Binary files /dev/null and b/res/letters/letter-x.bmp differ diff --git a/res/letters/letter-y.bmp b/res/letters/letter-y.bmp new file mode 100755 index 0000000..5d6a432 Binary files /dev/null and b/res/letters/letter-y.bmp differ diff --git a/res/letters/letter-z.bmp b/res/letters/letter-z.bmp new file mode 100755 index 0000000..0c5ec0e Binary files /dev/null and b/res/letters/letter-z.bmp differ diff --git a/res/letters/ranking-A.png b/res/letters/ranking-A.png new file mode 100755 index 0000000..62bdba4 Binary files /dev/null and b/res/letters/ranking-A.png differ diff --git a/res/letters/ranking-B.png b/res/letters/ranking-B.png new file mode 100755 index 0000000..e6101be Binary files /dev/null and b/res/letters/ranking-B.png differ diff --git a/res/letters/ranking-C.png b/res/letters/ranking-C.png new file mode 100755 index 0000000..16fa5c5 Binary files /dev/null and b/res/letters/ranking-C.png differ diff --git a/res/letters/ranking-D.png b/res/letters/ranking-D.png new file mode 100755 index 0000000..030ce33 Binary files /dev/null and b/res/letters/ranking-D.png differ diff --git a/res/letters/ranking-S.png b/res/letters/ranking-S.png new file mode 100755 index 0000000..02486e2 Binary files /dev/null and b/res/letters/ranking-S.png differ diff --git a/res/letters/ranking-X.png b/res/letters/ranking-X.png new file mode 100755 index 0000000..dc9cec7 Binary files /dev/null and b/res/letters/ranking-X.png differ diff --git a/res/letters/symbol-percent.bmp b/res/letters/symbol-percent.bmp new file mode 100755 index 0000000..034c65c Binary files /dev/null and b/res/letters/symbol-percent.bmp differ diff --git a/res/lock.jpg b/res/lock.jpg deleted file mode 100644 index 114280a..0000000 Binary files a/res/lock.jpg and /dev/null differ diff --git a/res/lock.png b/res/lock.png deleted file mode 100644 index 2e87321..0000000 Binary files a/res/lock.png and /dev/null differ diff --git a/res/minecraft_lava.jpg b/res/minecraft_lava.jpg deleted file mode 100644 index 5c99402..0000000 Binary files a/res/minecraft_lava.jpg and /dev/null differ diff --git a/res/money.png b/res/money.png deleted file mode 100644 index f8e80ba..0000000 Binary files a/res/money.png and /dev/null differ diff --git a/res/pi.jpeg b/res/pi.jpeg deleted file mode 100644 index 1eed52b..0000000 Binary files a/res/pi.jpeg and /dev/null differ diff --git a/res/pi.png b/res/pi.png deleted file mode 100644 index 4cf3fae..0000000 Binary files a/res/pi.png and /dev/null differ diff --git a/res/question_block.png b/res/question_block.png deleted file mode 100644 index 1ec52ba..0000000 Binary files a/res/question_block.png and /dev/null differ diff --git a/res/rotation.png b/res/rotation.png deleted file mode 100644 index fdf3176..0000000 Binary files a/res/rotation.png and /dev/null differ diff --git a/res/selection-mod-doubletime.png b/res/selection-mod-doubletime.png deleted file mode 100644 index 5f23c09..0000000 Binary files a/res/selection-mod-doubletime.png and /dev/null differ diff --git a/res/selection-mod-flashlight.png b/res/selection-mod-flashlight.png deleted file mode 100644 index a7c0ac0..0000000 Binary files a/res/selection-mod-flashlight.png and /dev/null differ diff --git a/res/selection-mod-hardrock.png b/res/selection-mod-hardrock.png deleted file mode 100644 index e226aeb..0000000 Binary files a/res/selection-mod-hardrock.png and /dev/null differ diff --git a/res/selection-mod-suddendeath.png b/res/selection-mod-suddendeath.png deleted file mode 100644 index 88c5572..0000000 Binary files a/res/selection-mod-suddendeath.png and /dev/null differ diff --git a/res/sq_dotted.png b/res/sq_dotted.png deleted file mode 100644 index 3407548..0000000 Binary files a/res/sq_dotted.png and /dev/null differ diff --git a/res/sq_full.png b/res/sq_full.png deleted file mode 100644 index 25c1dfe..0000000 Binary files a/res/sq_full.png and /dev/null differ diff --git a/res/steel.jpeg b/res/steel.jpeg deleted file mode 100644 index 197e348..0000000 Binary files a/res/steel.jpeg and /dev/null differ diff --git a/res/tnt.png b/res/tnt.png deleted file mode 100644 index 4b82ae7..0000000 Binary files a/res/tnt.png and /dev/null differ diff --git a/res/white.png b/res/white.png deleted file mode 100644 index 009abfc..0000000 Binary files a/res/white.png and /dev/null differ diff --git a/src/base.h b/src/base.h index 9f67aa9..78dbd22 100644 --- a/src/base.h +++ b/src/base.h @@ -10,6 +10,8 @@ int convex_seg(int x1, int x2, double theta); double to_double(int n); int pw(int x, int n); double distance_pt(int x1, int x2, int y1, int y2); +int max(int a, int b); +int min(int a, int b); double norm(ptf p); double distance(ptf p1, ptf p2); diff --git a/src/cars.c b/src/cars.c index fb9df35..e76452e 100644 --- a/src/cars.c +++ b/src/cars.c @@ -34,9 +34,9 @@ car* init_car(int nPl, int nTotPl) { res->lastPos = (ptf){.fx = res->pos.fx, .fy = res->pos.fy}; res->chx = START_CHY; res->chy = START_CHX; - //res->vel = (ptf){.fx = 0.0, .fy = 0.0}; - double theta = (2.0*MAX_THETA_SPAWN*nPl/((nTotPl-1==0)?(1):(nTotPl-1)) - 1.0*MAX_THETA_SPAWN); - res->vel = (ptf){.fx = (rand()%100)/100.0*2.0*MAX_SPEED, .fy = (rand()%100-50.0)/100.0*2.0*MAX_SPEED}; + res->vel = (ptf){.fx = 0.0, .fy = 0.0}; + //double theta = (2.0*MAX_THETA_SPAWN*nPl/((nTotPl-1==0)?(1):(nTotPl-1)) - 1.0*MAX_THETA_SPAWN); + //res->vel = (ptf){.fx = (rand()%100)/100.0*2.0*MAX_SPEED, .fy = (rand()%100-50.0)/100.0*2.0*MAX_SPEED}; return res; } diff --git a/src/display.c b/src/display.c index d40418d..1b7aeba 100644 --- a/src/display.c +++ b/src/display.c @@ -501,6 +501,16 @@ void renderCircles(SDL_Renderer* renderer, level* lvl, int cx, int cy, int range } } +pt project(int p, int cx, int cy, int range, int rsize) { + if(players[p].c->chx >= cy-range && players[p].c->chx <= cy+range && players[p].c->chy >= cx-range && players[p].c->chy <= cx+range) { + int cox = (WIDTH-rsize)/2+rsize*(players[p].c->chx-cy) + (int)((players[p].c->pos.fx*1.0)/ROOM_SIZE*rsize); + int coy = (HEIGHT-rsize)/2+rsize*(players[p].c->chy-cx) + (int)((players[p].c->pos.fy*1.0)/ROOM_SIZE*rsize); + return (pt){.ix = cox, .iy = coy}; + } else { + return (pt){.ix = -WIDTH, .iy = -HEIGHT}; + } +} + void renderPlayers(SDL_Renderer* renderer, int cx, int cy, int range, int rsize) { for(int p = 0; p < nPlayers; p++) { if(players[p].c->chx >= cy-range && players[p].c->chx <= cy+range && players[p].c->chy >= cx-range && players[p].c->chy <= cx+range) { diff --git a/src/display.h b/src/display.h index b91b307..727d91a 100644 --- a/src/display.h +++ b/src/display.h @@ -17,6 +17,7 @@ void SDL_RenderFillCircle(SDL_Renderer * renderer, int x, int y, int radius, int void drawCircleToRenderer(SDL_Renderer * renderer, int32_t centreX, int32_t centreY, int32_t radius, int r, int g, int b, int a); void drawQuarterCircleToRenderer(SDL_Renderer * renderer, int32_t centreX, int32_t centreY, int32_t radius, bool TL, bool TR, bool BL, bool BR, int r, int g, int b, int a); +pt project(int p, int cx, int cy, int range, int rsize); void renderMap(SDL_Renderer* renderer, level* lvl, int cx, int cy, int range, int rsize); void import_digits(SDL_Renderer* renderer); diff --git a/src/main.c b/src/main.c index 869afd4..ab0f334 100644 --- a/src/main.c +++ b/src/main.c @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include #include @@ -18,11 +18,7 @@ #include "rooms.h" #include "cars.h" -const int N_PLAYERS = 4; -double elapsed = 0.0; - -bool halt = false; -void playerActions() { +void cameraActions(level* lvl, bool* halt, int* cx, int* cy, int* dezoom, int* sizeR) { SDL_Event event; while(SDL_PollEvent(&event)) { switch (event.type) { @@ -31,7 +27,33 @@ void playerActions() { case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_SPACE: - halt = true; + *halt = true; + break; + + case SDLK_q: + *cy = max(0, *cy-1); + break; + + case SDLK_z: + *cx = max(0, *cx-1); + break; + + case SDLK_d: + *cy = min(lvl->lines-1, *cy+1); + break; + + case SDLK_s: + *cx = min(lvl->cols-1, *cx+1); + break; + + case SDLK_p: + *dezoom = max(1, *dezoom-1); + *sizeR = min(WIDTH, HEIGHT)/(2*(*dezoom)+1)+1; + break; + + case SDLK_m: + *dezoom = min(3, *dezoom+1); + *sizeR = min(WIDTH, HEIGHT)/(2*(*dezoom)+1)+1; break; default: @@ -41,7 +63,50 @@ void playerActions() { } } -int main() { +void player_turn(int id, char* exec) { + system(exec); + FILE* ptr = fopen("bots/answer.txt", "r"); + int angle, mult; + fscanf(ptr, "%d %d", &angle, &mult); + fclose(ptr); + set_speed_car(players[id].c, MAX_SPEED*mult/100.0*cos(angle*3.14159/180.0), MAX_SPEED*mult/100.0*sin(angle*3.14159/180.0)); +} + +void parse_all_players(level* lvl, char** execs) { + currentTurn += 1; + for(int p = 0; p < nPlayers; p++) { + write_output("output.txt", lvl, p); + usleep(1000000/10); + player_turn(p, execs[p]); + } +} + +int main(int argc, char** argv) { + if(argc < 2) { + fprintf(stderr, "usage : ./back ...\n"); + exit(1); + } + int N_PLAYERS = argc-2; + + char** execs = malloc(sizeof(char*)*N_PLAYERS); + for(int k = 0; k < N_PLAYERS; k++) { + execs[k] = malloc(sizeof(char)*64); + execs[k][0] = '.'; + execs[k][1] = '/'; + int i = 2; + while(i-2 < 64 && argv[k+2][i-2] != '\0') { + execs[k][i] = argv[k+2][i-2]; + i += 1; + } + execs[k][i] = '\0'; + } + + for(int k = 0; k < N_PLAYERS; k++) { + printf("[%d] %s\n", k, execs[k]); + } + + double elapsed = 0.0; + bool halt = false; srand(time(NULL)); if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { printf("error initializing SDL: %s\n", SDL_GetError()); @@ -58,8 +123,8 @@ int main() { import_letters(rend); import_digits(rend); // ---------------------------- // - //test_file("levels/test.txt"); - level* test = parse_level("levels/test.txt"); + //stage_file("levels/stage.txt"); + level* stage = parse_level(argv[1]); init_all(N_PLAYERS); printf("Starting direction : "); @@ -75,28 +140,54 @@ int main() { printf("???\n"); } + int cx = 1; + int cy = 2; + int dezoom = 2; + int sizeR = 200; while(!halt) { resetRenderer(rend); - renderMap(rend, test, 1, 2, 2, 200); + renderMap(rend, stage, cx, cy, dezoom, sizeR); + for(int p = 0; p < N_PLAYERS; p++) { + pt proj = project(p, cx, cy, dezoom, sizeR); + drawStringToRenderer(rend, &(execs[p][1]), proj.ix, proj.iy, 75/(4+dezoom), 105/(4+dezoom)); + } if(elapsed <= 0.7) { + // just selected speeds + for(int p = 0; p < N_PLAYERS; p++) { + pt proj = project(p, cx, cy, dezoom, sizeR); + drawLineWithThicc(rend, 2, + proj.ix, + proj.ix+(int)(players[p].c->vel.fx/5.0), + proj.iy, + proj.iy+(int)(players[p].c->vel.fy/5.0), + players[p].rgb.red, players[p].rgb.green, players[p].rgb.blue, 255 + ); + } placeRectToRenderer(rend, 0, 0, 50, 50, 255, 255, 32, 192); - } else if(updateCars(test)) { + } else if(updateCars(stage)) { + // movement placeRectToRenderer(rend, 0, 0, 50, 50, 32, 255, 32, 192); } else { + // no movement placeRectToRenderer(rend, 0, 0, 50, 50, 255, 32, 32, 192); + parse_all_players(stage, execs); + elapsed = 0.0; } + draw7SegNumberToRenderer(rend, currentTurn, WIDTH/2, 30, 25, 25, 3, 255, 255, 255, 255, 0, 0); updateRenderer(rend); elapsed += DT; usleep((int)(1000000*DT)); - playerActions(); + cameraActions(stage, &halt, &cx, &cy, &dezoom, &sizeR); } - - write_output("output.txt", test, 2); // ---------------------------- // free_digits(digits); free_digits(letters); - free_level(test); + free_level(stage); + for(int k = 0; k < N_PLAYERS; k++) { + free(execs[k]); + } + free(execs); SDL_DestroyRenderer(rend); SDL_DestroyWindow(win); @@ -106,7 +197,7 @@ int main() { /* TODO : - add level generation - - add player input parsing (and some dumb code to test it) + - add player input parsing (and some dumb code to stage it) - add function that gives players the necessary data to play - check seg faults + add items diff --git a/src/structure.c b/src/structure.c index 82e4f8e..989765a 100644 --- a/src/structure.c +++ b/src/structure.c @@ -7,12 +7,12 @@ const int WIDTH = 1000; const int HEIGHT = 1000; const int ROOM_SIZE = 100; -const int MAX_SPEED = 150; // m/s +const int MAX_SPEED = 200; // m/s const double DIST_EDGE = 0.2; const double START_EDGE = 0.05; const double RESTITUTION_WALL = 0.8; -const double RESTITUTION_PLAYER = 0.8; +const double RESTITUTION_PLAYER = 0.8; // keep equal to prevouis constant const int PLAYER_R = 10; const int MAX_THETA_SPAWN = 80; // degrees @@ -20,12 +20,12 @@ const int MAX_THETA_SPAWN = 80; // degrees const int BARRIERS = 1; const double BARRIER_WIDTH = 0.05; -const double FRICTION = 0.75; -const double DV = 1.5; // m/s +const double FRICTION = 0.90; +const double DV = 2.2; // m/s const double DT = 1.0/100.0; const double EPSILON = 1.0/4096.0; -const double DELTA_V = 0.98; // m/s +const double DELTA_V = MAX_SPEED/30; // m/s const double DELTA_THETA = 5; // degrees // ------------------------------------------------------------------------------------------ // @@ -60,5 +60,13 @@ void write_output(char* stream, level* lvl, int nPl) { } fprintf(ptr, "\n"); } + fprintf(ptr, "\n"); + fprintf(ptr, "%d\n", ROOM_SIZE); + fprintf(ptr, "%d\n", MAX_SPEED); + fprintf(ptr, "%d\n", PLAYER_R); + fprintf(ptr, "%.2lf\n", FRICTION); + fprintf(ptr, "%.2lf\n", RESTITUTION_WALL); + fprintf(ptr, "%.2lf\n", DIST_EDGE); + fprintf(ptr, "\n\nRoom Size\nMaximum speed\nPlayer Radius\nFriction\nRestitution factor\nTrack Distance to Edge\n"); fclose(ptr); } \ No newline at end of file