C语言——弹跳小球

文章介绍了如何使用C语言编写一个简单的弹跳小球程序,包括输入小球初始位置、跳动范围和速度,以及使用系统函数实现屏幕清空,使小球在指定区域内进行弹跳。代码解析部分详细解释了每个关键步骤,如判断边界和改变运动方向。
摘要由CSDN通过智能技术生成

目录

一、弹跳小球介绍

二、弹跳小球的代码

三、弹跳小球代码的解析

1、我们需要一个小球(大写的 'O')

2、在一个指定的位置将小球 'O' 打印出来

3、弹跳小球的重点当然是弹跳二字了,我们来实现小球的弹跳

清屏函数system("cls")

4、让小球在指定范围内跳动

5、用 scanf() 来输入小球的初始位置和跳动范围

scanf(“输入控制符”, 输入参数);

四、总结


一、弹跳小球介绍

其实也没有什么可介绍的,就是一个小球(用大写的 '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");

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开朗碳基生物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值