Initial commit

This commit is contained in:
Marcus Penate 2021-10-17 17:59:21 -04:00
commit 0ebd216c99
4 changed files with 92 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.vscode/*
slime_mold
build/*

25
Makefile Normal file
View File

@ -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)

17
README.md Normal file
View File

@ -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.

47
src/main.cpp Normal file
View File

@ -0,0 +1,47 @@
#include <SDL2/SDL.h>
#include <iostream>
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;
}