弹力小球简单版

c语言初学者 记录自己第一个小球游戏

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <windows.h>
#include <conio.h>
void clrscr();
int main()
{
	char ch;
	int x, y, i, j, k = 1, hight =20,width=20,t1=1,t2=1;
	scanf("%d %d", &x, &y);
	getchar();
	while (1)
	{
		if (y > hight || y < 1)/*控制边界*/
		{
			t1 = -1 * t1;
			printf("\a");
		}
		if (x<1 || x>width)
		{
			t2 = t2 * -1;
			printf("\a");
		}
		y = y + t1;
		x = x + t2;
		Sleep(100);
		clrscr();/*清屏函数*/
		for (i = 0; i < y; i++)/*小球产生器*/
			printf("\n");
		for (j = 0; j < x; j++)
			printf(" ");
		printf("0\n");
		
	}
}

void clrscr()//清除屏幕,clrscr是TurBo C语言中的,在vs中使用会报错,所以添加这段代码
{
	system("cls");//与clrscr函数等价
}

运用到了基本的清屏函数

system("cls")

这里嫌麻烦用clrscr包装了一下,system("cls")函数位于windows.h库中,作用是把屏幕清空,以便于产生动画效果

要制作一个弹力小球分为以下几步

一、在屏幕中显示一个小球

我们先得从先显示一个静态的小球

而小球我们则用0符号来替换,而一个小球与它相关的便是它的坐标,此处用x与y显示

x方向则使用printf("空格")来实现

y方向则使用printf("\n")来实现

而在控制台小黑框显示过程中我们先进行换行操作再进行空格处理即

for (i = 0; i < y; i++)/*小球产生器*/
	printf("\n");
for (j = 0; j < x; j++)
	printf(" ");
printf("0\n");

此时给出x与y便可显示出一个小球

而此时小球是一个静止状态,我们如何使它动起来呢

二、小球的运动

我们便要不断的清屏并且改变它的坐标,也就是x与y的值

为做出如使视频般的效果

我们便要设置一个循环在循环中使用system("cls")函数清屏后改变x与y的值,再进行小球的显示

while (1)
{
	
	y = y + t1;
	x = x + t2;
	clrscr();/*清屏函数*/
	for (i = 0; i < y; i++)/*小球产生器*/
		printf("\n");
	for (j = 0; j < x; j++)
		printf(" ");
	printf("0\n");
	
}

三、小球的改变

要使小球进行改变,我们要设置改变条件

我设置的改变条件是接触边界

所以我们要在开头设置两个边界限制变量hightwidth

其实也可以设置四个不过我嫌麻烦用1代替了

设置两个判断语句在开头

如果此时以及超出边界变向相反的反向前进

例如x一直在加变成x一直在减

while (1)
{
	if (y > hight || y < 1)/*控制边界*/
	{
		t1 = -1 * t1;
		printf("\a");
	}
	if (x<1 || x>width)
	{
		t2 = t2 * -1;
		printf("\a");
	}
	y = y + t1;
	x = x + t2;
	Sleep(100);
	clrscr();/*清屏函数*/
	for (i = 0; i < y; i++)/*小球产生器*/
		printf("\n");
	for (j = 0; j < x; j++)
		printf(" ");
	printf("0\n");
	
}

四、小球速率的控制与碰撞效果

如果感觉小球太快了

可以在其中穿插Sleep()函数(函数首字母为大写),位于Windows.h

如果想使小球碰撞有音效可以在碰撞时候

printf("\a")

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值