当前位置: 首页 > news >正文

黑龙江网站建设自己建网页

黑龙江网站建设,自己建网页,大型网站开发合同,b2b网站模版🎆音乐分享 New Boy —— 房东的猫 之前都用Sleep()来控制画面帧率,忽略了绘制画面的时间 如果绘制画面需要很长的时间,那么就不能忽略了。 并且Sleep()函数也不是特别准确,那么就…

🎆音乐分享 

New Boy —— 房东的猫


 

之前都用Sleep()来控制画面帧率,忽略了绘制画面的时间

如果绘制画面需要很长的时间,那么就不能忽略了。

并且Sleep()函数也不是特别准确,那么就要精准控制帧率了

🚥🚥🚥🚥🚥🚥

开始时间 结束时间 频率F

LARGE_INTEGER startCount,endCount,F;

 获取计数器累加频率

QueryPerformanceFrequency(&F);

获取当前的计数值

QueryPerformanceCounter(&startCount);//获取起始计数,并保存在startCount里面

获取终止计数

QueryPerformanceCounter(&endCount);

 计算时差

long long elapse=(endCount.QuadPart-startCount.QuadPart)*1000000/F.QuadPart;//根据LARGE_INTEGER的定义,elapse必须是long long 类型的

 查询是否超时

while (elapse < 1000000 / 60){//最长等待时间为60帧每秒Sleep(1);//先休眠1ms,防止CPU使用率过高QueryPerformanceCounter(&endCount);elapse = (endCount.QuadPart - startCount.QuadPart) * 1000000 / F.QuadPart;}

这时候如果执行代码会发现,虽然我们指定了Sleep(1),但是还是休眠了15ms

这是因为 

 

要解决这个问题,就要加上 

timeBeginPeriod(1);//改变定时器时钟分辨率为1mstimeEndPeriod(1);

 这里如果运行的话会报错,因为

timeBeginPeriod()和 timeEndPeriod()的实现在 库winmm.lib中

解决方法如下

 

 把winmm.lib添加到附加依赖项中

 当然,绘制画面也得加上下面的函数

BeginBatchDraw();
EndBatchDraw();

 🚥🚥🚥🚥🚥🚥

下面咱们来看一个打气球小游戏,把上面的帧率控制代码进行实操

//看着气球在画面中是分散的,其实可以把他们想象成是在一个数组里面的,然后进行操作
#include<easyx.h>
#include<stdio.h>
#include<math.h>#define WIDTH 800//窗体宽度
#define HEIGHT 600//窗体高度
#define NUM 5//窗体中的气球数量
#define RADIUS 30//气球半径//保存气球的各项数据
typedef struct {int x;int y;int r;//半径int v;//速度COLORREF color;
}balloon;//生成气球,并初始化
balloon generateBalloon()//因为arrBalloons[]是balloon类型的,所以generateBalloon()也应该是balloon类型的
{balloon b;int m, n;m = 100;n = 700;b.x = rand() % (n - m + 1) + m;b.y = HEIGHT;b.r = RADIUS;m = 1;n = 3;b.v = rand() % (n - m + 1) + m;b.color = RGB(rand() % 256, rand() % 256, rand() % 256);return b;
}int main()
{initgraph(WIDTH, HEIGHT);setbkcolor(WHITE);cleardevice();balloon arrBalloons[NUM];//保存目前窗体出现的气球数量for (int i = 0; i < NUM; i++)//给每一个气球赋值(大小,颜色){arrBalloons[i] = generateBalloon();}int current = NUM;//当前出现的气球数量int mouseX = 0, mouseY = 0;//鼠标位置timeBeginPeriod(1);LARGE_INTEGER startCount, endCount, F;QueryPerformanceFrequency(&F);BeginBatchDraw();while (1){QueryPerformanceCounter(&startCount);cleardevice();for (int i = 0; i < NUM; i++)//绘制气球{setfillcolor(arrBalloons[i].color);solidcircle(arrBalloons[i].x, arrBalloons[i].y, arrBalloons[i].r);}for (int i = 0; i < NUM; i++)//移动气球{arrBalloons[i].y -= arrBalloons[i].v;}int i = 0;while (i < current){int y = arrBalloons[i].y;if (y < -RADIUS)//气球飞出窗体{for (int j = i; j < current - 1; j++)//删除飞出的气球{arrBalloons[j] = arrBalloons[j + 1];}current--;}else{i++;}}if (current < NUM)//新增气球{arrBalloons[current] = generateBalloon();current++;}//绘制准心setlinecolor(RGB(237, 178, 29));setlinestyle(PS_SOLID, 3);circle(mouseX, mouseY, 20);line(mouseX - 20, mouseY, mouseX + 20, mouseY);//准心使用了mouseX,mouseY,便于准心可以与鼠标指针一起移动line(mouseX, mouseY - 20, mouseX, mouseY + 20);QueryPerformanceCounter(&endCount);long long elapse = (endCount.QuadPart - startCount.QuadPart) * 1000000 / F.QuadPart;while (elapse < 1000000 / 60)//最长等待时间为60帧每秒{Sleep(1);ExMessage msg;bool isOK = peekmessage(&msg, EX_MOUSE);if (isOK = true){if (msg.message == WM_MOUSEMOVE)//鼠标移动消息{								//更新鼠标位置mouseX = msg.x;mouseY = msg.y;}else if (msg.message == WM_LBUTTONDOWN)//鼠标点击消息{int i = 0;while (i < current){int ballX = arrBalloons[i].x;int ballY = arrBalloons[i].y;int distance = (int)sqrt(pow(ballY - msg.y, 2) + pow(ballX - msg.x, 2));if (distance < RADIUS)//如果点击到了气球,就把气球删除{for (int j = i; j < current - 1; j++){arrBalloons[j] = arrBalloons[j + 1];}current--;}else{i++;}}}}QueryPerformanceCounter(&endCount);elapse = (endCount.QuadPart - startCount.QuadPart) * 1000000 / F.QuadPart;}FlushBatchDraw();}EndBatchDraw();timeEndPeriod(1);closegraph();return 0;
}
//看着气球在画面中是分散的,其实可以把他们想象成是在一个数组里面的,然后进行操作

Code over!

http://www.dinnco.com/news/19285.html

相关文章:

  • 高端企业网站制作站长工具关键词排名怎么查
  • 做服装加工哪个网站比较好北京网站seo公司
  • 电商网平台沈阳百度快照优化公司
  • vps做网站灰色项目推广渠道
  • 无锡知名网站制作公司网站推广费用
  • 天津企业网站建设方案线上推广外包公司
  • 好用的做图网站有哪些网站seo优化的目的
  • 开发一个网站测试要怎么做的2345网址导航是什么浏览器
  • 网站开发挣钱吗爱站网挖掘关键词
  • 岳阳市网站建设推广友情链接检测659292
  • 数据来源网站怎么做脚注新郑网络推广外包
  • 男的女的做那个的视频网站百度seo最新算法
  • 两学一做网站答题网址google google
  • WordPress前端上传大文件广州seo公司推荐
  • VM2008 做网站网页代码模板
  • 网站建设的仿站深圳网络推广
  • 网站建设与制作实现精准营销杭州排名优化软件
  • 营销型网站建设试题河南网站优化公司
  • 广州比较好的外贸公司有哪些长沙优化科技有限公司正规吗
  • 湛江有没有做网站的优化资讯
  • 电子商务网站建设的体会全球搜
  • 哪里有专做水果的网站目前最靠谱的推广平台
  • 嘉定专业做网站广州专门做网站
  • 有谁认识做微网站的公司网站制作
  • sql做网站后台优化设计电子课本
  • 网站如何布局设计最近发生的热点新闻
  • 手机网站建设商场开发新客户的十大渠道
  • 阿里云 两个网站竞价推广和seo的区别
  • cn域名做网站高端seo服务
  • 制作系统重庆关键词优化平台