From a78367dc79a5cb2cc0787a980a95a83d38d2a71b Mon Sep 17 00:00:00 2001 From: Alexandre Date: Sat, 21 Dec 2024 11:21:56 +0100 Subject: [PATCH] added value display to graphing + removed a tkinter function from python script --- entrees.txt | 49 ++++++------- graphing.c | 106 ++++++++++++++++++++++++++- graphs | Bin 22184 -> 26400 bytes iachallenge2024_bomberman_tkinter.py | 2 +- sortie.txt | 2 +- 5 files changed, 128 insertions(+), 31 deletions(-) diff --git a/entrees.txt b/entrees.txt index d88f6cb..08678d1 100644 --- a/entrees.txt +++ b/entrees.txt @@ -1,30 +1,27 @@ -68.89999999999996 -2 +230.35480000000163 +0 13 21 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 3 3 3 3 3 0 2 2 2 2 2 2 2 2 0 5 5 5 5 1 -1 3 1 3 1 0 1 2 1 2 1 2 1 2 1 2 1 5 1 5 1 -1 3 3 3 3 0 2 2 2 2 2 2 2 2 2 2 0 5 5 5 1 -1 3 1 3 1 2 1 2 1 2 1 2 1 2 1 2 1 0 1 5 1 -1 3 3 3 0 2 2 2 2 2 2 2 2 2 2 2 2 2 0 5 1 -1 3 1 6 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 5 1 -1 0 0 6 0 2 2 2 2 2 2 2 2 2 2 2 2 0 0 5 1 -1 0 1 6 1 2 1 2 1 2 1 2 1 2 1 2 1 4 1 4 1 -1 6 6 6 0 0 2 2 2 2 2 2 2 2 2 0 4 4 4 4 1 -1 6 1 6 1 6 1 2 1 2 1 2 1 2 1 2 1 4 1 4 1 -1 6 6 6 6 6 6 0 2 2 2 2 2 2 2 0 4 4 4 4 1 +1 3 3 6 6 6 6 6 6 3 4 4 4 3 4 4 4 3 3 3 1 +1 3 1 3 1 3 1 6 1 3 1 4 1 3 1 4 1 6 1 5 1 +1 3 3 3 3 3 3 3 3 3 3 6 6 3 6 6 6 6 6 6 1 +1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 6 1 4 1 3 1 +1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 6 3 1 +1 3 1 3 1 3 1 3 1 3 1 6 1 3 1 6 1 3 1 3 1 +1 3 3 3 3 3 3 3 3 3 3 6 6 3 6 6 6 6 6 6 1 +1 6 1 3 1 3 1 3 1 3 1 6 1 3 1 6 1 3 1 3 1 +1 3 3 3 3 3 3 3 3 3 3 3 6 3 6 6 6 6 3 3 1 +1 6 1 3 1 3 1 3 1 3 1 6 1 3 1 6 1 3 1 3 1 +1 3 3 3 3 3 6 3 6 3 6 6 6 3 6 6 4 3 3 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +5 +7 17 1 230.4744000000016 +4 15 5 230.6500000000007 +5 16 5 231.91820000000158 +6 19 5 234.5426000000016 +7 14 1 235.06710000000166 3 -8 17 2 69.89999999999993 -9 5 1 70.99999999999993 -7 18 2 73.59999999999998 -4 -5 3 0 0 2 2 2 0 -7 19 1 1 0 2 2 1 -11 16 2 1 0 2 0 0 -11 7 3 1 1 1 3 4 -4 -2 5 0 -1 6 4 -5 4 3 -7 2 2 +8 19 0 4 2 5 3 4 +7 12 1 4 0 1 0 3 +5 11 3 2 1 5 3 2 +0 diff --git a/graphing.c b/graphing.c index 94e2025..78c1da4 100644 --- a/graphing.c +++ b/graphing.c @@ -122,6 +122,101 @@ void placeRectToRendererNoColor(SDL_Renderer* renderer, int X, int Y, int W, int SDL_RenderFillRect(renderer, &rect); } +int ln_b(int b, int n) { + if(n < 0) { + return ln_b(b, -n) ; + } else if(n < b) { + return 0; + } + return 1 + ln_b(b, n/b) ; +} + +void drawDigitToRenderer(SDL_Renderer* renderer, int d, int width, int X, int Y, int W, int H) { + switch (d) { + case 0: + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, W+2*width, 2*width); // 1 + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, 2*width, H+2*width); // 2 + placeRectToRendererNoColor(renderer, X+W-width/2, Y-width/2, 2*width, H+2*width); // 3 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, 2*width, H+2*width); // 5 + placeRectToRendererNoColor(renderer, X+W-width/2, Y+H-width/2, 2*width, H+2*width); // 6 + placeRectToRendererNoColor(renderer, X-width/2, Y+2*H-width/2, W+2*width, 2*width); // 7 + break; + case 1: + placeRectToRendererNoColor(renderer, X+W-width/2, Y-width/2, 2*width, H+2*width); // 3 + placeRectToRendererNoColor(renderer, X+W-width/2, Y+H-width/2, 2*width, H+2*width); // 6 + break; + case 2: + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, W+2*width, 2*width); // 1 + placeRectToRendererNoColor(renderer, X+W-width/2, Y-width/2, 2*width, H+2*width); // 3 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, W+2*width, 2*width); // 4 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, 2*width, H+2*width); // 5 + placeRectToRendererNoColor(renderer, X-width/2, Y+2*H-width/2, W+2*width, 2*width); // 7 + break; + case 3: + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, W+2*width, 2*width); // 1 + placeRectToRendererNoColor(renderer, X+W-width/2, Y-width/2, 2*width, H+2*width); // 3 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, W+2*width, 2*width); // 4 + placeRectToRendererNoColor(renderer, X+W-width/2, Y+H-width/2, 2*width, H+2*width); // 6 + placeRectToRendererNoColor(renderer, X-width/2, Y+2*H-width/2, W+2*width, 2*width); // 7 + break; + case 4: + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, 2*width, H+2*width); // 2 + placeRectToRendererNoColor(renderer, X+W-width/2, Y-width/2, 2*width, H+2*width); // 3 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, W+2*width, 2*width); // 4 + placeRectToRendererNoColor(renderer, X+W-width/2, Y+H-width/2, 2*width, H+2*width); // 6 + break; + case 5: + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, W+2*width, 2*width); // 1 + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, 2*width, H+2*width); // 2 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, W+2*width, 2*width); // 4 + placeRectToRendererNoColor(renderer, X+W-width/2, Y+H-width/2, 2*width, H+2*width); // 6 + placeRectToRendererNoColor(renderer, X-width/2, Y+2*H-width/2, W+2*width, 2*width); // 7 + break; + case 6: + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, W+2*width, 2*width); // 1 + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, 2*width, H+2*width); // 2 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, W+2*width, 2*width); // 4 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, 2*width, H+2*width); // 5 + placeRectToRendererNoColor(renderer, X+W-width/2, Y+H-width/2, 2*width, H+2*width); // 6 + placeRectToRendererNoColor(renderer, X-width/2, Y+2*H-width/2, W+2*width, 2*width); // 7 + break; + case 7: + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, W+2*width, 2*width); // 1 + placeRectToRendererNoColor(renderer, X+W-width/2, Y-width/2, 2*width, H+2*width); // 3 + placeRectToRendererNoColor(renderer, X+W-width/2, Y+H-width/2, 2*width, H+2*width); // 6 + break; + case 8: + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, W+2*width, 2*width); // 1 + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, 2*width, H+2*width); // 2 + placeRectToRendererNoColor(renderer, X+W-width/2, Y-width/2, 2*width, H+2*width); // 3 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, W+2*width, 2*width); // 4 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, 2*width, H+2*width); // 5 + placeRectToRendererNoColor(renderer, X+W-width/2, Y+H-width/2, 2*width, H+2*width); // 6 + placeRectToRendererNoColor(renderer, X-width/2, Y+2*H-width/2, W+2*width, 2*width); // 7 + break; + case 9: + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, W+2*width, 2*width); // 1 + placeRectToRendererNoColor(renderer, X-width/2, Y-width/2, 2*width, H+2*width); // 2 + placeRectToRendererNoColor(renderer, X+W-width/2, Y-width/2, 2*width, H+2*width); // 3 + placeRectToRendererNoColor(renderer, X-width/2, Y+H-width/2, W+2*width, 2*width); // 4 + placeRectToRendererNoColor(renderer, X+W-width/2, Y+H-width/2, 2*width, H+2*width); // 6 + placeRectToRendererNoColor(renderer, X-width/2, Y+2*H-width/2, W+2*width, 2*width); // 7 + break; + default: + break; + } +} + +void drawIntegerToRenderer(SDL_Renderer* renderer, int n, int width, int X, int Y, int W, int H, int R, int G, int B, int A) { + setRendererColor(renderer, R, G, B, A) ; + int dsize = 1+ln_b(10, n) ; + int cur_n = n ; + for(int i = 0; i < dsize; i++) { + drawDigitToRenderer(renderer, cur_n%10, width, X+(W+3*width)*(dsize-1-i), Y, W, H) ; + cur_n = cur_n / 10 ; + } +} + void drawCircleToRenderer(SDL_Renderer * renderer, int32_t centreX, int32_t centreY, int32_t radius) { const int32_t diameter = (radius * 2); @@ -256,10 +351,15 @@ void update_graph(SDL_Renderer* renderer, int** board, int current_time) { int xc = convex_pt(left_x, right_x, ((float)(t0))/((float)(borned))) ; int yc = convex_pt(bot_y, top_y, 1.0f - ((float)(max(0, board[t][pl])))/((float)(max_val+1))) ; //drawCircleToRenderer(renderer, xc, yc, 10) ; - placeRectToRenderer(renderer, xc, yc-y_size+offset+wside, x_size, y_size, 255*(pl==0||pl==3), 255*(pl>=2), 255*(pl==1), 96) ; + placeRectToRenderer(renderer, xc, yc-y_size+offset+wside, x_size, y_size, 255*(pl==0)+192*(pl==3), 255*(pl==2)+192*(pl==3), 255*(pl==1), 96) ; } } - + int tmax = (borned-1 + max(0, current_time - map_size +1))%map_size ; + for(int pl = 0; pl < 4; pl++) { + int mval = max(0, board[tmax][pl]); + int yc = convex_pt(bot_y, top_y, 1.0f - ((float)(max(0, board[tmax][pl])))/((float)(max_val+1))) ; + drawIntegerToRenderer(renderer, mval, 2, right_x+2-20*(-1+ln_b(10, mval)), yc+14-2*2, 14, 14, 255*(pl==0)+192*(pl==3), 255*(pl==2)+192*(pl==3), 255*(pl==1), 128) ; + } updateRenderer(renderer) ; } @@ -305,7 +405,7 @@ int main(int argc, char** argv) { while(!game_ended) { while(!can_pass()) { - + // required because of non-synchronization causing this to read a non-full file } int cur_time = get_data("entrees.txt", board, &game_ended) ; //fprintf(stderr, "%d %d %d\n", last_time, cur_time, game_ended) ; diff --git a/graphs b/graphs index f50e6dbb17a641bc9b295597748d479b09db1101..cb405bc61b0c1cf0dff35cafcabec4da9ff9b43d 100755 GIT binary patch literal 26400 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 gv+f(go-Lcj9xSy|51(efvfPoU^&AqJ ", temps) # not here diff --git a/sortie.txt b/sortie.txt index 7cc0f37..389086a 100644 --- a/sortie.txt +++ b/sortie.txt @@ -1 +1 @@ -4 0 \ No newline at end of file +2 0 \ No newline at end of file