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;
希望本文章对您有所帮助,同时如果有问题希望大佬指出,我会及时做出订正
上一篇:
通过多线程提高代码的执行效率例子