C高手帮忙!!!

来源:百度知道 编辑:UC知道 时间:2024/05/14 12:32:47
实现移动的笑脸,代码如下:
但有些不明白之处。还请指教。
#include <stdio.h>
#include <bios.h>
#include <conio.h>
#include <dos.h>
struct move_point
{
int x;int y;int xv;int yv;
};
int main()
{
struct move_point man = {0, 0, 1, 1};
clrscr();
while (bioskey(1) == 0)
{
gotoxy(man.x, man.y);
printf(" ");/*此处打印空格是什么意思?*/
man.x += man.xv;
man.y += man.yv;
if (man.x >= 80 || man.x <= 0)
{
man.xv = -man.xv;
}
if (man.y >= 25 || man.y <= 0)
{
man.yv = -man.yv;
}
gotoxy(man.x, man.y);
printf("%c\b", 2);/*用退格转义符换成其他转义符就不能正确输出,何解?*/
}
}
还有能否控制移动的速度?


printf(" ");/*此处打印空格是什么意思?*/
printf("%c\b", 2);/*用退格转义符换成其他转义符就不能正确输出,何解?*/

以上两句其实是对应的
不过的反过来看

第一次循环,printf("%c\b", 2);
先打印出笑脸,然后回到笑脸位置

第二次循环,printf(" ");清除笑脸

也就是在N次循环打印笑脸,在N+1次清除
以此做到看上去在移动

如果你要控制速度
可以这么做
while (bioskey(1) == 0)
{
for(int i=0;i<1000;i++);//加这句,1000次内都是死循环,也就是kill time,这办法比较傻,不过满实用

打印空格是将上一个笑脸清除,你可以注释这句试试,这样会留下一串笑脸.printf("%c\b", 2);这一句打印输出是一个笑脸的字符,你可以将2改了,也就反笑脸改了.如要改速度,把这两句改了.man.x += man.xv;
man.y += man.yv;

printf(" ");/*此处打印空格是什么意思?*/
printf("%c\b", 2);/*用退格转义符换成其他转义符就不能正确输出,何解?*/

以上两句其实是对应的
不过的反过来看

第一次循环,printf("%c\b", 2);
先打印出笑脸,然后回到笑脸位置

第二次循环,printf(" ");清除笑脸

也就是在N次循环打印笑脸,在N+1次清除
以此做到看上去在移动

如果你要控制速度
可以这么做
while (bioskey(1) == 0)