From 0ebd216c99a88541198b6fe6401c0a51f5e9259a Mon Sep 17 00:00:00 2001 From: Marcus Penate Date: Sun, 17 Oct 2021 17:59:21 -0400 Subject: [PATCH] Initial commit --- .gitignore | 3 +++ Makefile | 25 +++++++++++++++++++++++++ README.md | 17 +++++++++++++++++ src/main.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 src/main.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3797a83 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.vscode/* +slime_mold +build/* diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..42560db --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +CXX=g++ +HEADERDIR=./header +INCLUDE := $(shell find $(HEADERDIR) -type d | sed -e 's/^/-I/' | tr '\n' ' ' | sed 's/.$$//') +CXXFLAGS=-g $(INCLUDE) +SRCDIR=./src +SRC := $(shell find $(SRCDIR) -name '*.cpp' | tr '\n' ' ' | sed 's/.$$//') +OBJDIR=./build/debug/obj +OBJ := $(SRC:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o) +LIBS=-lSDL2 +EXECUTABLE=slime_mold + +all: debug + +$(OBJ): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp + @echo "Compiling source $< into object $@" + @mkdir -p '$(@D)' + @$(CXX) -c $(CXXFLAGS) $< -o $@ + +debug: $(OBJ) + @echo "Compiling executable" + @$(CXX) $(CXXFLAGS) -o $(EXECUTABLE) $^ $(LIBS) + +clean: + rm -rf $(OBJDIR)/* + rm $(EXECUTABLE) diff --git a/README.md b/README.md new file mode 100644 index 0000000..5f77154 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# Slime Mold Simulation + +A visually interesting slime mold simulation using SDL2 and C++. + +## Requirements + +* `g++` +* `make` +* `libsdl2-dev` + +## Compilation and Running + +Use `make` to compile. An executable called slime_mold will be generated. + +```./slime_mold [width height]``` + +If a width and height is not provided a 300x300 pixel simulation will be ran. diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..8130be6 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,47 @@ +#include + +#include + +int main(int argc, char* argv[]) +{ + int width, height; + + if (argc == 1) + { + width = height = 300; + } + else + { + width = atoi(argv[1]); + height = atoi(argv[2]); + } + + if (SDL_Init(SDL_INIT_VIDEO) < 0) + { + std::cout << "Video Init Error." << std::endl; + } + + SDL_Window* window = SDL_CreateWindow("Slime Mold Simulator", SDL_WINDOWPOS_CENTERED-width/2, SDL_WINDOWPOS_CENTERED-height/2, width, height, SDL_WINDOW_SHOWN); + + SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + + SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00); + + SDL_RenderClear(renderer); + + SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF); + + SDL_Rect half_screen = (SDL_Rect){width/4, height/4, width/2, height/2}; + + SDL_RenderFillRect(renderer, &half_screen); + + SDL_RenderPresent(renderer); + + SDL_Delay(2000); + + SDL_DestroyWindow(window); + + SDL_Quit(); + + return 0; +} \ No newline at end of file