PDCurses 窗口在某些区域不打印字母

PDCurses window doesn't print letters in some areas

本文关键字:打印 区域 窗口 PDCurses      更新时间:2023-10-16

我在尝试编写roguelike时遇到了一种奇怪的行为。我用填充的矩形形状制作了一个简单的循环打印字母。使用普通(STDSCR)窗口或来自derwin()的新初始化窗口都可以正常工作。从derwin()。

我从游戏类返回窗口指针后开始出现问题。字母似乎是没有任何派的印刷的,窗户看起来像在其某些部分上覆盖。循环,返回指针时。

我尝试调试,但没有成功。光标正在移动,循环正在工作,字母打印,但有时它们陷入了星体投影水平,并且不会显示。

这是代码:game.cpp

Game::Game() : m_winMode(WinMode::GameWin) {
[...]
 initscr();
 wresize(stdscr, WIN_HGHT, WIN_WDTH);
 m_gameWin = derwin(stdscr, GAMEWIN_HGHT, GAMEWIN_WDTH, 0, 0);
[...]
}
WINDOW * Game::getWindow(Game::WinMode t_mode) const {
[...]
switch (t_mode) {
case Game::WinMode::GameWin:
    return m_gameWin;
    break;
[...]
}

pdcurses -test.cpp-这是主要文件

#include "stdafx.h"
#include "Game.h"
#include "Map.h"
int main() {
 Game game;
 game.prepareScreen();
 WINDOW * test = game.getWindow(Game::WinMode::GameWin);
 wclear(test);
 for (int i = 0; i <= 48; i++) {
    for (int y = 0; y <= 120; y++) {
        mvwaddch(test, i, y, '%');
    }
 }
 wrefresh(test);

这是完整的代码:github.com/gebirgestein/pdcurses-test/tree/test/pdcurses-test/pdcurses-test

预先感谢。

调用SupWin创建并返回一个指针,并带有给定数量的线条,Nline和列,NCOLS的新窗口。窗口位于屏幕上的位置(begin_y,begin_x)。(此位置相对于屏幕,而不是与窗口orig。)窗口是在窗口中间的中间进行的,因此对一个窗口进行的更改会影响两个窗口。子窗与窗口orig共享内存。使用此例程时,有必要在Subwindow上调用Wrefresh之前在ORIC上致电TouchWin或Touchline。

调用derwin与调用Subwin相同,除了begin_y和begin_x相对于窗口orig而不是屏幕的来源。subwindows和派生的窗口之间没有区别。

从这里。在调用Wrefresh(test)。