利用printf()实现简单动画,触界反弹的球

利用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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值