【C语言】以深厚地基筑伟岸高楼-基础篇(十四)

弹跳的小球

通过printf函数实现一个在屏幕上跳动的小球
这个任务我们将分几步进行

显示静止的小球

实现思路:
利用printf函数在屏幕坐标(x,y)处显示一个静止的小球(小球可以以多种形式展现出来,可以是数字0,也可以是字母o),注意屏幕坐标系的原点在终端显示框的左上角哦
代码如下:

#include <stdio.h>
int main()
{
	int i,j;
	int x = 5;
	int y = 10;
	//输出小球上面的空行
	for ( i=0;i<x;i++)
		printf("\n");
	//输出小球左边的空格 
	for ( j=0;j<y;j++)
		printf(" ");
	printf("o");      //输出小球 o  
	printf("\n");
	return 0; 
}

代码运行显示结果如下:
在这里插入图片描述
这样,我们就在坐标(5,10)处显示出了一个小球“ o ”

让静止的小球下落

实现思路:
通过改变小球的坐标变量,来使得小球出现下落的显示效果
因为是下落,所以我们使x的值增加即可,为此,我们需要一个for循环
并且,为了显示好看,我们在每次显示之前都使用了清屏函数system(" cls "),需要注意的是这个清屏函数被包含在头文件#include <stdlib.h> 。因此,我们还需要引入新的头文件
代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int i,j;
	int x=1;
	int y=10;
	for (x=1;x<10;x++)
	{
		system("cls"); //清屏函数
		//输出小球上面的空行
		for (i=0;i<x;i++)
			printf("\n");
		//输出小球左边的空格 
		for (j=0;j<y;j++)
			printf(" ");
		printf("o");      //输出小球o
		printf("\n"); 
	}
	return 0;
}

因为是动图,就不放效果图了

实现上下跳动的小球

实现思路:
在上一步代码的基础上增加记录速度的变量velocity,使得小球的新位置实为x=旧位置x+速度velocity。
并且判断当小球到达上,下边界时改变方向,也就是改变velocity的正负号而已。
代码如下:

#include <stdio.h>
#include <stdlib.h> 
#include <windows.h>
int main()
{
	int i,j;
	int x = 5;
	int y = 10;
	
	int height = 20;
	int velocity = 1;
	
	while (1)
	{
		x = x + velocity;
		system("cls"); 		//清屏函数
		
		// 输出小球前的空行
		for (i=0;i<y;i++)
			printf("\n");
		//输出小球前的空格 
		for (j=0;j<y;j++)
			printf(" "); 
		printf("o");
		printf("\n");
		Sleep(100);
		
		if (x==height)
			velocity = -velocity;
		if (x==0)
			velocity = -velocity;
	}
	return 0;
}

因为是动图,就不放效果图了。有兴趣的可以自己动手试试。

斜着弹跳的小球

实现思路:
通过增加x和y两个方向的速度控制变量velocity_x , velocity_y ,初值均为1; velocity_x 碰到上下边界后改变正负号,y的速度变量同理,碰到左右边界后改变正负号。
代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
	int j,i;
	int x = 0;
	int y = 5;
	
	int velocity_x = 1;
	int velocity_y = 1;
	int left = 0;
	int right = 20;
	int top = 0;
	int bottom = 10;
	
	while (1)
	{
		x = x + velocity_x;
		y = y + velocity_y;
		
		system("cls");		//清屏函数 
		//输出小球前的空行 
		for (i=0;i<x;i++)
			printf("\n");
		for (j=0;j<y;j++)
			printf(" ");
		printf("o");
		printf("\n");
		Sleep(100);
		
		if ((x==top)||(x==bottom))
			velocity_x = -velocity_x;
		if ((y==left)||(y==right))
			velocity_y = -velocity_y;
	} 
	return 0;
}

效果图同样就不放在这里了,大家自己动手去试一下呀~

控制小球弹跳的速度

因为弹跳速度过快可能会导致运动效果不明显,所以我们需要降低反弹球的速度来使得运动清晰可见,在这里我们可以使用sleep函数(#include <windows.h>)。比如sleep(10)表示程序执行到此处暂停10ms,这样我们就可以掌控小球弹跳的速度啦
根据编译器的不同可以选择#include <windows.h>或者#include < cwindows.h> 尽量自己尝试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值