目录
利用printf函数实现一个在屏幕上跳动的小球,本游戏相对简单,容易,但也是其它游戏
的基础。
一.静止的小球
首先利用printf函数在屏幕坐标(x,y)处显示一个静止的小球字符‘o’,在每次显示之前使用了清屏函数system("cls"),注意需要包含头文件#include<stdlib.h>。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
int x = 1;
int y = 10;
for(x=1;x<10;x++)
{
system("cls"); //清屏函数
//输出小球上面的空行
for(i=0;i<x;i++)
printf("\n");
//输出小球左边的空格
for(j=0;j<x;j++)
printf(" ");
printf("o"); //输出小球
}
return 0;
}
运行结果
二.小球下落
改变小球的变量,即让小球的x坐标增加,从而让小球下落。在每次显示之前使用了清屏函数system("cle"),注意需要包含头文件#include<stdlib.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
int x = 1;
int y = 10;
for(x=1;x<10;x++)
{
system("cls");
//输出小球前的空行
for(i=0;i<x;i++)
printf("\n");
//输出小球左边的空格
for(j=0;j<x;j++)
printf(" ");
printf("o"); //输出小球o
printf("\n");
}
return 0;
}
三.上下跳动的小球
在上一步代码的基础上增加记录下速度的变量velocity,小球的新位置 x=旧位置 x + 速度velocity,当判断小球到达上,下边界时改变方向,即改变velocity的正负号。
代码如下
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
int x = 1;
int y = 10;
int height = 20;
int velocity = 1;
while(1)
{
x =x+velocity;
system("cls"); //清屏函数
//输出小球前的空行
for(i=0;i<x;i++)
printf("\n");
for(j=0;j<x;j++)
printf(" ");
printf("o"); //输出小球o
printf("\n");
if(x==height)
velocity = -velocity;
if(x==0)
velocity = -velocity;
}
return 0;
}
四.斜着弹跳的小球
下面让程序更有趣,使小球斜着弹跳,主要是增加x,y两个方向的速度控制变量velocity_x,velocity_y,初始值为1;velocity_x碰到上,下边界后改变正负号,velocity_y碰到左右边界后改变正负号。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
int x = 0;
int y = 5;
int velocity_x = 1;
int velocity_y = 1;
int left = 0;
int right = 20;
int top = 0;
int bottom = 10;
while(1)
{
x =x+velocity_x;
y =y+velocity_y;
system("cls"); //清屏函数
//输出小球前的空行
for(i=0;i<x;i++)
printf("\n");
for(j=0;j<x;j++)
printf(" ");
printf("o"); //输出小球o
printf("\n");
if((x==top)||(y==bottom))
velocity_x = -velocity_x;
if((x==left)||(y==right))
velocity_y = -velocity_y;
}
return 0;
}
五.控制小球的速度
上面的反弹球的速度可能过快,为了降低反弹球的速度,可以使用sleep函数(#include<window.h>).比如sleep(10)表示程序执行到此处暂停10m\s,从而控制小球的速度。
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{
int i,j;
int x = 0;
int y = 5;
int velocity_x = 1;
int velocity_y = 1;
int left = 0;
int right = 20;
int top = 0;
int bottom = 10;
while(1)
{
x =x+velocity_x;
y =y+velocity_y;
system("cls"); //清屏函数
//输出小球前的空行
for(i=0;i<x;i++)
printf("\n");
for(j=0;j<x;j++)
printf(" ");
printf("o"); //输出小球o
printf("\n");
Sleep(50);
if((x==top)||(y==bottom))
velocity_x = -velocity_x;
if((x==left)||(y==right))
velocity_y = -velocity_y;
}
return 0;
}