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

Pygame中将鼠标形状设置为图片2-2

3 编写主程序

在主程序中,首先创建屏幕并且完成一些准备工作,之后在while循环中不断更新sprite实例即可。

3.1 创建屏幕及准备工作

创建屏幕及准备工作的代码如图5所示。

图5 创建屏幕及准备工作

其中,第20行代码调用pygame.mouse模块中的set_visible()方法,将其参数设置为False,表示隐藏鼠标;第22行中的going表示程序运行的标志,该值是True时表示程序继续运行,是False时表示程序终止;第23行中定义了Mouse()类的实例mouse;第24行代码使用使用pygame.sprite模块中的RenderPlain()方法将mouse加入到Group中,实际上RenderPlain()方法与Group()方法的作用相同。

相关链接2 创建屏幕的详细介绍请参考

Pygame显示文字_棉猴的博客-CSDN博客

相关链接3 sprite与Group的详细介绍请参考

Pygame中Sprite类的使用6-1-CSDN博客

3.2 在循环中更新sprite实例

在循环中更新sprite实例的代码如图6所示。

图6 在循环中更细sprite实例

其中,第26行中的going是控制程序是否运行的标志,当用户点击屏幕右上角的退出按键后,根据28-30行的代码,将going设置为False,此时while循环结束,程序退出;第27行代码的作用是重绘屏幕背景,这样就能覆盖之前鼠标显示的图片;31-32行代码通过Group来更新和绘制sprite实例,即调用了Mouse类的update()方法和draw()方法进行更新和绘制;最后第33行将绘制好的图片在屏幕上显示出来。

4 完整代码

以上提到的完整代码如下所示。

import pygamedef load_image(name):image = pygame.image.load(name)image = image.convert()colorkey = image.get_at((0,0))image.set_colorkey(colorkey, pygame.RLEACCEL)return image, image.get_rect()class Mouse(pygame.sprite.Sprite):def __init__(self):pygame.sprite.Sprite.__init__(self)self.image, self.rect = load_image('qiu.png')def update(self):self.rect.topleft = pygame.mouse.get_pos()self.rect.move_ip((0,0))pygame.init()
screen = pygame.display.set_mode((1280, 480))
pygame.mouse.set_visible(False)
screen.fill((170, 238, 187))
going = True
mouse = Mouse()
allsprites = pygame.sprite.RenderPlain(mouse)while going:screen.fill((170, 238, 187))for event in pygame.event.get():if event.type == pygame.QUIT:going = Falseallsprites.update()allsprites.draw(screen)pygame.display.flip()
pygame.quit()

http://www.lryc.cn/news/190356.html

相关文章:

  • GPU 基础知识整理
  • stable diffusion API接口 + 扩展接口
  • MySQL数据库基本操作和完整性约束类型详解
  • unity2022版本 实现加减进度条
  • COCO数据集中图像的caption读取到txt文件
  • 再谈Java泛型
  • scss使用自定义函数实现单位像素随屏幕比例动态缩放
  • Django 静态自定义化配置
  • TensorFlow入门(十四、数据读取机制(1))
  • hyperf框架WebSocket 服务
  • 前端模块化
  • 如何使用Docker轻松构建和管理应用程序(一)
  • uniapp 获取地理位置(uni#getLocation和高德sdk获取中文地址)
  • openmp 通用核心 学习 2 数据环境—任务-内存模型
  • Linux有哪些指令
  • 图扑 HT for Web 风格属性手册教程
  • oracle 数据库删除序列
  • JAVA毕业设计098—基于Java+Springboot的在线教育课程视频(源码+数据库)
  • 如何在雷电模拟器上安装Magisk并加载movecert模块抓https包(二)
  • 基于web的酒店客房管理系统
  • linux查看系统信息
  • 蓝牙官网demo的记录
  • Linux相关概念及常见指令
  • CentOS 系统如何在防火墙开启端口
  • 2023年电工(初级)证考试题库及电工(初级)试题解析
  • vue拦截器是什么,如何使用
  • CSS 之 table 表格布局
  • 【Kotlin精简】第2章 集合
  • VSCODE+PHP8.2配置踩坑记录
  • React 状态管理 - Context API 前世今生(下)