我在尝试编写 roguelike 时遇到了一个奇怪的行为。我做了一个简单的循环打印填充矩形形状的字母。使用普通(stdscr)窗口或从 derwin() 新初始化的窗口都可以正常工作。 在 derwin() 的 stdscr/新初始化窗口内循环。
但是在我从 Game 类返回窗口指针后,问题开始出现。字母似乎没有任何图案地打印出来,并且窗口看起来像是覆盖在它的某些部分上。 循环,当指针返回时。
我试过调试,但没有成功。光标在移动,循环在工作,字母被打印出来,但有时它们会卡在星体投影层中,并且不会显示出来。
这是代码: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
提前致谢。