码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 完整代码

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

    1. import pygame
    2. def load_image(name):
    3. image = pygame.image.load(name)
    4. image = image.convert()
    5. colorkey = image.get_at((0,0))
    6. image.set_colorkey(colorkey, pygame.RLEACCEL)
    7. return image, image.get_rect()
    8. class Mouse(pygame.sprite.Sprite):
    9. def __init__(self):
    10. pygame.sprite.Sprite.__init__(self)
    11. self.image, self.rect = load_image('qiu.png')
    12. def update(self):
    13. self.rect.topleft = pygame.mouse.get_pos()
    14. self.rect.move_ip((0,0))
    15. pygame.init()
    16. screen = pygame.display.set_mode((1280, 480))
    17. pygame.mouse.set_visible(False)
    18. screen.fill((170, 238, 187))
    19. going = True
    20. mouse = Mouse()
    21. allsprites = pygame.sprite.RenderPlain(mouse)
    22. while going:
    23. screen.fill((170, 238, 187))
    24. for event in pygame.event.get():
    25. if event.type == pygame.QUIT:
    26. going = False
    27. allsprites.update()
    28. allsprites.draw(screen)
    29. pygame.display.flip()
    30. pygame.quit()

  • 相关阅读:
    linux纯离线安装whl包,下载tensorboard
    RESTful API — 规范概念、URI 设计、映射 HTTP 方法、API 版本管理、API 命名、统一分页、过滤、排序、 搜索功能
    .NET 表达式目录树
    回顾方法的定义
    html中的固定定位的用法
    114. 如何通过单步调试的方式找到引起 Fiori Launchpad 路由错误的原因
    【论文解读系列】NER方向:FGN (2020)
    hyper-v虚拟机的基本使用
    留存怎么算?
    Notepad++ ,json 、xml 格式化插件安装不了 和 github 网站访问不了 最佳解决方案
  • 原文地址:https://blog.csdn.net/hou09tian/article/details/133797155
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号