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

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,今天的你就到此为止吧,明天还要接着🐺啊!!🎈🎈🧡 

相关文章:

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

游戏主循环&#xff1a; #include<graphics.h>int main() {initgraph(1280, 720);while (true){}return 0; } peekmessage函数&#xff1a;如果成功拉取到了消息&#xff0c;函数就会返回true&#xff0c;反之就会返回false 使用另外一个循环来不断地从消息队列当中拉取…...

【Qt开发】信号与槽

目录 1&#xff0c;信号与槽的介绍 2&#xff0c;信号与槽的运用 3&#xff0c;自定义信号 1&#xff0c;信号与槽的介绍 在Qt框架中&#xff0c;信号与槽机制是一种用于对象间通信的强大工具。它是在Qt中实现事件处理和回调函数的主要方法。 信号&#xff1a;窗口中&#x…...

APS排程系统(Advanced Planning and Scheduling,高级计划与排程系统)

APS排程系统&#xff08;Advanced Planning and Scheduling&#xff0c;高级计划与排程系统&#xff09;是一种基于供应链管理和约束理论的智能生产管理工具&#xff0c;旨在通过动态优化资源分配和生产流程&#xff0c;解决制造业中的复杂计划问题。以下是其核心要点解析&…...

使用聊天模型和提示模板构建一个简单的 LLM 应用程序

官方教程 官方案例 在上面的链接注册后&#xff0c;请确保设置您的环境变量以开始记录追踪 export LANGSMITH_TRACING"true" export LANGSMITH_API_KEY"..."或者&#xff0c;如果在笔记本中&#xff0c;您可以使用以下命令设置它们 import getpass imp…...

探索 C++23 的 views::cartesian_product

文章目录 一、背景与动机二、基本概念与语法三、使用示例四、特点与优势五、性能与优化六、与 P2374R4 的关系七、编译器支持八、总结 C23 为我们带来了一系列令人兴奋的新特性&#xff0c;其中 views::cartesian_product 是一个非常实用且强大的功能&#xff0c;它允许我们轻…...

【docker】--镜像管理

文章目录 拉取镜像启动镜像为容器连接容器法一法二 保存镜像加载镜像镜像打标签移除镜像 拉取镜像 docker pull mysql:8.0.42启动镜像为容器 docker run -dp 8080:8080 --name container_mysql8.0.42 -e MYSQL_ROOT_PASSWORD123123123 mysql:8.0.42 连接容器 法一 docker e…...

Stapi知识框架

一、Stapi 基础认知 1. 框架定位 自动化API开发框架&#xff1a;专注于快速生成RESTful API 约定优于配置&#xff1a;通过标准化约定减少样板代码 企业级应用支持&#xff1a;适合构建中大型API服务 代码生成导向&#xff1a;显著提升开发效率 2. 核心特性 自动CRUD端点…...

Hapi.js知识框架

一、Hapi.js 基础 1. 核心概念 企业级Node.js框架&#xff1a;由Walmart团队创建&#xff0c;现由社区维护 配置驱动&#xff1a;强调声明式配置而非中间件 插件架构&#xff1a;高度模块化设计 安全优先&#xff1a;内置安全最佳实践 丰富的生态系统&#xff1a;官方维护…...

Node.js 中的 URL 模块

一、URL 模块基础 1. 模块导入方式 // Node.js 方式 const url require(url);// ES 模块方式 (Node.js 14 或启用 ESM) import * as url from url; 2. 核心功能 解析 URL 字符串 格式化 URL 对象 URL 处理工具方法 WHATWG URL 标准实现 二、URL 解析与构建 1. 传统解…...

Java集合框架详解与使用场景示例

Java集合框架是Java标准库中一组用于存储和操作数据的接口和类。它提供了多种数据结构&#xff0c;每种数据结构都有其特定的用途和性能特点。在本文中&#xff0c;我们将详细介绍Java集合框架的主要组成部分&#xff1a;List、Set和Queue&#xff0c;并通过代码示例展示它们的…...

Ensemble Alignment Subspace Adaptation Method for Cross-Scene Classification

用于跨场景分类的集成对齐子空间自适应方法 摘要&#xff1a;本文提出了一种用于跨场景分类的集成对齐子空间自适应&#xff08;EASA&#xff09;方法&#xff0c;它可以解决同谱异物和异谱同物的问题。该算法将集成学习的思想与域自适应&#xff08;DA&#xff09;算法相结合…...

如何通过 Windows 图形界面找到 WSL 主目录

WSL(Windows Subsystem for Linux)是微软开发的一个软件层,用于在 Windows 11 或 10 上原生运行 Linux 二进制可执行文件。当你在 WSL 上安装一个 Linux 发行版时,它会在 Windows 内创建一个 Linux 环境,包括自己的文件系统和主目录。但是,如何通过 Windows 的图形文件资…...

深入 MySQL 查询优化器:Optimizer Trace 分析

目录 一、前言 二、参数详解 optimizer_trace optimizer_trace_features optimizer_trace_max_mem_size optimizer_trace_limit optimizer_trace_offset 三、Optimizer Trace join_preparation join_optimization condition_processing substitute_generated_column…...

每日一道leetcode

790. 多米诺和托米诺平铺 - 力扣&#xff08;LeetCode&#xff09; 题目 有两种形状的瓷砖&#xff1a;一种是 2 x 1 的多米诺形&#xff0c;另一种是形如 "L" 的托米诺形。两种形状都可以旋转。 给定整数 n &#xff0c;返回可以平铺 2 x n 的面板的方法的数量。返…...

FFmpeg在Android开发中的核心价值是什么?

FFmpeg 在 Android 开发中的核心价值主要体现在其强大的多媒体处理能力和灵活性上&#xff0c;尤其在音视频编解码、流媒体处理及跨平台兼容性方面具有不可替代的作用。以下是具体分析&#xff1a; --- 1. 强大的音视频编解码能力 - 支持广泛格式&#xff1a;FFmpeg 支持几乎所…...

C#进阶(1) ArrayList

前言 在我们进行了入门,基础,核心的学习后,我们已经学了相当多的知识了,不知道你现在对比打开入门时候的你,进步了多少。是否也能自己写一点简单的程序来作为小成就炫耀一下呢? 博主给你留的小项目你是否都有认真去复刻或者改进呢? 这些问题的答案只有你自己清楚。 …...

竞业禁止协议中AI技能限制的深度剖析

首席数据官高鹏律师团队 在当今科技飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;领域成为了商业竞争的关键战场。随着AI技术在各行业的广泛渗透&#xff0c;竞业禁止协议中涉及AI技能的限制条款愈发受到关注&#xff0c;其背后蕴含着复杂而关键的法律与商业…...

动态查找滚动容器(通用方案)

需求&#xff1a;点击置顶按钮返回页面的顶部&#xff0c;涉及产生滚动条的元素不唯一的情况&#xff0c;如果确定滚动元素的情况&#xff0c;直接元素.scrollTop 0 就实现置顶了 也是查了一段时间&#xff0c;这个方法很赞&#xff0c;递归寻找滚动元素 步骤 1&#xff1a;判…...

CD3MN 双相钢 2205 材质保温 V 型球阀:恒温工况下复杂介质控制的高性能之选-耀圣

CD3MN 双相钢 2205 材质保温 V 型球阀&#xff1a;恒温工况下复杂介质控制的高性能之选 在石油化工、沥青储运、食品加工等行业中&#xff0c;带颗粒高粘度介质与料浆的恒温输送面临着腐蚀、磨损、堵塞等多重挑战。普通阀门难以兼顾耐高温、强密封与耐腐蚀性&#xff0c;导致设…...

SpringBoot整合MyBatis-Plus:零XML实现高效CRUD

前言 作为一名开发者&#xff0c;数据库操作是我们日常工作中不可或缺的部分。传统的MyBatis虽然强大&#xff0c;但需要编写大量XML映射文件&#xff0c;这在快速开发的今天显得效率不足。MyBatis-Plus&#xff08;简称MP&#xff09;作为MyBatis的增强工具&#xff0c;在保留…...

python酒店健身俱乐部管理系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…...

嵌入式开发学习(第二阶段 C语言基础)

综合案例《猜拳游戏》 需求&#xff1a; 本游戏是一款单机游戏&#xff0c;人机交互 规则&#xff1a; 需要双方出拳&#xff1a;石头、剪刀、布赢&#xff1a; 石头→剪刀剪刀→ 布布 →石头 两边出拳相等输&#xff1a; … 实现&#xff1a; 选择对手玩家出拳对手出拳判断胜…...

Easysearch 时序数据的基于时间范围的合并策略

如果你正在使用 Easysearch 处理日志、监控指标、事件流或其他任何具有时间顺序的数据&#xff0c;那么你一定知道索引的性能和效率至关重要。Easysearch 底层的 Lucene Segment 合并是保持搜索和索引性能的关键后台任务。然而&#xff0c;你是否意识到&#xff0c;默认的合并策…...

【C++】深入理解 unordered 容器、布隆过滤器与分布式一致性哈希

【C】深入理解 unordered 容器、布隆过滤器与分布式一致性哈希 在日常开发中&#xff0c;无论是数据结构优化、缓存设计&#xff0c;还是分布式架构搭建&#xff0c;unordered_map、布隆过滤器和一致性哈希都是绕不开的关键工具。它们高效、轻量&#xff0c;在性能与扩展性方面…...

YOLOv1:开启实时目标检测的新篇章

YOLOv1&#xff1a;开启实时目标检测的新篇章 在深度学习目标检测领域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;系列算法无疑占据着重要地位。其中&#xff0c;YOLOv1作为开山之作&#xff0c;以其独特的设计理念和高效的检测速度&#xff0c;为后续的目标…...

Spring Boot 整合 Redis 实战

一、整合准备&#xff1a;环境与依赖​ 1. 技术栈说明​ Spring Boot 版本&#xff1a;3.1.2&#xff08;兼容 Java 17&#xff09;​ Redis 服务器&#xff1a;Redis 7.0&#xff08;本地部署或 Docker 容器&#xff09;​ Maven 依赖&#xff1a; <dependency><…...

Spring事务失效的全面剖析

文章目录 1. Spring事务基础1.1 什么是Spring事务1.2 Spring事务的实现原理1.3 `@Transactional`注解的主要属性1.4 使用Spring事务的简单示例2. Spring事务失效的常见场景及解决方案2.1 方法不是public的问题描述问题示例解决方案技术原理解释2.2 自调用问题(同一个类中的方法…...

Pytorch张量和损失函数

文章目录 张量张量类型张量例子使用概率分布创建张量正态分布创建张量 (torch.normal)正态分布创建张量示例标准正态分布创建张量标准正态分布创建张量示例均匀分布创建张量均匀分布创建张量示例 激活函数常见激活函数 损失函数(Pytorch API)L1范数损失函数均方误差损失函数交叉…...

消息~组件(群聊类型)ConcurrentHashMap发送

为什么选择ConcurrentHashMap&#xff1f; 在开发聊天应用时&#xff0c;我们需要存储和管理大量的聊天消息数据&#xff0c;这些数据会被多个线程频繁访问和修改。比如&#xff0c;当多个用户同时发送消息时&#xff0c;服务端需要同时处理这些消息的存储和查询。如果用普通的…...

FFmpeg多路节目流复用为一路包含多个节目的输出流

在音视频处理领域&#xff0c;将多个独立的节目流&#xff08;如不同频道的音视频内容&#xff09;合并为一个包含多个节目的输出流是常见需求。FFmpeg 作为功能强大的多媒体处理工具&#xff0c;提供了灵活的流复用能力&#xff0c;本文将通过具体案例解析如何使用 FFmpeg 实现…...