我在写c。我希望在运行时让一个角色在屏幕上移动。我正在考虑使用printf()
,它可以使用%s
在指定数量的空白区域后打印屏幕。
我将这个数字保存在一个变量中如何将%s
用于变量非常数值
代码是
#include <stdio.h>
#include <stdlib.h>
int main()
{
int it=0;
int tr;
printf("T \n");
srand(time(NULL));
while(it != 80 )
{
tr=rand()%3+1;
switch(tr)
{
int tmove=it;
case 1 :{
if(80-it>1)
{
tmove+=1;
it+=1;
}
else it=80;
break;}
case 2 :{
if(80-it>2)
{
tmove=+2;
it+=2;
}
else it=80;
break;}
case 3 :{
if(80-it>3)
{
tmove+=3;
it+=3;
}
else it=80;
break;}
default:break;
}
printf("%s","T");
}
}
我希望在白色数量等于移动后打印T。
答案 0 :(得分:3)
使用长度格式说明符
printf("%*s%s\n", tmove, " ", "T");
另外,请注意每个开关盒都可以这样写入
if (80 - it > tr)
{
tmove += tr;
it += tr;
}
else
it = 80;
因此,你真的不需要switch
你可以写
tr = rand() % 3 + 1;
if (80 - it > tr)
{
tmove += tr;
it += tr;
}
else if (it > 3) /* for the default case of the switch */
it = 80;
所以整个程序转换为
int main()
{
int it = 0;
int tr;
printf("T\n");
srand(time(NULL));
while (it != 80 )
{
int tmove = it;
tr = rand() % 3 + 1;
if ((80 - it) > tr)
{
tmove += tr;
it += tr;
}
else if (it > 3)
it = 80;
printf("%*s%s", tmove, " ", "T");
}
return 0;
}
判断代码中的第一个printf
以及tmove
总是在增加的事实我会说你还需要第二个printf
中的换行符,即输出看起来很有趣,它是什么?
int main()
{
int it = 0;
int tr;
printf("T\n");
srand(time(NULL));
while (it != 80 )
{
int tmove = it;
tr = rand() % 3 + 1;
if ((80 - it) > tr)
{
tmove += tr;
it += tr;
}
else if (it > 3)
it = 80;
printf("%*s%s\n", tmove, " ", "T");
}
return 0;
}
再提示一下,将3
变为一个变量,以便在需要无需更改时随意修改
int main()
{
int it = 0;
int tr;
int maximum = 3;
printf("T\n");
srand(time(NULL));
while (it != 80 )
{
int tmove = it;
tr = rand() % maximum + 1;
if ((80 - it) > tr)
{
tmove += tr;
it += tr;
}
else if (it > maximum)
it = 80;
printf("%*s%s\n", tmove, " ", "T");
}
return 0;
}
这是maximum = 3
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
答案 1 :(得分:0)
你可以通过添加clrscr()
来使用函数#include <conio.h>
并创建变量nb
以进行左移,之后你可以在变量name
中打印名称实例,
printf("%*s",nb,name);
你可以将所有这些放在一个循环中,每次都清除屏幕,增加nb
变量,最后打印name
你可以看到它移动
对于那些使用linux的人
要使用清除屏幕,您需要添加#include <stdlib.h>
并制作system("clear screen")