【问题标题】:Ncurses window zoomNcurses 窗口缩放
【发布时间】:2017-12-16 17:47:13
【问题描述】:

我使用 ncurses 在 c 上创建游戏,但我基于游戏设置(LINES 和 COLS)创建的窗口太小,很难看到游戏中发生了什么。 有什么方法可以增加窗口的大小(不改变 LINES 和 COLS)以使窗口更加可见并让用户看到游戏中发生了什么?

代码:

void drawGame(RESPONSE resp) {
int i, j;
WINDOW *game_win;
init_pair(2, COLOR_WHITE, COLOR_GREEN);
game_win = newwin(resp.width, resp.height, 1, 1);
wbkgd(game_win, COLOR_PAIR(2));
keypad(game_win, TRUE);
noecho();
curs_set(FALSE);

for (int i = 0; i < resp.width; ++i) {
    for (int j = 0; j < resp.height; ++j) {
        if (resp.maze[i][j].type == indestrutiveBlock)
            mvwaddch(game_win, i, j, '#');
        if (resp.maze[i][j].type == destrutiveBlock)
            mvwaddch(game_win, i, j, '*');
        if (resp.maze[i][j].type == object)
            mvwaddch(game_win, i, j, '@');
        if (resp.maze[i][j].type == enemy)
            mvwaddch(game_win, i, j, 'e');
        if (resp.maze[i][j].type == emptyBlock)
            mvwaddch(game_win, i, j, '.');
    }
}

wrefresh(game_win);
}

【问题讨论】:

  • 在大多数操作系统中,用户可以根据自己的喜好设置控制台字体大小。这超出了 ncurses 的目的。
  • 您可能想要处理SIGWINCH。阅读signal(7) & signal-safety(7)
  • 顺便说一句,对于游戏,我会考虑使用一些 GUI,例如libsdl, GTK

标签: c linux ncurses


【解决方案1】:

对于使用这些调用绘制的文本,您可以使用粗体或反转(甚至其他颜色)等视频高亮显示:

            mvwaddch(game_win, i, j, '.');

最后一个参数不仅仅是一个字符,它还可以有标志组合,例如,

            mvwaddch(game_win, i, j, '.' | A_REVERSE | A_BOLD);

【讨论】:

  • 亮点有点帮助,但我的意思是如果没有办法像放大窗口一样放大。对不起我的英语不好:D
  • 不 - 没有办法做到这一点。这就是我们有视频集锦的原因:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多