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 f50e6db..cb405bc 100755 Binary files a/graphs and b/graphs differ diff --git a/iachallenge2024_bomberman_tkinter.py b/iachallenge2024_bomberman_tkinter.py index 1325aa7..be3cbf0 100644 --- a/iachallenge2024_bomberman_tkinter.py +++ b/iachallenge2024_bomberman_tkinter.py @@ -540,7 +540,7 @@ def simulation(strategies): execute_evenement(evenements, evenement, plateau, plateauCouleur, bombes, joueurs, powerups, pieges) affiche_plateau(canvas, plateau, plateauCouleur, bombes, joueurs, powerups) affiche_infos(canvasInfosJoueurs, joueurs, plateauCouleur) - affiche_empires(canvasInfosJoueurs, joueurs, plateauCouleur) # very laggy for some reason # not anymore + #affiche_empires(canvasInfosJoueurs, joueurs, plateauCouleur) # very laggy for some reason # not anymore temps = int(1000*(evenements[0][0]-evenement[0])/TIME_FACTOR) #print(1000*(evenements[0][0]-evenement[0])/TIME_FACTOR, " <--> ", 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