我正在使用C ++进行ASCII游戏。玩家四处移动避开障碍物('X')。玩家有健康并且在遇到障碍时会失去它。我将health声明为int并设置为100:
/
然后我做了一个检测碰撞的开关盒。 然后我打字:
int health = 100;
然后运行程序。我遇到了一个障碍,它降低了健康状况,但增加了一个额外的数字(例如,而不是说99,它说999)。 我试过调试但什么都没发现。我究竟做错了什么?这是完整的代码:
health--;
答案 0 :(得分:2)
我无法运行你的程序,但从我可以看到你实际上从未清除过屏幕,你只是在写旧数据,但是因为你没有写出整行,任何旧的除非你覆盖它,否则可能仍然在屏幕上的数据不会神奇地消失。
在%i之后放一些空格,我打赌你的问题就消失了。试试这个:
printf("Health: %i ", health);
你会希望在每一行都不会写出相同数量的列的情况下做这种事情。
另外,为什么不将换行符放在printf
而不是后续putchar
?
printf("Health: %i \n", health);