From efeccfef613729cb2c47c991825b1b5f4ea3d7af Mon Sep 17 00:00:00 2001 From: JordSant <77529699+JordSant@users.noreply.github.com> Date: Tue, 9 Dec 2025 19:14:16 +0100 Subject: [PATCH] [examples] Add `textures_cellular_automata` (#5395) * [examples] Add `textures_cellular_automata` * Comparison always true. Fixed * Tabs to spaces --- .../textures/textures_cellular_automata.c | 212 +++++++ .../textures/textures_cellular_automata.png | Bin 0 -> 14803 bytes .../textures_cellular_automata.vcxproj | 569 ++++++++++++++++++ 3 files changed, 781 insertions(+) create mode 100644 examples/textures/textures_cellular_automata.c create mode 100644 examples/textures/textures_cellular_automata.png create mode 100644 projects/VS2022/examples/textures_cellular_automata.vcxproj diff --git a/examples/textures/textures_cellular_automata.c b/examples/textures/textures_cellular_automata.c new file mode 100644 index 000000000..d24104200 --- /dev/null +++ b/examples/textures/textures_cellular_automata.c @@ -0,0 +1,212 @@ +/******************************************************************************************* +* +* raylib [textures] example - one-dimensional elementary cellular automata +* +* Example complexity rating: [★★☆☆] 2/4 +* +* Example originally created with raylib 5.6, last time updated with raylib 5.6 +* +* Example contributed by Jordi Santonja (@JordSant) 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 Jordi Santonja (@JordSant) +* +********************************************************************************************/ + +#include "raylib.h" + +// Initialization constants +//-------------------------------------------------------------------------------------- +const int screenWidth = 800; +const int screenHeight = 450; +const int imageWidth = 800; +const int imageHeight = 800/2; + +// Rule button sizes and positions +const int drawRuleStartX = 585; +const int drawRuleStartY = 10; +const int drawRuleSpacing = 15; +const int drawRuleGroupSpacing = 50; +const int drawRuleSize = 14; +const int drawRuleInnerSize = 10; + +// Preset button sizes +const int presetsSizeX = 42; +const int presetsSizeY = 22; + +const int linesUpdatedPerFrame = 4; + +//---------------------------------------------------------------------------------- +// Functions +//---------------------------------------------------------------------------------- +void ComputeLine(Image *image, int line, int rule) +{ + // Compute next line pixels. Boundaries are not computed, always 0 + for (int i = 1; i < imageWidth - 1; i++) + { + // Get, from the previous line, the 3 pixels states as a binary value + const int prevValue = ((GetImageColor(*image, i - 1, line - 1).r < 5)? 4 : 0) + // Left pixel + ((GetImageColor(*image, i, line - 1).r < 5)? 2 : 0) + // Center pixel + ((GetImageColor(*image, i + 1, line - 1).r < 5)? 1 : 0); // Right pixel + // Get next value from rule bitmask + const bool currValue = (rule & (1 << prevValue)); + // Update pixel color + ImageDrawPixel(image, i, line, (currValue)? BLACK : RAYWHITE); + } +} + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + InitWindow(screenWidth, screenHeight, "raylib [textures] example - elementary cellular automata"); + + // Image that contains the cellular automaton + Image image = GenImageColor(imageWidth, imageHeight, RAYWHITE); + // The top central pixel set as black + ImageDrawPixel(&image, imageWidth/2, 0, BLACK); + + Texture2D texture = LoadTextureFromImage(image); + + // Some interesting rules + const int presetValues[] = { 18, 30, 60, 86, 102, 124, 126, 150, 182, 225 }; + const int presetsCount = sizeof(presetValues)/sizeof(presetValues[0]); + + // Variables + int rule = 30; // Starting rule + int line = 1; // Line to compute, starting from line 1. One point in line 0 is already set + + SetTargetFPS(60); + //--------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + // Handle mouse + const Vector2 mouse = GetMousePosition(); + int mouseInCell = -1; // -1: outside any button; 0-7: rule cells; 8+: preset cells + + // Check mouse on rule cells + for (int i = 0; i < 8; i++) + { + const int cellX = drawRuleStartX - drawRuleGroupSpacing*i + drawRuleSpacing; + const int cellY = drawRuleStartY + drawRuleSpacing; + if ((mouse.x >= cellX) && (mouse.x <= cellX + drawRuleSize) && + (mouse.y >= cellY) && (mouse.y <= cellY + drawRuleSize)) + { + mouseInCell = i; // 0-7: rule cells + break; + } + } + + // Check mouse on preset cells + if (mouseInCell < 0) + { + for (int i = 0; i < presetsCount; i++) + { + const int cellX = 4 + (presetsSizeX + 2)*(i/2); + const int cellY = 2 + (presetsSizeY + 2)*(i%2); + if ((mouse.x >= cellX) && (mouse.x <= cellX + presetsSizeX) && + (mouse.y >= cellY) && (mouse.y <= cellY + presetsSizeY)) + { + mouseInCell = i + 8; // 8+: preset cells + break; + } + } + } + + if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && (mouseInCell >= 0)) + { + // Rule changed both by selecting a preset or toggling a bit + if (mouseInCell < 8) + rule ^= (1 << mouseInCell); + else + rule = presetValues[mouseInCell - 8]; + + // Reset image + ImageClearBackground(&image, RAYWHITE); + ImageDrawPixel(&image, imageWidth/2, 0, BLACK); + line = 1; + } + + // Compute next lines + //---------------------------------------------------------------------------------- + if (line < imageHeight) + { + for (int i = 0; (i < linesUpdatedPerFrame) && (line + i < imageHeight); i++) + ComputeLine(&image, line + i, rule); + line += linesUpdatedPerFrame; + + UpdateTexture(texture, image.data); + } + + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + ClearBackground(RAYWHITE); + + // Draw cellular automaton texture + DrawTexture(texture, 0, screenHeight - imageHeight, WHITE); + + // Draw preset values + for (int i = 0; i < presetsCount; i++) + { + DrawText(TextFormat("%i", presetValues[i]), 8 + (presetsSizeX + 2)*(i/2), 4 + (presetsSizeY + 2)*(i%2), 20, GRAY); + DrawRectangleLines(4 + (presetsSizeX + 2)*(i/2), 2 + (presetsSizeY + 2)*(i%2), presetsSizeX, presetsSizeY, BLUE); + + // If the mouse is on this preset, highlight it + if (mouseInCell == i + 8) + DrawRectangleLinesEx((Rectangle) { 2 + (presetsSizeX + 2.0f)*(i/2), + (presetsSizeY + 2.0f)*(i%2), + presetsSizeX + 4.0f, presetsSizeY + 4.0f }, 3, RED); + } + + // Draw rule bits + for (int i = 0; i < 8; i++) + { + // The three input bits + for (int j = 0; j < 3; j++) + { + DrawRectangleLines(drawRuleStartX - drawRuleGroupSpacing*i + drawRuleSpacing*j, drawRuleStartY, drawRuleSize, drawRuleSize, GRAY); + if (i & (4 >> j)) + DrawRectangle(drawRuleStartX + 2 - drawRuleGroupSpacing*i + drawRuleSpacing*j, drawRuleStartY + 2, drawRuleInnerSize, drawRuleInnerSize, BLACK); + } + + // The output bit + DrawRectangleLines(drawRuleStartX - drawRuleGroupSpacing*i + drawRuleSpacing, drawRuleStartY + drawRuleSpacing, drawRuleSize, drawRuleSize, BLUE); + if (rule & (1 << i)) + DrawRectangle(drawRuleStartX + 2 - drawRuleGroupSpacing*i + drawRuleSpacing, drawRuleStartY + 2 + drawRuleSpacing, drawRuleInnerSize, drawRuleInnerSize, BLACK); + + // If the mouse is on this rule bit, highlight it + if (mouseInCell == i) + DrawRectangleLinesEx((Rectangle){ drawRuleStartX - drawRuleGroupSpacing*i + drawRuleSpacing - 2.0f, + drawRuleStartY + drawRuleSpacing - 2.0f, + drawRuleSize + 4.0f, drawRuleSize + 4.0f }, 3, RED); + } + + DrawText(TextFormat("RULE: %i", rule), drawRuleStartX + drawRuleSpacing*4, drawRuleStartY + 1, 30, GRAY); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadImage(image); + UnloadTexture(texture); + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} + diff --git a/examples/textures/textures_cellular_automata.png b/examples/textures/textures_cellular_automata.png new file mode 100644 index 0000000000000000000000000000000000000000..2d88041d2c3641805cb5af8d4b52e059a6947ec4 GIT binary patch literal 14803 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 literal 0 HcmV?d00001 diff --git a/projects/VS2022/examples/textures_cellular_automata.vcxproj b/projects/VS2022/examples/textures_cellular_automata.vcxproj new file mode 100644 index 000000000..f8b434a6d --- /dev/null +++ b/projects/VS2022/examples/textures_cellular_automata.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68} + Win32Proj + textures_cellular_automata + 10.0 + textures_cellular_automata + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file