栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Easyx实现窗口自动碰撞的小球

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Easyx实现窗口自动碰撞的小球

 

#include
#include
#include

int main()
{
	//创建窗口
	initgraph(640, 480);

	//定义小球的数据
	int bx = getwidth() / 2;
	int by = getheight() / 2;
	int br = 20;
	int xSpeed = 5;//速度
	int ySpeed = 5;
	
	//处理消息
	while (true)
	{
		int startTime = clock();//获取当前的毫秒数(程序启动到调用clock的时间)
		//双缓冲
		BeginBatchDraw();//开始双缓冲
		//清屏
		cleardevice();
		//绘制小球
		setfillcolor(GREEN);
		solidcircle(bx, by, br);

		//移动小球
		bx += xSpeed;
		by += ySpeed;

		//如果碰撞到边界就反弹
		if (bx+br>getwidth()||bx - br < 0)
		{
			xSpeed = -xSpeed;
		}
		if (by + br > getheight() || by - br < 0)
		{
			ySpeed = -ySpeed;
		}
		
		static ExMessage msg;//每次循环的时候,不要重新定义
		while (peekmessage(&msg,EM_MOUSE | EM_KEY))
		{

		}
		EndBatchDraw();//把内存中的图片显示到窗口上

		//fps帧数  一般游戏是24帧数或60帧数  怎么控制帧率  1000毫秒/60帧=16.666
		int frameTime = clock() - startTime;//获取当前帧执行了多少毫秒
		//如果当前帧执行时间小于美珍应该执行的时间(提前执行完毕)
		if (frameTime < 1000 / 60)
		{
			Sleep(1000 / 60 - frameTime);//多余的时间睡觉
			//Sleep(16);
		}
		
	}

	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/702375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号