pygame入门教程-基础篇

这篇具有很好参考价值的文章主要介绍了pygame入门教程-基础篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 画布surface

我们先启动一个窗口

import pygame
pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 设置窗口的大小
pygame.display.set_caption("这是一个给我们画画用的窗口") # 设置窗口的title
pygame.quit()

我们通过screen = pygame.display.set_mode((800,600)) 设置了一个窗口,并且返回了一个screen的变量,这个变量的类型是pygame.Surface,也就是一个画布。我们基于这个画布来作画,例如加载一个图片到这个画布上,或者绘制一个圆。

2. 绘制一个圆

我们发现这个窗口一闪而过,什么也没看清。因为加载完变量就释放掉了,我们加一个循环,让其等待10s。

import pygame
import time

pygame.init()
screen = pygame.display.set_mode((800,600))

pygame.display.set_caption("这是一个给我们画画用的窗口")
pygame.draw.circle(screen,(255,0,0),(200,300),20)

for _ in range(10):
    time.sleep(1)

pygame.quit()

可以看到过了10s这个黑框才关闭掉,由于sleep和绘制都在同一个线程中,发现页面会处于卡死状态。同时发现调用pygame.draw.circle绘制的圆也没有出现,这是因为我们没有调用绘制函数。

pygame.draw.circle(Surface, color, pos , raduis, width)

通常情况下,我们会绘制各种各样的图形,如果画一个刷新一个就会导致效率很低,所以一般情况下都是把所有的东西绘制完成之后再统一进行刷新。

import pygame
import time

pygame.init()
screen = pygame.display.set_mode((800,600))

pygame.display.set_caption("这是一个给我们画画用的窗口")
pygame.draw.circle(screen,(255,0,0),(200,300),20)
pygame.draw.circle(screen,(255,0,0),(300,200),20)
pygame.display.update()

for _ in range(10):
    time.sleep(1)


pygame.quit()

3. 绘制变化大小的圆

现在我们想要绘制一个圆,这个圆的大小可以变化,这很简单,只要不断改变圆的半径就可以了。圆的半径变大了,也就是说绘制的内容发生了变化,因此我们需要更新画布

import pygame
import time

pygame.init()
screen = pygame.display.set_mode((800,600))
pygame.display.set_caption("这是一个给我们画画用的窗口")

r = 20
for _ in range(10):
    time.sleep(1)
    pygame.draw.circle(screen,(255,0,0),(200,300),r)
    r += 10
	pygame.display.update()

pygame.quit()

等了10s又退出来,反正我们要一直现实,就改成死循环,你会发现圆是变大了,但是程序却退不出来了

r = 20
while True:
    pygame.draw.circle(screen,(255,0,0),(200,300),r)
    r += 1
    pygame.display.update()

pygame.quit() # 由于死循环,所以执行不到这一步

4. 事件

pygame提供了事件来与用户进行交互,例如点击鼠标,打字等等。所有的事件都会放到pygame的事件队列中,我们只要不断读取这个队列就可以了

r = 20
while True:
    for event in pygame.event.get():  # 遍历事件
        if event.type == pygame.QUIT:  # 退出事件
            pygame.quit()
    pygame.draw.circle(screen,(255,0,0),(200,300),r)
    r += 1
    pygame.display.update()

当我们发现有关闭事件的时候就退出pygame。但是通常不会这么写,直接退出pygame会导致我们有些资源可能来不及释放,所以通常会写成

r = 20
going = True
while going:
    for event in pygame.event.get():  # 遍历事件
        if event.type == pygame.QUIT:  # 退出事件
            going=False
    pygame.draw.circle(screen,(255,0,0),(200,300),r)
    r += 1
    pygame.display.update()
pygame.quit()

5. 刷新率

我们发现这个圆变得太快了,加一个延时缓一缓,例如每隔0.1s在进行刷新

r = 20
going = True
while going:
    for event in pygame.event.get():  # 遍历事件
        if event.type == pygame.QUIT:  # 退出事件
            going=False
    pygame.draw.circle(screen,(255,0,0),(200,300),r)
    r += 1
    pygame.display.update()
    time.sleep(0.1)
pygame.quit()

pygame给我们提供了一个clock对象可以用来控制刷新的频率文章来源地址https://www.toymoban.com/news/detail-402434.html

clock = pygame.time.Clock() # 创建一个clock对象
r = 20
going = True
while going:
    for event in pygame.event.get():  # 遍历事件
        if event.type == pygame.QUIT:  # 退出事件
            going=False
    pygame.draw.circle(screen,(255,0,0),(200,300),r)
    r += 1
    pygame.display.update()
    clock.tick(10) # 刷新频率为10,也就是1s刷新10次,每个100ms刷新一次
pygame.quit()

到了这里,关于pygame入门教程-基础篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 很合适新手入门使用的Python游戏开发包pygame实例教程-01[开发环境配置与第一个界面]

    我们假定你已经安装好了我们开发python程序的sublime text,如果不知道怎么安装的可以参照我前面的博文。这里只需要解决的是配置好Pygame的问题。本篇博文主要解决开发环境配置以及第一个游戏界面的显示问题。 文章原出处: https://blog.csdn.net/haigear/article/details/130173836 没有

    2024年01月25日
    浏览(94)
  • Python基础入门教程(上)

    目录 一、你好Python 1.1、Python安装 win版 Linux版 1.2、第一个Python程序 二、Python基本语法 2.1、字面量 2.2、注释 2.3、变量 2.4、数据类型 type()函数 字符串类型的不同定义方式 2.5、数据类型转换 ​编辑 2.6、标识符 2.7、运算符 2.8、字符串扩展 字符串的三种定义方式 字符串转义

    2024年02月15日
    浏览(42)
  • 【瑞萨零基础入门】瑞萨MCU零基础入门系列教程(更新连载中)

    得益于瑞萨强大的MCU、强大的软件开发工具(e² studio),也得益于瑞萨和RA生态工作室提供的支持,我们团队编写了《ARM嵌入式系统中面向对象的模块编程方法》,全书37章,将近500页: 讲解面向对象编程在单片机开发中的使用 结合FSP软件包实例分析外设驱动 讲解如何使用RASC配

    2024年02月09日
    浏览(42)
  • WPF入门教程系列一——基础

    一、 前言            最近在学习WPF,学习WPF首先上的是微软的MSDN,然后再搜索了一下网络有关WPF的学习资料。为了温故而知新把学习过程记录下来,以备后查。这篇主要讲WPF的开发基础,介绍了如何使用Visual Studio 2013创建一个WPF应用程序。 首先说一下学习WPF的基础知

    2024年02月07日
    浏览(51)
  • R语言基础入门教程

    一、引言 R语言是一种用于统计计算和图形的编程语言,由Ross Ihaka和Robert Gentleman于1993年创建。由于其强大的数据处理、统计分析及可视化功能,R语言在数据科学、机器学习、生物信息学等领域得到了广泛应用。本教程将介绍R语言的基础知识,帮助初学者快速入门。 二、R语

    2024年04月10日
    浏览(40)
  • 网络安全入门教程(非常详细)从零基础入门到精通

    1.入行网络安全这是一条坚持的道路,三分钟的热情可以放弃往下看了。 2.多练多想,不要离开了教程什么都不会了,最好看完教程自己独立完成技术方面的开发。 3.有时多百度,我们往往都遇不到好心的大神,谁会无聊天天给你做解答。 4.遇到实在搞不懂的,可以先放放,

    2024年01月18日
    浏览(50)
  • 网络安全入门教程(非常详细)从零基础入门到精通!

    网络安全是一个庞大而不断发展的领域,它包含多个专业领域,如网络防御、网络攻击、数据加密等。介绍网络安全的基本概念、技术和工具,逐步深入,帮助您成为一名合格的网络安全从业人员。 1.计算机基础知识 了解了计算机的硬件、软件、操作系统和网络结构等基础知

    2024年04月13日
    浏览(60)
  • HTML入门零基础教程(三)

    嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 目录 一、  VSCode工具生成骨架标签新增代码 1.文档类型声明标签 2.lang语言种类 3.charset字符集 二、HTML常用标签 1.标签语义

    2024年02月19日
    浏览(35)
  • PHP入门基础教程 - 专栏导读

    🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于PHP专栏:PHP入门基础教程。 欢迎来到 PHP 入门基础教程!本专栏将带领你

    2024年02月12日
    浏览(36)
  • stable diffusion 零基础入门教程

    一、前言 Midjourney 生成的图片很难精准的控制,随机性很高,需要大量的跑图,但Stable Diffusion可以根据模型较精准的控制。 SD 效果图展示: 二、Stable Diffusion 介绍 Stable Diffusion 是一款基于人工智能技术开发的绘画软件,它可以帮助艺术家和设计师快速创建高品质的数字艺术

    2024年03月10日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包