From 9acfce6b5fde36e2e0da9ac16f8ba73fa27372d0 Mon Sep 17 00:00:00 2001 From: JackCarterSmith Date: Thu, 21 Jun 2018 23:27:36 +0200 Subject: [PATCH] Random generator v2 --- arenaEngine.c | 74 +++++++++++++++++++++++++++++++++++++++++--- arenaEngine.h | 1 + data/tile_grass.png | Bin 3088 -> 2672 bytes main.c | 2 +- main.h | 9 ++++++ 5 files changed, 80 insertions(+), 6 deletions(-) diff --git a/arenaEngine.c b/arenaEngine.c index c8f14f3..b0e0546 100644 --- a/arenaEngine.c +++ b/arenaEngine.c @@ -106,14 +106,14 @@ ARENA_H_TILE* createHTile(ARENA_H_TILE* prevHTile) { if (prevHTile == NULL) { tile_h = calloc(1,sizeof(ARENA_H_TILE)); //Using calloc because of resetting all memory allocated to 0 - tile_h->type_id = random_lim(5); + tile_h->type_id = 0; //tile_h->playerOnTile = NULL; tile_h->nextRow = NULL; tile_h->nextColumn = NULL; } else if (prevHTile != NULL) { tile_h = calloc(1,sizeof(ARENA_H_TILE)); prevHTile->nextRow = tile_h; - tile_h->type_id = random_lim(5); + tile_h->type_id = 0; //tile_h->playerOnTile = NULL; tile_h->nextRow = NULL; tile_h->nextColumn = NULL; @@ -128,7 +128,7 @@ ARENA_W_TILE* createWTile(ARENA_H_TILE* prevHTile, ARENA_W_TILE* prevWTile) { if (prevHTile != NULL && prevWTile == NULL) { tile_w = calloc(1,sizeof(ARENA_W_TILE)); prevHTile->nextColumn = tile_w; - tile_w->type_id = random_lim(5); + tile_w->type_id = 0; //tile_w->playerOnTile = NULL; tile_w->nextColumn = NULL; @@ -136,7 +136,7 @@ ARENA_W_TILE* createWTile(ARENA_H_TILE* prevHTile, ARENA_W_TILE* prevWTile) { } else if (prevHTile == NULL && prevWTile != NULL) { tile_w = calloc(1,sizeof(ARENA_W_TILE)); prevWTile->nextColumn = tile_w; - tile_w->type_id = random_lim(5); + tile_w->type_id = 0; //tile_w->playerOnTile = NULL; tile_w->nextColumn = NULL; } @@ -144,12 +144,58 @@ ARENA_W_TILE* createWTile(ARENA_H_TILE* prevHTile, ARENA_W_TILE* prevWTile) { return NULL; } +int setTileTypeID(ARENA_H_TILE* arena, int coord_x, int coord_y, int new_id) { + int i; + + if (coord_x > A_WIDTH || coord_y > A_HEIGHT) return -1; + + if (coord_y == 0) { + ARENA_H_TILE* tile_h = NULL; + + tile_h = arena; + if (coord_x != 0) { + for (i=0;inextRow; + } + } + + tile_h->type_id = new_id; + + if (tile_h->type_id == new_id) return 0; + } else { + ARENA_W_TILE* tile_w = NULL; + ARENA_H_TILE* tile_h = NULL; + + tile_h = arena; + if (coord_x != 0) { + for (i=0;inextRow; + } + } + + tile_w = tile_h->nextColumn; + if (coord_y != 0) { + for (i=0;inextColumn; + } + } + + tile_w->type_id = new_id; + if (tile_w->type_id == new_id) return 0; + } + + return -1; +} + ARENA_H_TILE* genNewArena(int size_h, int size_w) { ARENA_H_TILE* arenaOrigin = NULL; ARENA_H_TILE* TmpCursor_h = NULL; ARENA_W_TILE* TmpCursor_w = NULL; - int i,j; + int z,i,j,rand_x,rand_y; + /* + * Generate flatgrass arena + */ for(i=0;i=3;i++) { + for (j=-3;j>=3;j++) { + if (random_lim(101) < 50) { + if ((rand_x + i >= 0 && rand_x + i <= A_WIDTH) || (rand_y + i <= 0 && rand_y + i <= A_HEIGHT)) { + if(setTileTypeID(arenaOrigin, rand_x+i, rand_y+j, ROCK)!=0) addLogCritical("Rock failed to add on arena."); + } + } + } + } + } + return arenaOrigin; } diff --git a/arenaEngine.h b/arenaEngine.h index a58e5c7..666f523 100644 --- a/arenaEngine.h +++ b/arenaEngine.h @@ -65,6 +65,7 @@ typedef struct arena_w_tile{ //Columns chained list TILE* createTileList(void); PLAYER *createPlayerList(void); void clearRessourcesCache(TILE *t, PLAYER *p); +int setTileTypeID(ARENA_H_TILE* arena, int x, int y, int new_id); ARENA_H_TILE* genNewArena(int size_h, int size_w); void deleteArena(ARENA_H_TILE* arena); diff --git a/data/tile_grass.png b/data/tile_grass.png index ef937fbf75bf7c87d8534afc77194de27268b4a0..d1c70f89d3ec1abd7f56115c3f767b0e3821558d 100644 GIT binary patch literal 2672 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 #include -#include +//#include //#include //#include #include "arenaEngine.h" diff --git a/main.h b/main.h index 56ef662..f03d230 100644 --- a/main.h +++ b/main.h @@ -8,7 +8,16 @@ #define WINDOWS_WIDTH TILE_SIZE * A_WIDTH #define WINDOWS_HEIGHT TILE_SIZE * A_HEIGHT +/* + * Generator tiles spawn rate (in percent) + */ +#define ROCK_GEN_RATE 25 +#define TREE_GEN_RATE 35 +#define WATER_GEN_RATE 20 +#define GOLD_GEN_RATE 10 + enum {DOWN, UP, LEFT, RIGHT}; +enum {GRASS, ROCK, TREE, WATER, GOLD}; int random_lim(int max);