重新绘制屏幕并擦除已存在的内容

时间:2011-08-25 06:30:03

标签: c++ roguelike

我需要一些帮助 - 我正在尝试使用C ++创建一个roguelike,目前,我有一个非常简单的小屏幕,带有一个void()生成一个地图,使用“#”作为墙和“”用于地板。它可以通过比较一些映射玩家X和Y值的整数来绘制玩家。 我甚至有一个HUD会显示玩家的统计数据。

但是,问题是,这都是使用典型的命令控制台窗口设计的,我开始认为我做错了。

我希望玩家通过使用小键盘来移动这个空旷的大房间 - 这很有效。通过使用Switch,我调整X和Y播放器值,然后重新绘制屏幕。

这是问题所在。这个实际重新重新绘制屏幕:它每次移动时都会再次添加20多行。经过几次移动后,我有一个命令控制台窗口,文本可以显示数百行。

那么我做错了什么?是否有关于清除屏幕的命令我不知道? 或者我从一开始就做错了 - 例如,你必须按'输入'输入你的命令,这是任何其他roguelike都没有的。我是一名新手程序员,所以非常感谢所有人的帮助!

三江源!

编辑:好的,谢谢你们,我现在正在使用PDCurses并拖网文件来研究如何使用这个东西!再次感谢!有人请给那个建议大嘀嗒的家伙! :d

3 个答案:

答案 0 :(得分:4)

您使用什么方法绘制屏幕,​​只是普通的iostream?对于这种工作,通常建议使用名为curses的库。它可以让您在屏幕上的任何位置绘制文本,而无需滚动或重绘整个屏幕。

答案 1 :(得分:0)

我不知道有任何可靠的方法来实现可移植性,也许尝试寻找一些面向控制台的lib ...无论如何在Windows下你仍然可以使用系统(“cls”);

答案 2 :(得分:0)

您可以使用ansi转义序列:printf(“\ _33 [2]”)。