【easyx】快速入门——弹球小游戏(第一代)

目录

1.需求

2.运动的小球

3.碰到边缘反弹

4.圆周撞击或越过边界反弹

5.绘制和移动挡板

 6.小球碰到挡板反弹

7.游戏失败时该如何处理

8.随机初始条件

9.完整代码


我们这一节将结合动画和键盘交互的知识来做一个小游戏

1.需求

我们先看需求:小球在窗体内运动,撞到除了底边外的另外三个边缘就反弹一次,如果小球撞到底边,游戏结束。玩家可以控制在底边上的一个挡板,让小球撞击到挡板上而反弹,阻止小球撞到底边

2.运动的小球

这里我们先绘制好一个圆形

#include<easyx.h>
#include<stdio.h>

int main()
{
	initgraph(800, 600);
	setorigin(400, 300);
	setaspectratio(1, -1);

	setbkcolor(RGB(164, 225, 202));
	cleardevice();

	setfillcolor(WHITE);
	solidcircle(0, 0, 40);

	getchar();
	return 0;

}

接下来我们想让小球一开始就往右上方运动,也就是说它的速度和x轴的夹角是45度 

我们假设vx=5,vy=5,则

 我们再考虑一下帧率的问题

这样子,小球就可以往右上方运动了

我们看代码

#include<easyx.h>
#include<stdio.h>

int main()
{
	initgraph(800, 600);
	setorigin(400, 300);
	setaspectratio(1, -1);

	setbkcolor(RGB(164, 225, 202));
	cleardevice();

	setfillcolor(WHITE);
	solidcircle(0, 0, 40);

	int x = 0, y = 0;
	int vx = 5, vy = 5;
	int r = 40;
	while (1)
	{
		cleardevice();
		solidcircle(x, y, r);
		Sleep(40);
		x += vx;
		y += vy;
	}

	getchar();
	return 0;

}

3.碰到边缘反弹

我们需要将小球的运动范围限制在窗体内,让小球在碰到窗体边缘后反弹

当小球碰到最上方时,只需将vy改为-vy即可

这样就会引出一个新的问题

 有的人说可以将y==300设置为终端条件,但是事实上,这个效果和我们理想的状态好像不太一样

因此我们使用区间来判断将更加通用 

当y>=300时,使vy反向即可

#include<easyx.h>
#include<stdio.h>

int main()
{
	initgraph(800, 600);
	setorigin(400, 300);
	setaspectratio(1, -1);

	setbkcolor(RGB(164, 225, 202));
	cleardevice();

	setfillcolor(WHITE);
	solidcircle(0, 0, 40);

	int x = 0, y = 0;
	int vx = 5, vy = 5;
	int r = 40;
	while (1)
	{
		cleardevice();
		solidcircle(x, y, r);
		Sleep(40);
		
		if (y >= 300)
		{
			vy = -vy;
		}
		x += vx;
		y += vy;
	}

	getchar();
	return 0;

}

同样的,对与两边的墙,我们可以使用相同的思路

我们接着修改代码

#include<easyx.h>
#include<stdio.h>

int main()
{
	initgraph(80
  • 44
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值