目录
一、弹跳小球介绍
其实也没有什么可介绍的,就是一个小球(用大写的 'O' 代替)在一定区域内反复横跳。
二、弹跳小球的代码
这里我先把代码放出来:(运行效果的话就自己试试了)
intmain() { inti, j; // 小球的初始位置intx, y; printf("输入小球的初始位置(行 列):"); scanf("%d%d", &x, &y); // 小球的跳动边界inttop, bottom, left, right; printf("输入小球的跳动范围(上 下 左 右):"); scanf("%d%d%d%d", &top, &bottom, &left, &right); // 小球的跳动速度intspeed_x, speed_y; printf("输入小球的跳动速度(横向 纵向):"); scanf("%d%d", &speed_x, &speed_y); // 小球跳动while (1) { // 判断小球是否到达边界if (y>bottom||y<top) { speed_y=-speed_y; } if (x<left||x>right) { speed_x=-speed_x; } // 小球的跳动x-=speed_x; y-=speed_y; // 清除上一个小球,防止出现重影system("cls"); // 小球的具体位置for (j=0; j<y; j++) { printf("\n"); } for (i=0; i<x; i++) { printf(" "); } printf("O\n"); } return0; }
三、弹跳小球代码的解析
接下来我会对这段代码一一解析。
1、我们需要一个小球(大写的 'O')
printf("O\n");
2、在一个指定的位置将小球 'O' 打印出来
这里我让行 Y 和列 X 都为10
intx=10; inty=10;
接下来就是打印小球了
首先我们将光标移动到需要打印的行 (利用 for 循环以及换行符 '\n')
for (j=0; j<y; j++) { printf("\n"); }
接着我们将光标到小球需要打印的位置之间用 "空格" 占掉,以此来达到将小球打印在指定的列而前面不出现别的东西,然后打印小球。
for (i=0; i<x; i++) { printf(" "); } printf("O\n");
3、弹跳小球的重点当然是弹跳二字了,我们来实现小球的弹跳
先来向上跳一行(将原来用来表示小球在第几行的变量 Y - 1 来表示弹跳一行后的小球在第几行)
y--; for (j=0; j<y; j++) { printf("\n"); } for (i=0; i<x; i++) { printf(" "); } printf("O\n");
这样我们就让小球向上跳了一行。
接下来我们就让小球持续的向上跳一行(使用 while(1) 死循环来让小球向上跳)
while (1) { y--;for (j=0; j<y; j++) { printf("\n"); } for (i=0; i<x; i++) { printf(" "); } printf("O\n"); }
当我们运行后会发现,我们得到了一列小球。这个时候我们就需要用到 system("cls"); 了
清屏函数system("cls")
该函数使用时需要添加stdlib.h函数库,即添加#include <stdlib.h>。
作用:该函数可以在清空画面。
我们添加这个函数
while (1) { system("cls"); y--;for (j=0; j<y; j++) { printf("\n"); } for (i=0; i<x; i++) { printf(" "); } printf("O\n"); }
这样我们就看到小球向上移动了。但是我们又发现一个问题,就是小球直接没了。这个时候我们就要让小球跳回来了。
4、让小球在指定范围内跳动
我们先要设置小球到哪会跳回来(我设置的是 top = 1)
inttop=1;
然后我们用 if 来判断小球有没有到我们设置的位置 (有的话就让小球向下跳 y++)
1.if (y<top) 2. { 3.y++; 4. }
同理我们可以定义小球的下边界(bottom),左边界(left),右边界(right)。
int top = 1;
int bottom = 10;
int left = 0;
int right = 50;
这样我们就可以让小球在一定范围内跳动。
当然我们也可以定义小球的跳动速度(速度就自己定了)
int speed_x = 1;
int speed_y = 1;
同时也可以让小球在指定的范围内更好地更改跳动方向(只需添加 '-' 就可以了)
//判断小球是否到达边界if (y>bottom||y<top) { speed_y=-speed_y; } if (x<left||x>right) { speed_x=-speed_x; }
判断小球是否到达边界,到达后只需将跳动的增加量改为负数就可以了
好了弹跳小球就到这里结束了(这个时候就可以看到小球在我们规定的范围内反复横跳了)
5、用 scanf() 来输入小球的初始位置和跳动范围
scanf(“输入控制符”, 输入参数);
功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
// 小球的初始位置intx, y; printf("输入小球的初始位置(行 列):"); scanf("%d%d", &x, &y); // 小球的跳动边界inttop, bottom, left, right; printf("输入小球的跳动范围(上 下 左 右):"); scanf("%d%d%d%d", &top, &bottom, &left, &right); // 小球的跳动速度intspeed_x, speed_y; printf("输入小球的跳动速度(横向 纵向):"); scanf("%d%d", &speed_x, &speed_y);