我制作了一款利用graphics.h的游戏。我使用while循环来创建屏幕输出,因此下面示例中的x1值始终减少5。这意味着我一直在创建游戏的所有屏幕,除非while循环继续,玩家只会显示他所在屏幕的一部分。这显然是非常低效的,所以我想知道是否有人提示以更有效的方式这样做。我还有一个更具体的问题... outtextxy不允许负x值,意思是
outtextxy(-10,400,"text that is long enough that should be shown on screen even though it starts before screen beginning");
没有出现在屏幕上,所以我的代码是:
outtextxy(x1+301,400,"Use 'd' to duck");
在游戏中的屏幕通过之前,x值变为负值,而不是结束字母的x值传递时,它会停止打印到屏幕,就像我想要的那样。
答案 0 :(得分:1)
您需要clip输出。像这样换行outtextxy
(您可能需要调整参数并返回值以匹配outtextxy
)。我假设您使用的是固定宽度的字体。
剪切x坐标中的文本与此类似:
int clippedouttext(int x, int y, char *text) {
const int CHAR_WIDTH = 8; /* Replace 8 by actual character width */
if (text == NULL || *text = '\0') { return 0; } /* No text was submitted */
while (x < 0) {
x += CHAR_WIDTH;
++text;
if (*text == `\0`) { return 0; } /* The text is outside the viewport. */
}
return outtextxy(x, y, text);
}