弹跳的小球
通过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> 尽量自己尝试一下。