主要知识点:为实现动态显示,可用清屏函数
1.实现小球自由落体(动态轨迹)
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
//实现小球的自由落体
int main()
{
system("mode con cols=50 lines=12");
int i, j;
int l;
int c = 20;
for (l = 1; l <= 10; l++)
{
system("cls");
for (i = 0; i < l; i++)
printf("\n");
for (j = 0; j < c; j++)
printf(" ");
printf("◎");
}
printf("\n");
return 0;
}
2.实现小球的上下弹跳
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
//实现小球上下弹跳
int main()
{
system("mode con cols=50 lines=25");
int height = 10;
int velocity = 1;
int c = 20, l=0;
int i, j;
while (1)
{
Sleep(50);
l = l + velocity;
system("cls");
for (i = 0; i < l; i++)
printf("\n");
for (j = 0; j < c - 1; j++)
printf(" ");
printf("●");
if (l == height || l == 0)
velocity = -velocity;
}
return 0;
}
3.实现小球的抛物线弹跳
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
//实现小球上下弹跳
int main()
{
system("mode con cols=50 lines=25");
int height = 10;
int width = 20;
int velocity_l = 1;
int velocity_c = 1;
int c = 0, l = 0;
int i, j;
while (1)
{
Sleep(100);
l = l + velocity_l;
c = c + velocity_c;
system("cls");
for (i = 0; i < l; i++)
printf("\n");
for (j = 0; j < c - 1; j++)
printf(" ");
printf("●");
if (l == height || l == 0)
{
velocity_l = -velocity_l;
printf("\a");
}
if (c == 0 || c == width)
{
velocity_c = -velocity_c;
printf("\a");
}
}
return 0;
}
PS:用printf("\a")函数来实现球碰到边界时响铃。
4.实现抛物线的变速弹跳(由快变慢)
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
//实现小球上下弹跳
int main()
{
system("mode con cols=50 lines=25");
int height = 10;
int width = 20;
int velocity_l = 1;
int velocity_c = 1;
int c = 0, l = 0;
int i, j;
int h = 0;
while (1)
{
Sleep(5+h);
h = h +1;
l = l + velocity_l;
c = c + velocity_c;
system("cls");
for (i = 0; i < l; i++)
printf("\n");
for (j = 0; j < c - 1; j++)
printf(" ");
printf("●");
if (l == height || l == 0)
{
velocity_l = -velocity_l;
printf("\a");
}
if (c == 0 || c == width)
{
velocity_c = -velocity_c;
printf("\a");
}
}
return 0;
}