c语言实现小球跳动的效果
第一次发文章,日后也将不定时发布一些类似这样的文章,希望大家喜欢
为了保证小球在碰到某些地方能够实现回弹,我们需要先设置一下边框:
- int top=0,bottom=30;//上下边框
- int left=0,right=40; //左右边框
这样一来,小球的可移动范围就定义完毕了,那么接下来,为了改变小球的运动方向与速度,我们还需要定义小球在x,y轴上的速度,同时定义小球的除坐标,代码如下:
- int speedX=1,speedY=1;
- int x=1,y=1;
变量定义完毕后,为了小球能够不停的运动,我们还需要用到循环结构,同时是不停的循环,我们在这里使用简单快捷的while(1)
是时候使用前面的变量了,我们先做一个“碰撞检测器”,应该不难想到需要用到if函数:
if (x == left || x == right)
{
speedX = -speedX; // 设置碰撞检测(x轴
}
if (y == top || y == bottom)
{
speedY = -speedY; // 设置碰撞检测(y轴
}
接下来小球的坐标应该如何处理呢?这时我们就可以用到speed和初坐标了
x=x-speedX;//当然,加减都可以,下面也一样 y=y-speedY;
有了x,y的坐标,就可以进行最为关键的一步了,如何保证小球会在该坐标上呢?我们只需要空格和回车:
for (int a=0;a<y;a++)
{
printf("
");
}
for (int b=0;b<x;b++)
{
printf(" ");
}
当然别忘了输出小球: printf(“O”);
是不是以为结束了?并没有,此时你大概会发现输出了满屏的小球,并没有达到跳动的效果,别担心,那是因为我们并没有做完,我们还需要用到system (“cls”);,也就是清屏函数,用到他,我们的还需要用到stdlib库,即: #include<stdlib.h>
现在是不是就很完美的实现了呢?
全部代码如下:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int x = 30, y = 20; // 小球初坐标
int top = 0, bottom = 30; // 边框(上下)
int speedX=1, speedY=1; // XY轴速度
int left = 0, right = 50; // 边框(左右)
while (1)
{
if (x == left || x == right)
{
speedX = -speedX; // 设置碰撞检测(x轴
}
if (y == top || y == bottom)
{
speedY = -speedY; // 设置碰撞检测(y轴
}
x = x - speedX; // 设定小球坐标
y = y - speedY;
system("cls");
for (int a=0;a<y;a++)
{
printf("
");
}
for (int b=0;b<x;b++)
{
printf(" ");
}
printf("O
");
}
return 0;
希望本文章对您有所帮助,同时如果有问题希望大佬指出,我会及时做出订正
上一篇:
通过多线程提高代码的执行效率例子
