【C语言】 《弹跳的小球》游戏编写过程及思路,清屏函数、Sleep()函数的应用

目录

一、 制作准备

 1.所需库函数

2.基本逻辑

二、编写过程

 1.显示小球

2.小球下落

3.小球弹跳 

4.优化体验 

下期更新《狂野打飞机》游戏!


一、 制作准备

 1.所需库函数

​
#include<stdio.h>

#include<stdlib.h>

#include<windows.h>

​

< stdlib.h>库函数所用到的是system()函数,用来制造小球位置的变化。

<windows.h>库函数用到的是Sleep()函数,用来调节小球移动的速度。


2.基本逻辑

      首先是在屏幕上显示这个球,然后使这个球移动起来,最后就是调节小球移动的速度。


二、编写过程

 1.显示小球

       想要在屏幕上显示出这个小球,我们要做的就是确定他的x,y值,也就是水平和竖直的位置。水平我们用空格填充,竖直用\n来填充。

#include<stdio.h>
int main()
{
	int i, j;
	int x = 5;
	int y = 20;
    for (i = 0; i < x; i++)
		printf("\n");
	for (j = 0; j < y; j++)
		printf(" ");
	printf("O");
	printf("\n");
	return 0;
}

       这样我们就在屏幕上显示出这个小球来了。那么既然小球出现了,我们现在要做的就是想办法让它动起来。


2.小球下落

       想让小球下落,我们就要定义一个循环,让小球的高度不断变化,但是如果仅仅是高度发生变化,之前的小球还会一直停留在屏幕上,现在我们就用到了库函数<stdlib.h>中的清屏函数system("cls");实现清屏,小球每次移动后,之前在屏幕上的小球都会消失。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i, j;
	int x = 1;
	int y = 10;
	for(i = 0;i < y;i++)
	{
		system("cls");
		for (i = 0; i < x; i++)
			printf("\n");
		for (j = 0; j < y; j++)
			printf(" ");
		printf("O");
		printf("\n");
	}
	return 0;
}

3.小球弹跳 

       所谓弹球,小球肯定能在边界反弹,那反弹就是改变运动速度咯。我们只需要定义一个小球的速度,然后在小球位于边界的时候把小球的速度变为相反数,这样就可以让小球以水平或者竖直的相反的方向弹。

       在上一步代码的基础山增加速度变量velocity,小球的新位置x=旧位置+速度velocity。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i, j;
	int x = 0;
	int y = 5;
	int left = 0;
	int right = 20;
	int top = 0;
	int buttom = 10;
	int velocity_x = 1;
	int velocity_y = 1;
	while (1)
	{
		x += velocity_x;
		y += velocity_y;
		system("cls");
		for (i = 0; i < x; i++)
			printf("\n");
		for (j = 0; j < y; j++)
			printf(" ");
		printf("O");
		printf("\n");
		//小球位于边界时改变小球的速度方向
		if (x == top||x==buttom)
			velocity_x = -velocity_x;
		if(y==left||y==right)
			velocity_y = -velocity_y;
	}
	return 0;
}

4.优化体验 

       弹跳小球的游戏现在看起来时完成了,但是它的游戏体验并不是很好,小球移动速度太快。我们先在要做的就是让小球放慢速度,看起来正常一点。这时候就用到了库函数<windows.h>中的Sleep()函数来让小球速度变慢,也就是输出小球后延迟一段时间再运行函数。

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main() 
{
	int i, j;
	int x = 0;
	int y = 5;
	int left = 0;
	int right = 20;
	int top = 0;
	int buttom = 10;
	int velocity_x = 1;
	int velocity_y = 1;
	while (1)
	{
		x += velocity_x;
		y += velocity_y;
		system("cls");
		for (i = 0; i < x; i++)
			printf("\n");
		for (j = 0; j < y; j++)
			printf(" ");
		printf("O");
		printf("\n");
		Sleep(10);
		//小球位于边界时改变小球的速度方向
		if (x == top||x==buttom)
			velocity_x = -velocity_x;
		if(y==left||y==right)
			velocity_y = -velocity_y;
	}
	return 0;
}

        在发生碰撞后我们也可以给予用户一个反馈,可以用\a响铃来完成反馈

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main() 
{
	int i, j;
	int x = 0;
	int y = 5;
	int left = 0;
	int right = 40;
	int top = 0;
	int buttom = 30;
	int velocity_x = 1;
	int velocity_y = 1;
	while (1)
	{
		x += velocity_x;
		y += velocity_y;
		system("cls");
		for (i = 0; i < x; i++)
			printf("\n");
		for (j = 0; j < y; j++)
			printf(" ");
		printf("O");
		printf("\n");
		Sleep(10);
		//小球位于边界时改变小球的速度方向
		if (x == top || x == buttom) {
			velocity_x = -velocity_x;
			printf("\a");
		}
		if (y == left || y == right) {
			velocity_y = -velocity_y;
			printf("\a");
		}
	}
	return 0;
}

 

 


       但是这个游戏只能说是毫无游戏体验,没有任何游玩性,所以下一期会更新飞机大战《狂野打飞机》游戏!

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值