X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=main.c;h=76b19d6af5c51d82d83fdc6237287e4cf8e6f3d7;hb=HEAD;hp=af246773d3f44a7a6b0deda0567099d64533d437;hpb=36829587f6a6c375aa2912d955f84871a098c254;p=dungeon1 diff --git a/main.c b/main.c index af24677..76b19d6 100644 --- a/main.c +++ b/main.c @@ -6,37 +6,53 @@ #include "main.h" +static void draw(void); +static void wboxborder(WINDOW *); + int main(void) { int x, y, x2, y2; - WINDOW *win; int c; char c2; - struct map *map; + struct map *map, *fow; int gold=0; + char *title = "**** DUNGEON1 ****"; - win = initscr(); + initscr(); noecho(); cbreak(); keypad(stdscr, TRUE); + + w_title = newwin(1, COLS-1, 0, 0); + mvwprintw(w_title, 0, MAPW/2 - strlen(title)/2, "%s", title); + + w_mapborder = newwin(MAPH+2*BORDER, MAPW+2*BORDER, 1, 0); + wboxborder(w_mapborder); + w_map = subwin(w_mapborder, MAPH, MAPW, 2, 1); + + w_info = newwin(4, MAPW+2*BORDER, MAPH+2*BORDER, 0); + w_gold = subwin(w_info, 1, 10, MAPH+2*BORDER+2, 50); + mvwprintw(w_gold, 0, 0, "gold:%2d", 0); + w_pos = subwin(w_info, 1, 20, MAPH+2*BORDER+2, 10); /* - nonl(); - intrflush(stdscr, FALSE); */ + + fow = getblackmap(); + showmap(fow); map = readmap("map1"); - showmap(map); - mvprintw(0, 20, "%d:%d", W, H); - move(H/2, W/2); - refresh(); + findchar(map, '>', &y, &x); + wmove(w_map, y, x); + see(map, y, x); + draw(); while ((c = getch()) != ERR) { if (c == 'q') { break; } - getyx(win, y, x); + getyx(w_map, y, x); x2 = x; y2 = y; switch (c) { @@ -60,31 +76,58 @@ main(void) if (y2 < 0 || y2 > H || x2 < 0 || x2 > W) { continue; } - c2 = mvinch(y2, x2) & 255; - mvprintw(0, 40, "<%c> gold:%d", c2, gold); - move(y, x); + c2 = map->map[y2][x2]; switch (c2) { case '$': gold++; - mvaddch(y2, x2, ' '); + map->map[y2][x2] = ' '; + mvwaddch(w_map, y2, x2, ' '); + mvwprintw(w_gold, 0, 5, "%2d", gold); /* FALL */ case ' ': - mvprintw(0, 0, "%d:%d", x2, y2); - move(y2, x2); + mvwprintw(w_pos, 0, 0, "pos: %d,%d", x2, y2); + wmove(w_map, y2, x2); + see(map, y2, x2); break; - case '>': - mvprintw(H/2, 10, "AUSGANG gefunden!"); + case '*': + mvwprintw(w_map, H-5, 10, "AUSGANG gefunden!"); goto exit; + default: + continue; } - refresh(); - napms(10); + mvwprintw(w_pos, 0, 10, "<%c>", c2); + wmove(w_map, y2, x2); + + draw(); } exit: +/* + mvprintw(H, 0, "press key to exit..."); getch(); +*/ endwin(); return 0; } +static void +draw(void) +{ + refresh(); + wrefresh(w_title); + wrefresh(w_info); + wrefresh(w_gold); + wrefresh(w_pos); + wrefresh(w_mapborder); + overlay(w_map, w_mapborder); + wrefresh(w_map); +} + +static void +wboxborder(WINDOW *win) +{ + wborder(win, '|', '|', '-', '-', '+', '+', '+', '+'); +} +