#include "main.h"
+static void draw(void);
+static void wboxborder(WINDOW *);
+
int
main(void)
{
- int x, y;
- WINDOW *win;
+ int x, y, x2, y2;
int c;
- enum {
- W = 80,
- H = 24,
- };
char c2;
+ 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);
*/
- mvprintw(0, 20, "%d:%d", W, H);
- move(H/2, W/2);
- refresh();
+
+ fow = getblackmap();
+ showmap(fow);
+ map = readmap("map1");
+
+ 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);
- addch('.');
+ getyx(w_map, y, x);
+ x2 = x;
+ y2 = y;
switch (c) {
case KEY_LEFT:
case 'h':
- if (x > 0) {
- x--;
- }
+ x2 = x - 1;
break;
case KEY_RIGHT:
case 'l':
- if (x < W) {
- x++;
- }
+ x2 = x + 1;
break;
case KEY_UP:
case 'k':
- if (y > 1) {
- y--;
- }
+ y2 = y - 1;
break;
case KEY_DOWN:
case 'j':
- if (y < H) {
- y++;
- }
+ y2 = y + 1;
break;
}
- c2 = mvinch(y, x) & 255;
+ if (y2 < 0 || y2 > H || x2 < 0 || x2 > W) {
+ continue;
+ }
+
+ c2 = map->map[y2][x2];
switch (c2) {
+ case '$':
+ gold++;
+ map->map[y2][x2] = ' ';
+ mvwaddch(w_map, y2, x2, ' ');
+ mvwprintw(w_gold, 0, 5, "%2d", gold);
+ /* FALL */
+ case ' ':
+ mvwprintw(w_pos, 0, 0, "pos: %d,%d", x2, y2);
+ wmove(w_map, y2, x2);
+ see(map, y2, x2);
+ break;
+ case '*':
+ mvwprintw(w_map, H-5, 10, "AUSGANG gefunden!");
+ goto exit;
+ default:
+ continue;
}
- mvprintw(0, 40, "<%c>", c2);
- mvprintw(0, 0, "%d:%d", x, y);
- move(y, x);
- 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, '|', '|', '-', '-', '+', '+', '+', '+');
+}
+