我在尝试写入roguelike时遇到了奇怪的行为。我做了一个简单的循环打印填充矩形形状的字母。使用正常(stdscr)窗口或从derwin()新近初始化的窗口都可以正常工作。 Loop within stdscr/newly initialised window from derwin().PDCurses窗口不会在某些区域打印字母
但是,从Game类返回窗口指针后,问题开始出现。信件似乎没有任何图案印刷,并且窗口看起来像是它的某些部分被覆盖。 Loop, when the pointer is returned.
我试过调试,但没有成功。光标正在移动,循环正在工作,字母被打印,但有时它们卡在星体投影级别中,并且它们不显示。
下面是代码: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
在此先感谢。
感谢您的回答,我一定忽略了文档中的touchwin()。无论如何,我发现我可以使用newwin()函数。 –