利用printf函数,非常简单。主要是想明白小球动态效果的呈现是通过改变小球的坐标变量以及每次显示小球前使用清屏函数system(“cls”)来实现。
设计思路:
1、显示一个静态的小球。(小球用字母‘o’表示即可)。
2、在1的基础上让小球能够下落。(通过小球的x坐标以及每次显示前运用清屏函数来实现)。
3.实现上下弹跳以及,当到达上界或者下界的时候改变方向。
4、左右或斜着弹跳。
5、加边框,碰壁后报警等。(实现完上述功能后思考将这些修饰功能融入进去)。
#include <stdio.h>
#include <stdlib.h> //system("cls")的头文件
#include <Windows.h> //sleep函数的头文件
int main(void)
{
int i, j;
int x = 0;
int y = 5;
int left = 0;
int right = 50;
int top = 0;
int bottom = 20;
int velocity_x = 1;
int velocity_y = 1;
/*弹跳的小球*/
while (1)
{
x = x + velocity_x; //x的移动
y = y + velocity_y;
system("cls"); //清屏函数,形成运动效果
for (i = 0; i <= right; i++) //在每次运行的第一行. 画一排#作为上边界
printf("#");
printf("\n");
/*画出运行至小球前一行的边框*/
for (i = 0; i < x; i++)
{
printf("*"); //第一个字符为* 即左边框
for (j = 0; j < right - 1; j++) // 用循环画空格
printf(" ");
printf("*\n"); //用* 再画一个右边框
}
/*画出运行到小球这一行时左右边框和小球*/
printf("*"); //左边框
for (j = 0; j < y - 1; j++) //小球之前的空格
printf(" ");
printf("o"); //小球
for (; j < right - 2; j++) //小球右边的空格
printf(" ");
printf("*\n"); //右边框, 并且换行
/*画出小球的下一行到底部边界前一行的界面*/
for (i > x+1; i < bottom; i++)
{
printf("*");
for (j = 0; j < right - 1; j++)
printf(" ");
printf("*\n");
}
/*画出最后一行,原理同第一行*/
for (i = 0; i <= right; i++) // 画一排# 作为下边界
printf("#");
printf("\n");
Sleep(1); //时间自己控制,时间不同,效果不同,切记S大写
if ((x == top) || (x == bottom))
{//由下往上反弹
velocity_x = -velocity_x;
printf("\a");
}//碰壁响铃
if ((y == left) || (y == right-1))
{
velocity_y = -velocity_y; //碰壁响铃
printf("\a");
}
}
return 0;
}