利用printf()实现简单动画。
本程序实现的是一个运动过程中触界反弹的球,在程序演示的过程中,ESC键可以随时终止程序. 当然你可以利用system("cls");实现动画效果,这里采用GotoXy()函数,然后利用背景色的空格擦掉痕迹作图,来实现动画效果
代码:
///
//程序名称:printf()动画运动的球
//完成时间:2005-05-04
/
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
//定义延时时间,运动区的宽度和高度
#define DELAY 100
#define WIDTH 80
#define HEIGHT 24
//定义全局变量,位置和速度
int X = 0, Y =0;
int Vx = 1, Vy = 1;
//函数声明
void Ball();
void HideCursor();
void GotoXy(int x, int y);
//主函数
int main(void){
//接收键盘数据的变量
char ch = '\0';
system("title printf()动画运动的球"); //修改窗口名称
HideCursor(); //隐藏光标
while(ch != 27){ //作图,ESC退出
Ball();
if(kbhit())
ch = getch();
}
system("cls");
printf("更多程序下载\n");
Sleep(1000);
return 0;
}
//计算球的轨迹
void Ball() {
GotoXy(X, Y);//画球
printf("■");
Sleep(DELAY);
GotoXy(X, Y); //擦球
printf(" ");
if((WIDTH - 2) == X && Vx > 0 || 0 == X && Vx < 0) Vx *= -1;
if((HEIGHT - 1) == Y && Vy > 0 || 0 == Y && Vy < 0) Vy *= -1;
X += 2 * Vx; //计算下一个周期的位置
Y += Vy;
}
//隐藏光标
void HideCursor(){
CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //后边的0代表光标不可见
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
//光标移动
void GotoXy(int x, int y){
HANDLE hout; //定义句柄变量hout
COORD coord; //定义结构体coord
coord.X = x;
coord.Y = y;
hout = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出(屏幕)句柄
SetConsoleCursorPosition(hout, coord); //移动光标
}
输出结果:
转载请注明出处:http://blog.csdn.net/utimes/article/details/8456343