玩家角色 (@) 的背景颜色与其他图块重叠

Posted

技术标签:

【中文标题】玩家角色 (@) 的背景颜色与其他图块重叠【英文标题】:Background colour of player character (@) overlapping other tiles 【发布时间】:2013-04-23 23:22:28 【问题描述】:

我正在使用 C++ 中的 pdcurses 制作一个类似流氓的游戏,目前一切正常。但是我现在面临一个我不知道如何解决的问题。

让我们看一下问题的截图以便更好地理解:

如您所见,如果放大上方的红色圆圈,您可以看到玩家角色如何在左侧与敌方巨魔 (t) 重叠约 2 个像素。问题是如果玩家移动到另一个位置,敌方巨魔已经失去了那 2 个像素永远,所以这不是玩家在左侧时才会发生的事情,而是永久性的.

在另一个圆圈中,玩家在走廊上从右向左移动,走廊瓷砖 (#) 也失去了左侧像素。

所以这里是我更新所有图形的地方:

dungeon_.generate();

while(state_ == State::Running)

    if(manageInput(windows_[0]) != -1)
    
        // Update here monsters behavior
    

    dungeon_.draw(windows_[0]);
    player_->draw(windows_[0]);

    refreshWindows(windows_);

这是 refreshWindows(std::vector windows) 方法:

void Game::refreshWindows(std::vector<WINDOW *> windows)

    for(auto w : windows)
    
        Curses::wbox(w, 0, 0);
        Curses::refresh(w);
    

玩家和地牢的绘制方法都可以做到这一点,但地牢在绘制地图中的每个图块时也有不同的情况:

void Player::draw(WINDOW *win)

    Curses::mvwaddch(win, location_.y, location_.x, 
        static_cast<char>(type_) | 
        COLOR_PAIR(static_cast<int>(GameObject::Color::White_Green)));

这就是 int manageInput(WINDOW *win) 的样子:

int Game::manageInput(WINDOW *win)

    int key = Curses::wgetch(win);

    if(key != -1)
    
        // Player movement
        if(key == static_cast<int>(Curses::Key::Up))
        
            player_->moveNorth(dungeon_.map());
        
        [...]
    

    return key;

如您所见,这是我在游戏循环中使用的一种非常简单的方法,所以我不知道为什么它不起作用。这些是我测试过的东西:

移除颜色支持:这是游戏正常运行的唯一方法,但我当然想使用颜色。 如果在玩家和地牢都绘制并放置 wclear(windows_[0]) 之后移动 manageInput;在 manageInput() if 内(否则它不起作用)。这种方式似乎窗口被清除,地图重新从头开始绘制。这种方式也可以,但是窗口会闪烁,这并不是很酷。

仅此而已。我不知道该怎么做才能修复它。如果您需要更多信息,可以在这里找到 git 存储库:https://github.com/SantiagoSanchez/Ruoeg

提前致谢。

【问题讨论】:

【参考方案1】:

好的,看来我找到了问题的根源。

不一定要使用 curses 库,而是 Windows 上的位图字体 控制台。

更多详情:https://***.com/a/9814766/368299

【讨论】:

以上是关于玩家角色 (@) 的背景颜色与其他图块重叠的主要内容,如果未能解决你的问题,请参考以下文章

为啥背景颜色与框阴影重叠?

UIButton 背景颜色与突出显示的文本重叠

更改 SKTileMapNode 中特定图块的颜色

UITableView 部分标题与 UITableviewCell 重叠并且没有背景颜色

颤动如何从 ListTile 更改所选图块的背景颜色

CSS背景颜色与IE中表格单元格的边框重叠