2.弹球代码

实现一个小球碰到方框边界反弹的效果。

 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
         
 #define ROW 15
 #define COL 40
        
 //初始化盒子
 void init_box(char bg[][COL], char ch)
 {
     int i, j; 
 
     for (i = 0; i < ROW; i++)
     { 
         for (j = 0; j < COL; j++)
         { 
             if (i == 0 || i == ROW - 1 || j == 0 || j == COL - 1)
             {  
                 bg[i][j] = ch;
             } 
             else
             {
                 bg[i][j] = ' '; 
             }
         }
     }
 }

 void show_box(char bg[][COL], int color)
 {
     int i, j;
 
     for (i = 0; i < ROW; i++)
     {
         for (j = 0; j < COL; j++)
         {
             if (bg[i][j] == 'o')
             {
                 printf("\033[%dmo\033[0m", color);
             }
             else
                 putchar(bg[i][j]);
         }
         putchar(10);
     }
 }

int main(int argc, char **argv)
{
    int x = 3, y = 3, x_inc = 1, y_inc = -1, color = 31;
    char bg[ROW][COL];

    system("clear");
    while(1)
    {
        printf("\033[1;1H");
        init_box(bg, '#');
        //判断是否碰到上界(x < 1)或者下界(x > ROW - 2)
        if (x < 1 || x > ROW - 2)
        {
            x_inc = -x_inc;
            color = rand() % 7 + 31;
        }
        if (y < 1 || y > COL - 2)
        {
            y_inc = -y_inc;
            color = rand() % 7 + 31;
        }
         bg[x][y] = 'o';
         x += x_inc;
         y += y_inc;
         show_box(bg, color);
         usleep(100000);
     }
 
     return 0;
 }



运行结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值