From 56e32f2c3ed7add455e8c90d158df43b3690a900 Mon Sep 17 00:00:00 2001 From: zero <103244351+zerohorsepower@users.noreply.github.com> Date: Tue, 30 Sep 2025 06:59:44 -0300 Subject: [PATCH] ADDED: example: `shapes_bullet_hell` (#5218) * add shapes_bullet_hell example * adjust example count --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/README.md | 5 +- examples/examples_list.txt | 1 + examples/shapes/shapes_bullet_hell.c | 286 +++++++++++++++++++++++++ examples/shapes/shapes_bullet_hell.png | Bin 0 -> 38660 bytes 6 files changed, 295 insertions(+), 2 deletions(-) create mode 100644 examples/shapes/shapes_bullet_hell.c create mode 100644 examples/shapes/shapes_bullet_hell.png diff --git a/examples/Makefile b/examples/Makefile index 36faed3b3..de02ae085 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -541,6 +541,7 @@ CORE = \ SHAPES = \ shapes/shapes_basic_shapes \ shapes/shapes_bouncing_ball \ + shapes/shapes_bullet_hell \ shapes/shapes_circle_sector_drawing \ shapes/shapes_collision_area \ shapes/shapes_colors_palette \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index b1b1f0779..8c9707274 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -541,6 +541,7 @@ CORE = \ SHAPES = \ shapes/shapes_basic_shapes \ shapes/shapes_bouncing_ball \ + shapes/shapes_bullet_hell \ shapes/shapes_circle_sector_drawing \ shapes/shapes_collision_area \ shapes/shapes_colors_palette \ @@ -807,6 +808,9 @@ shapes/shapes_basic_shapes: shapes/shapes_basic_shapes.c shapes/shapes_bouncing_ball: shapes/shapes_bouncing_ball.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +shapes/shapes_bullet_hell: shapes/shapes_bullet_hell.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shapes/shapes_circle_sector_drawing: shapes/shapes_circle_sector_drawing.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/README.md b/examples/README.md index 48e83c852..92ea9aa07 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 164] +## EXAMPLES COLLECTION [TOTAL: 165] ### category: core [38] @@ -64,7 +64,7 @@ Examples using raylib[core](../src/rcore.c) platform functionality like window c | [core_undo_redo](core/core_undo_redo.c) | core_undo_redo | ⭐⭐⭐☆ | 5.5 | 5.6 | [Ramon Santamaria](https://github.com/raysan5) | | [core_input_actions](core/core_input_actions.c) | core_input_actions | ⭐⭐☆☆ | 5.5 | 5.6 | [Jett](https://github.com/JettMonstersGoBoom) | -### category: shapes [20] +### category: shapes [21] Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module. @@ -72,6 +72,7 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes]( |-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| | [shapes_basic_shapes](shapes/shapes_basic_shapes.c) | shapes_basic_shapes | ⭐☆☆☆ | 1.0 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | | [shapes_bouncing_ball](shapes/shapes_bouncing_ball.c) | shapes_bouncing_ball | ⭐☆☆☆ | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_bullet_hell](shapes/shapes_bullet_hell.c) | shapes_bullet_hell | ⭐☆☆☆ | 5.6 | 5.6 | [Zero](https://github.com/zerohorsepower) | | [shapes_colors_palette](shapes/shapes_colors_palette.c) | shapes_colors_palette | ⭐⭐☆☆ | 1.0 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | | [shapes_logo_raylib](shapes/shapes_logo_raylib.c) | shapes_logo_raylib | ⭐☆☆☆ | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | | [shapes_logo_raylib_anim](shapes/shapes_logo_raylib_anim.c) | shapes_logo_raylib_anim | ⭐⭐☆☆ | 2.5 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | diff --git a/examples/examples_list.txt b/examples/examples_list.txt index b5682123f..6af9bb6eb 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -47,6 +47,7 @@ core;core_undo_redo;★★★☆;5.5;5.6;2025;2025;"Ramon Santamaria";@raysan5 core;core_input_actions;★★☆☆;5.5;5.6;2025;2025;"Jett";@JettMonstersGoBoom shapes;shapes_basic_shapes;★☆☆☆;1.0;4.2;2014;2025;"Ramon Santamaria";@raysan5 shapes;shapes_bouncing_ball;★☆☆☆;2.5;2.5;2013;2025;"Ramon Santamaria";@raysan5 +shapes;shapes_bullet_hell;★☆☆☆;5.6;5.6;2025;2025;"Zero";@zerohorsepower shapes;shapes_colors_palette;★★☆☆;1.0;2.5;2014;2025;"Ramon Santamaria";@raysan5 shapes;shapes_logo_raylib;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 shapes;shapes_logo_raylib_anim;★★☆☆;2.5;4.0;2014;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/shapes/shapes_bullet_hell.c b/examples/shapes/shapes_bullet_hell.c new file mode 100644 index 000000000..011be9e84 --- /dev/null +++ b/examples/shapes/shapes_bullet_hell.c @@ -0,0 +1,286 @@ +/******************************************************************************************* +* +* raylib [shapes] example - bullet hell +* +* Example complexity rating: [★☆☆☆] 1/4 +* +* Example originally created with raylib 5.6, last time updated with raylib 5.6 +* +* Example contributed by Zero (@zerohorsepower) and reviewed by Ramon Santamaria (@raysan5) +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2025-2025 Zero (@zerohorsepower) +* +********************************************************************************************/ + +#include "raylib.h" +#include // Required for: malloc(), free() +#include // Required for: cosf(), sinf() + +#define MAX_BULLETS 500000 // Max bullets that 800x450 can keep on minimum settings is 130.000 bullets + +//---------------------------------------------------------------------------------- +// Types and Structures Definition +//---------------------------------------------------------------------------------- +typedef struct Bullet { + Vector2 position; + Vector2 acceleration; // the amount of pixels to be incremented to position every frame + bool disabled; // skip processing and draw case out of screen + Color color; +} Bullet; + +//---------------------------------------------------------------------------------- +// Module Functions Declaration +//---------------------------------------------------------------------------------- + + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - bullet hell"); + + // Bullet + Bullet *bullets = (Bullet *)malloc(MAX_BULLETS*sizeof(Bullet)); // Bullets array + int bulletCount = 0; + int bulletDisabledCount = 0; // Used to calculate how many bullets are on screen + int bulletRadius = 10; + float bulletSpeed = 3.0f; + int bulletRows = 6; + Color bulletColor[2] = { RED, BLUE }; + + // Spawner + float baseDirection = 0; + int angleIncrement = 5; // After spawn all bullet rows, increment this value on the baseDirection for next the frame + float spawnCooldown = 2; + float spawnCooldownTimer = spawnCooldown; + + // Magic circle + float magicCircleRotation = 0; + + // Used on performance drawing + RenderTexture bulletTexture = LoadRenderTexture(24, 24); + + // Draw circle to bullet texture, then draw bullet using DrawTexture() + // This is being done to improve the performance, since DrawCircle() is slow + BeginDrawing(); + BeginTextureMode(bulletTexture); + DrawCircle(12, 12, bulletRadius, WHITE); + DrawCircleLines(12, 12, bulletRadius, BLACK); + EndTextureMode(); + EndDrawing(); + + bool drawInPerformanceMode = true; + + SetTargetFPS(60); + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + + // Reset the bullet index + // New bullets will replace the old ones that are already disabled due to out-of-screen + if (bulletCount >= MAX_BULLETS) + { + bulletCount = 0; + bulletDisabledCount = 0; + } + + spawnCooldownTimer--; + if (spawnCooldownTimer < 0) + { + spawnCooldownTimer = spawnCooldown; + + // Spawn bullets + float degreesPerRow = 360.0f / bulletRows; + for (int row = 0; row < bulletRows; row++) + { + + if (bulletCount < MAX_BULLETS) + { + + bullets[bulletCount].position = (Vector2){(float) screenWidth/2, (float) screenHeight/2}; + bullets[bulletCount].disabled = false; + bullets[bulletCount].color = bulletColor[row % 2]; + + float bulletDirection = baseDirection + (degreesPerRow * row); + + // bullet speed * bullet direction, this will determine how much pixels will be incremented/decremented + // from the bullet position every frame. Since the bullets doesn't change its direction and speed, + // only need to calculate it at the spawning time. + // 0 degrees = right, 90 degrees = down, 180 degrees = left and 270 degrees = up, basically clockwise. + // Case you want it to be anti-clockwise, add "* -1" at the y acceleration + bullets[bulletCount].acceleration = (Vector2){ + bulletSpeed * cosf(bulletDirection * DEG2RAD), + bulletSpeed * sinf(bulletDirection * DEG2RAD) + }; + + bulletCount++; + } + } + + baseDirection += angleIncrement; + + } + + + // Update bullets position based on its acceleration + for (int i = 0; i < bulletCount; i++) + { + + // Only update bullet if inside the screen + if (!bullets[i].disabled) + { + + bullets[i].position.x += bullets[i].acceleration.x; + bullets[i].position.y += bullets[i].acceleration.y; + + // Disable bullet if out of screen + if + ( + bullets[i].position.x < -bulletRadius*2 || + bullets[i].position.x > screenWidth + bulletRadius*2 || + bullets[i].position.y < -bulletRadius*2 || + bullets[i].position.y > screenHeight + bulletRadius*2 + ) + { + bullets[i].disabled = true; + bulletDisabledCount++; + } + } + } + + // Input + if ((IsKeyPressed(KEY_RIGHT) || IsKeyPressed(KEY_D)) && bulletRows < 359) bulletRows++; + if ((IsKeyPressed(KEY_LEFT) || IsKeyPressed(KEY_A)) && bulletRows > 1) bulletRows--; + if (IsKeyPressed(KEY_UP) || IsKeyPressed(KEY_W)) bulletSpeed += 0.25f; + if ((IsKeyPressed(KEY_DOWN) || IsKeyPressed(KEY_S)) && bulletSpeed > 0.50f) bulletSpeed -= 0.25f; + if (IsKeyPressed(KEY_Z) && spawnCooldown > 1) spawnCooldown--; + if (IsKeyPressed(KEY_X)) spawnCooldown++; + if (IsKeyPressed(KEY_ENTER)) drawInPerformanceMode = !drawInPerformanceMode; + + if (IsKeyDown(KEY_SPACE)) + { + angleIncrement += 1; + angleIncrement %= 360; + } + + if (IsKeyPressed(KEY_C)) + { + bulletCount = 0; + bulletDisabledCount = 0; + } + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + // Draw magic circle + magicCircleRotation++; + DrawRectanglePro( + (Rectangle) { (float) screenWidth/2, (float) screenHeight/2, 120, 120 }, + (Vector2) { 60, 60 }, + magicCircleRotation, + PURPLE + ); + DrawRectanglePro( + (Rectangle) { (float) screenWidth/2, (float) screenHeight/2, 120, 120 }, + (Vector2) { 60, 60 }, + magicCircleRotation + 45, + PURPLE + ); + DrawCircleLines(screenWidth/2, screenHeight/2, 70, BLACK); + DrawCircleLines(screenWidth/2, screenHeight/2, 50, BLACK); + DrawCircleLines(screenWidth/2, screenHeight/2, 30, BLACK); + + + // Draw bullets + // DrawInPerformanceMode = draw bullets using DrawTexture, DrawCircle is vary slow + if (drawInPerformanceMode) + { + for (int i = 0; i < bulletCount; i++) + { + // Do not draw disabled bullets (out of screen) + if (!bullets[i].disabled) + { + DrawTexture( + bulletTexture.texture, + bullets[i].position.x - bulletTexture.texture.width*0.5f, + bullets[i].position.y - bulletTexture.texture.height*0.5f, + bullets[i].color + ); + } + } + } else { + + for (int i = 0; i < bulletCount; i++) + { + // Do not draw disabled bullets (out of screen) + if (!bullets[i].disabled) + { + DrawCircleV(bullets[i].position, bulletRadius, bullets[i].color); + DrawCircleLinesV(bullets[i].position, bulletRadius, BLACK); + } + } + } + + // Draw UI + DrawRectangle(10, 10, 280, 150, (Color){0,0, 0, 200 }); + DrawText("Controls:", 20, 20, 10, LIGHTGRAY); + DrawText("- Right/Left or A/D: Change rows number", 40, 40, 10, LIGHTGRAY); + DrawText("- Up/Down or W/S: Change bullet speed", 40, 60, 10, LIGHTGRAY); + DrawText("- Z or X: Change spawn cooldown", 40, 80, 10, LIGHTGRAY); + DrawText("- Space (Hold): Change the angle increment", 40, 100, 10, LIGHTGRAY); + DrawText("- Enter: Switch draw method (Performance)", 40, 120, 10, LIGHTGRAY); + DrawText("- C: Clear bullets", 40, 140, 10, LIGHTGRAY); + + DrawRectangle(610, 10, 170, 30, (Color){0,0, 0, 200 }); + if (drawInPerformanceMode) + { + DrawText("Draw method: DrawTexture(*)", 620, 20, 10, GREEN); + } else { + DrawText("Draw method: DrawCircle(*)", 620, 20, 10, RED); + } + + + DrawRectangle(135, 410, 530, 30, (Color){0,0, 0, 200 }); + DrawText( + TextFormat( + "[ FPS: %d, Bullets: %d, Rows: %d, Bullet speed: %.2f, Angle increment per frame: %d, Cooldown: %.0f ]", + GetFPS(), bulletCount - bulletDisabledCount, bulletRows, bulletSpeed, angleIncrement, spawnCooldown + ), + 155, + 420, + 10, + GREEN + ); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + + UnloadRenderTexture(bulletTexture); + + free(bullets); + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/shapes/shapes_bullet_hell.png b/examples/shapes/shapes_bullet_hell.png new file mode 100644 index 0000000000000000000000000000000000000000..cf8e5d8f638b7ef0ef5d4269cbdae98a6c2d945a GIT binary patch literal 38660 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYU_8XZ#=yWJp1k%11H-h_o-U3d6>-Ubetmsi z&t`Jq?Afy)d@j#vjB4O4>Fem0bP>#WA2k(toQ zmhSk={k7FAx9=GheS4TvwlEt-WloS``r#%$(OPwhh=#&e5mOd7cRBaqPZ=CNKLifE z=vdHtB11XdWO6`qN%a6KX2sM%cmEy<-+4SKB~A_t&2Al(@U>p72-blh z9QF$|=(aCEmbv4{F9x5*6Ro6}emEt3X_;~Hiy_Etgi0{W;jF-coh;o_whJ!a?7w(~ zi=WXb-OERF}!ZdO)@t!J$R`-&}_@JRVU zB4bO5l>DB@jn5T$XUw|TcOpYh8srCwPQ`}p%uM<-8Wod|oOCYvG3WO`)-~6zT$yt4 z;K4+bRNkio5ifi~ulFx&zxbv>mxWKp!a&Mkv7*5f=Y|=5>~|(#ILEnCowZL*_>*(P ztnAw>CHWVBRZ3l0`Rhxj2(v@(`HMA9l^hL+0$+Xc+~Byt?tmC;?jj!6wRKFIDkeLe z3fNfE7*UKZ#AD_H3pO?LTVhN7)LBxvs?_^*KjG8QL8!^_P%VMQy$ z&A9?EE@?X*Z+pz!f6?zmMw=ur<02=9dwj01OBQ6bo$4)fSuuUZgmmW*Grdkt3Yzq- zp{GpG&AS7Zym%WQN->={-6!d>gJY`J@276oiY1<5i`n1s+`Ys7F5toIiUrlYE0v9I z)h)HTw{mZMZi(=(jA*8Gjsxj?Jx+dD{Lm5_)6Nzw6Q;{P{>-*j`|(8==luc;mIxc| z`jV9pq;+yGe@Z&jZ3BhBi|0-_7<#Iw%)!mO_E*b+&Bi>7XV#l+>}@-c!ND_CKw(?6 zVO7+F3qF^hlsLIr%RBG*BlWh0XV(eow+%hp*rCZBlHd(m4!khZ*>#NR)FkT#XK&=y zwatCOTy*2bn(GHrgu2q~-MqIsN;55%opA9;r#Z`tO+48p-;zzHg01QS+jmI7;ay0A zwMW91%Z5FZ-oDT|v7pOm*+rp36BdqEhKiRW8-yLhJbKIQ+=OpraDesnv>g!OU<^oS zmhE@DbD-_Oi#NwV_%<$Wc;5nr)xt)%eoCy}jc{yRAxA@+?}U#TDg7XO z1;m*adv9n<^g8&Wz+t)U#JyhU+6sOY=}d6^;diX*+_auND|y{EsP={yfrfjUMp9|b z_ACjfw_f<(tDyf_Dt4dgtVt^cnWXnSJmdOP`R}1gpM+_%uGxxvj5BR2jl%4oJ$p9k zP5Fe#Coi10bx5W0EY)c#-X(O}cj1#VCx?fP`C+MB9veoz=mWV2>@l9>0tc>sZ1^d< z)0rvA`>Y?wnu(n<>wZWrWfuIWV7_QK=WGehyy|1;&nSHTsPCt%P+8(x^Xeq0cupd} z5&M(yqQCAvc1dU3S}m6*`kps&o-8Tw#gBQNALn6>1yLLVrPdmoay>RHO(}74TMWzZ zZbcji{DYKA3Kbk1yvL!(DxeN3)(4s6HvtGDvg(aaQt=R4)QwCi|--9^8==giNns!E+U^d5OEwbecEhmh1k_q-2E=2I?O8yFaK?raV*PIz@P zHjMRpdx-&`=^@tWSBFKXwH%U25nK1cWgENY8#AGe<|zi@yvljPR=;#k1iY^ac-pb+ z;^vL+v-6>aw?iODz!gr$b9Dw2HnniCns)1SwcBKdw@wXla|KG|6Qm=TPt(uLG+TT5 zQ9_BeVV=|cQpr=5)AVE~9NZ)*bN$|wiQ58ew@i}c1=UO-VnH3pggcy!r8W-d6w3df zcyacniT|-F=jwRcYTVA8u(Euok`^*Q>mU2MxCX1jlzhG8MY;@2A2Pi%2r%a9Fy&6u z-}-iWdDK!*c9#3gii6CTJdRq{s=J_IChzM6pJk6YW1ANSEPTakyLhw0;

2W!3@< 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 literal 0 HcmV?d00001