gpt4 book ai didi

c - 在 C 中保持纵横比(ncurses)

转载 作者:行者123 更新时间:2023-11-30 16:31:21 24 4
gpt4 key购买 nike

我需要用 C 语言制作一个使用 ncurses 的游戏。游戏大小需要为 80(字符)x24(字符)。我需要在底部有一个状态栏(5 个字符),所以我对其进行了硬编码。

我创建这个循环是为了使事情集中,但我不知道如何在调整终端屏幕大小时保持纵横比。

有什么办法可以使用 ncurses 来做到这一点吗?

我需要屏幕始终保持至少 80x24,也许始终使用全屏模式,我真的不需要调整屏幕大小。

这是将内容保留在其位置的循环(状态栏硬编码不良,宽高比一团糟)

/* LOOP TO CENTRALIZE FOR ANY RESIZING */
while (1){
getmaxyx(stdscr, yMax, xMax);
clear();
mvprintw(yMax/24, xMax/80, "BEG");
mvprintw(yMax/2, xMax/2, "CENTER %d %d", yMax, xMax);

attron(COLOR_PAIR(1)); /* bottom status bar (5 lines) */
int i, j;
for ( j=(yMax-5) ; j <= yMax ; j++){

for ( i=0 ; i <= xMax ; i++ ){
mvprintw(j, i, " ");
}

}
attroff(COLOR_PAIR(1));
refresh();
}

最佳答案

除非你的程序读取输入,例如调用getch,ncurses将继续使用原始屏幕大小(并且看起来很困惑)。当您在 ncurses 收到 SIGWINCH 后调用 getch 时,它会返回 KEY_RESIZE,此时 ncurses 会更新其屏幕尺寸。

关于c - 在 C 中保持纵横比(ncurses),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50661248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com