diff --git a/w/w.c b/w/w.c index 5ad6047..17f43f7 100644 --- a/w/w.c +++ b/w/w.c @@ -88,26 +88,7 @@ Character currentmonster; Round* firstround = NULL; Round* currentround = NULL; -//int mapsize = 15; - -/*char map[15][15] = { - "wwwwwwwwwwwwwww", - "w w", - "w wwwww wwwww w", - "w w w d w w w", - "w w w w w w w", - "w w w w w w", - "wdwwwwwdwwwdwdw", - "w w w w w w", - "w www w w w", - "ws w w w w", - "wwwwwww w w w", - "w w w w", - "w w w w", - "w w", - "wwwwwwwwwwwwwww" -};*/ - +int freedom = 2; char map[MAP_SIZE * MAP_SIZE]; Character monsters[2] = { @@ -139,6 +120,15 @@ char charatpos(int x, int y) return map[y * MAP_SIZE + x]; } +void setatpos(int x, int y, char c) +{ + if (x < 0 || y < 0 || x >= MAP_SIZE || y >= MAP_SIZE) + { + return; + } + map[y * MAP_SIZE + x] = c; +} + void drawmap() { for (int y = 0; y < MAP_SIZE; y++) { @@ -155,6 +145,7 @@ void drawmap() } printf("\n"); } + printf("freedom: %d\n", freedom); } void drawpov3d() @@ -338,6 +329,26 @@ void update3dpov() void updatepov() { + // generate map + /*setatpos(state.position.x, state.position.y, ' '); + + Position front; + memcpy(&front, &state.position, sizeof(Position)); + if (state.position.orientation + + // right + if (state.position.x + 1 == 0) + { + setatpos(state.position.x + 1, state.position.y, 'w'); + } + else if (charatpos(state.position.x + 1, state.position.y) == '?') + { + char c = dice() > 3 ? 'w' : ' '; + setatpos(state.position.x + 1, state.position.y, c); + if (c == 'w') freedom--; + }*/ + + int x = state.position.x; int y = state.position.y; char orientation = state.position.orientation; @@ -576,6 +587,37 @@ void drawrounds() } } +char gentile() +{ + int r = dice(); + if (r == 1) return 'd'; + if (r < 4) return 'w'; + return ' '; +} + +void initmap() +{ + // init map + for (int i = 0; i < 15; i++) + { + setatpos(0, i, TILE_WALL); + setatpos(14, i, TILE_WALL); + setatpos(i, 0, TILE_WALL); + setatpos(i, 14, TILE_WALL); + } + setatpos(1, 13, TILE_FREE); + + char c = gentile(); + setatpos(1, 12, c); + if (c == TILE_WALL) freedom--; + else if (c == TILE_FREE) + { + setatpos(1, 11, c); + } + + c = gentile(); +} + void update(char* command) { char c = command[0]; @@ -631,8 +673,10 @@ void update(char* command) { state.screen = SC_MAP; state.position.x = 1; - state.position.y = 9; + state.position.y = 13; state.position.orientation = NORTH; + + initmap(); updatepov(); } else if (c == CMD_GOTOMARKET)