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

EasyX开发——绘制跟随鼠标移动的小球

游戏主循环:

#include<graphics.h>int main()
{initgraph(1280, 720);while (true){}return 0;
}

peekmessage函数:如果成功拉取到了消息,函数就会返回true,反之就会返回false

 

使用另外一个循环来不断地从消息队列当中拉取已有的消息,并进行处理,直到消息队列当中没有消息为止

 

添加事件处理函数 

#include<graphics.h>int main()
{initgraph(1280, 720);while (true){ExMessage msg;while (peekmessage(&msg)){//在这里进行消息处理}}return 0;
}

在msg变量当中保存有鼠标的x和y坐标

每次鼠标移动,我们就立刻绘制出圆的图案

怎么知道鼠标是否移动了?

添加判断:if(msg.message==WM_MOUSEMOVE)

圆怎么绘制?

使用solidcircle函数来绘图:

#include<graphics.h>int main()
{initgraph(1280, 720);int x = 300;int y = 300;while (true){ExMessage msg;while (peekmessage(&msg)){//在这里进行消息处理if (msg.message == WM_MOUSEMOVE){x = msg.x;y = msg.y;}					}solidcircle(x, y, 100);}return 0;
}

 但是在绘制新的位置的圆的时候,没有对之前位置的圆进行擦除

 

简单起见我们在每次绘图之前都使用cleardevice函数来清空整个窗口

即:

cleardevice();
solidcircle(x, y, 100);

运行之后,发现绘制出来的圆一直在闪烁

这是因为我们没有使用双缓冲对绘图进行优化处理

解决方案:

在主循环前后分别添加BeginBatchDraw()和EndBatchDraw()

在绘图之后添加FlushBatchDraw()函数

 

完整代码:

#include<graphics.h>int main()
{initgraph(1280, 720);int x = 300;int y = 300;BeginBatchDraw();while (true){ExMessage msg;while (peekmessage(&msg)){//在这里进行消息处理if (msg.message == WM_MOUSEMOVE){x = msg.x;y = msg.y;}					}cleardevice();solidcircle(x, y, 100);FlushBatchDraw();}EndBatchDraw();return 0;
}

okok,今天的你就到此为止吧,明天还要接着🐺啊!!🎈🎈🧡 

http://www.dtcms.com/a/189003.html

相关文章:

  • Stream流简介、常用方法
  • AD PCB布线的常用命令
  • 计算机组成与体系结构:全相联映射(Fully Associative Mapping)
  • ios remote debut proxy 怎么开启手机端调试和inspect
  • coco数据集mAP评估
  • UDP和TCP协议
  • 实现springBoot+vue系统项目时遇到的问题及解决方法
  • 优艾智合机器人助力半导体智造,领跑国产化替代浪潮
  • 3335. 字符串转换后的长度 I
  • Codeforces Round 998 (Div. 3)
  • Generative Diffusion Prior for Unified Image Restoration and Enhancement论文阅读
  • 【图像处理基石】如何入门OCR技术?
  • 2025.05.11拼多多机考真题算法岗-第一题
  • 数学复习笔记 6
  • 目标检测任务 - 数据增强
  • 5月13日day24日打卡
  • 医疗设备EMC测试为什么推荐GRJ1080B系列滤波器?
  • IPD流程实战:产品开发各阶段目标、关注点和交付
  • 2025B卷 - 华为OD机试七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD
  • 使用Kubernetes实现零停机部署
  • 内核链表中offsetof 和container_of的一些理解
  • Jackson 使用问题记录(持续更新)
  • 《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码
  • 数据结构(2)线性表-顺序表
  • 腾讯优化DeepSeek的DeepEP通信框架:开启AI大模型训练新时代
  • 运行Spark程序-在shell中运行 --SparkConf 和 SparkContext
  • 基于FPGA的视频接口之千兆网口(六GigE纯逻辑)
  • 深入理解BLP安全模型:信息安全中的“守密者”
  • 【力扣】K个一组翻转链表
  • 使用 百度云大模型平台 做 【提示词优化】