目录
一、弹跳小球介绍
其实也没有什么可介绍的,就是一个小球(用大写的 'O' 代替)在一定区域内反复横跳。
二、弹跳小球的代码
这里我先把代码放出来:(运行效果的话就自己试试了)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j;
// 小球的初始位置
int x, y;
printf("输入小球的初始位置(行 列):");
scanf("%d%d", &x, &y);
// 小球的跳动边界
int top, bottom, left, right;
printf("输入小球的跳动范围(上 下 左 右):");
scanf("%d%d%d%d", &top, &bottom, &left, &right);
// 小球的跳动速度
int speed_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");
}
return 0;
}
三、弹跳小球代码的解析
接下来我会对这段代码一一解析。
1、我们需要一个小球(大写的 'O')
printf("O\n");
2、在一个指定的位置将小球 'O' 打印出来
这里我让行 Y 和列 X 都为10
int x = 10;
int y = 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)
int top = 1;
然后我们用 if 来判断小球有没有到我们设置的位置 (有的话就让小球向下跳 y++)
if (y < top)
{
y++;
}
同理我们可以定义小球的下边界(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(“输入控制符”, 输入参数);
功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
// 小球的初始位置
int x, y;
printf("输入小球的初始位置(行 列):");
scanf("%d%d", &x, &y);
// 小球的跳动边界
int top, bottom, left, right;
printf("输入小球的跳动范围(上 下 左 右):");
scanf("%d%d%d%d", &top, &bottom, &left, &right);
// 小球的跳动速度
int speed_x, speed_y;
printf("输入小球的跳动速度(横向 纵向):");
scanf("%d%d", &speed_x, &speed_y);
四、总结
我们用到了基本的输入函数scanf,输出函数printf,for循环,while循环,if语句,还有清屏函数system("cls");