diff --git a/various-tests/raygol/.gitignore b/various-tests/raygol/.gitignore new file mode 100644 index 0000000..22248d7 --- /dev/null +++ b/various-tests/raygol/.gitignore @@ -0,0 +1,2 @@ +golsky +*.o diff --git a/various-tests/raygol/Makefile b/various-tests/raygol/Makefile new file mode 100644 index 0000000..dd4341b --- /dev/null +++ b/various-tests/raygol/Makefile @@ -0,0 +1,33 @@ +CFLAGS = -Wall -Wextra -Werror -O2 -g +LDFLAGS= -L/usr/local/lib -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -g +CC = clang +OBJS = main.o game.o grid.o +DST = golsky +PREFIX = /usr/local +UID = root +GID = 0 +MAN = udpxd.1 + +.PHONY: all +all: $(DST) + +$(DST): $(OBJS) + $(CC) $(OBJS) $(LDFLAGS) -o $(DST) + +%.o: %.c + $(CC) -c $(CFLAGS) $*.c -o $*.o + +.PHONY: clean +clean: + rm -f *.o $(DST) + +.PHONY: install +install: $(DST) + install -d -o $(UID) -g $(GID) $(PREFIX)/sbin + install -d -o $(UID) -g $(GID) $(PREFIX)/man/man1 + install -o $(UID) -g $(GID) -m 555 $(DST) $(PREFIX)/sbin/ + install -o $(UID) -g $(GID) -m 444 $(MAN) $(PREFIX)/man/man1/ + +.PHONY: run +run: + LD_LIBRARY_PATH=/usr/local/lib ./golsky diff --git a/various-tests/raygol/game.c b/various-tests/raygol/game.c new file mode 100644 index 0000000..db697e4 --- /dev/null +++ b/various-tests/raygol/game.c @@ -0,0 +1,48 @@ +#include "game.h" +#include + +Game *Init(int width, int height, int gridwidth, int gridheight, int density) { + struct Game *game = malloc(sizeof(struct Game)); + + game->ScreenWidth = width; + game->ScreenHeight = height; + game->Cellsize = width / gridwidth; + game->Width = gridwidth; + game->Height = gridheight; + + InitWindow(width, height, "golsky"); + SetTargetFPS(60); + + game->Grid = NewGrid(gridwidth, gridheight, density); + + return game; +} + +void Update(Game *game) { + if (IsKeyDown(KEY_Q)) { + game->Done = true; + exit(0); + } +} + +void Draw(Game *game) { + BeginDrawing(); + + ClearBackground(RAYWHITE); + + for (int y = 0; y < game->Width; y++) { + for (int x = 0; x < game->Height; x++) { + if (game->Grid->Data[y][x] == 1) { + DrawRectangle(x * game->Cellsize, y * game->Cellsize, game->Cellsize, + game->Cellsize, GREEN); + } else { + DrawRectangle(x * game->Cellsize, y * game->Cellsize, game->Cellsize, + game->Cellsize, RAYWHITE); + } + } + } + + DrawText("TEST", game->ScreenWidth / 2, 10, 20, RED); + + EndDrawing(); +} diff --git a/various-tests/raygol/game.h b/various-tests/raygol/game.h new file mode 100644 index 0000000..3f2b21e --- /dev/null +++ b/various-tests/raygol/game.h @@ -0,0 +1,25 @@ +#ifndef _HAVE_GAME_H +#define _HAVE_GAME_H + +#include "grid.h" +#include "raylib.h" +#include + +typedef struct Game { + // Camera2D Camera; + int ScreenWidth; + int ScreenHeight; + int Cellsize; + + // Grid dimensions + int Width; + int Height; + bool Done; + Grid *Grid; +} Game; + +Game *Init(int width, int height, int gridwidth, int gridheight, int density); +void Update(Game *game); +void Draw(Game *game); + +#endif diff --git a/various-tests/raygol/grid.c b/various-tests/raygol/grid.c new file mode 100644 index 0000000..d3e5321 --- /dev/null +++ b/various-tests/raygol/grid.c @@ -0,0 +1,28 @@ +#include "grid.h" + +Grid *NewGrid(int width, int height, int density) { + Grid *grid = malloc(sizeof(struct Grid)); + grid->Width = width; + grid->Height = height; + grid->Density = density; + + grid->Data = malloc(height * sizeof(int *)); + for (int y = 0; y < grid->Height; y++) { + grid->Data[y] = malloc(width * sizeof(int *)); + } + + FillRandom(grid); + + return grid; +} + +void FillRandom(Grid *grid) { + int r; + for (int y = 0; y < grid->Width; y++) { + for (int x = 0; x < grid->Height; x++) { + r = GetRandomValue(0, grid->Density); + if (r == 1) + grid->Data[y][x] = r; + } + } +} diff --git a/various-tests/raygol/grid.h b/various-tests/raygol/grid.h new file mode 100644 index 0000000..d42d504 --- /dev/null +++ b/various-tests/raygol/grid.h @@ -0,0 +1,18 @@ +#ifndef _HAVE_GRID_H +#define _HAVE_GRID_H + +#include "raylib.h" +#include +#include + +typedef struct Grid { + int Width; + int Height; + int Density; + int **Data; +} Grid; + +Grid *NewGrid(int width, int height, int density); +void FillRandom(Grid *grid); + +#endif diff --git a/various-tests/raygol/main.c b/various-tests/raygol/main.c new file mode 100644 index 0000000..48b3619 --- /dev/null +++ b/various-tests/raygol/main.c @@ -0,0 +1,15 @@ +#include "game.h" +#include "raylib.h" + +int main(void) { + Game *game = Init(800, 800, 10, 10, 8); + + while (!WindowShouldClose()) { + Update(game); + Draw(game); + } + + CloseWindow(); + free(game); + return 0; +}