鱼C论坛

 找回密码
 立即注册
查看: 4594|回复: 45

[已解决]Pygame

[复制链接]
发表于 2023-5-13 14:39:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> from pygame import *
pygame 2.3.0 (SDL 2.24.2, Python 3.9.9)
Hello from the pygame community. (提示不能发表链接,本来这里是pygame的官方文档链接)
>>> screen = display.set_mode((640, 480))
>>> font = pygame.font.SysFont('arial', 10)
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    font = pygame.font.SysFont('arial', 10)
NameError: name 'pygame' is not defined
>>> font = font.SysFont('arial', 10)
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    font = font.SysFont('arial', 10)
  File "D:\Python\lib\site-packages\pygame\sysfont.py", line 459, in SysFont
    return constructor(fontname, size, set_bold, set_italic)
  File "D:\Python\lib\site-packages\pygame\sysfont.py", line 377, in font_constructor
    font = Font(fontpath, size)
pygame.error: font not initialized
最佳答案
2023-5-13 15:08:47
import pygame

pygame.init()

# 创建屏幕窗口并设置标题
screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption("白色窗口")

# 将屏幕填充为白色
screen.fill((255, 255, 255))

# 更新窗口显示的内容
pygame.display.flip()

# 循环监听事件
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # 监听到窗口关闭事件后退出循环
            running = False

# 退出pygame
pygame.quit()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-13 14:39:29 | 显示全部楼层
缺少了pygame.init()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 14:39:32 | 显示全部楼层
这段代码中出现了两个错误。第一个错误是在导入pygame时出现了问题,因此无法使用pygame模块中的函数和方法。您需要确保已正确安装pygame并正确导入它。第二个错误是“pygame.error: font not initialized”,这是因为在使用pygame的字体之前需要初始化pygame的字体模块。

以下是正确的代码:
import pygamepygame.init() # 初始化pygamescreen = pygame.display.set_mode((640, 480))font = pygame.font.SysFont('arial', 10)
在这个例子中,我们首先导入了pygame模块并使用 pygame.init() 初始化了pygame。然后我们创建了一个640x480的窗口,最后创建了一个arial字体大小为10的字体对象。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 14:40:03 | 显示全部楼层
isdkz 发表于 2023-5-13 14:39
这段代码中出现了两个错误。第一个错误是在导入pygame时出现了问题,因此无法使用pygame模块中的函数和方法 ...

耶!比你快3秒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-13 14:41:50 | 显示全部楼层

您好,请问为什么?
>>> from pygame import *
pygame 2.3.0 (SDL 2.24.2, Python 3.9.9)
Hello from the pygame community. xxxxxxxxxxxxxxxx
>>> pygame.init()
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    pygame.init()
NameError: name 'pygame' is not defined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 14:43:29 | 显示全部楼层
21kwimpizswmp 发表于 2023-5-13 14:41
您好,请问为什么?

你是from pygame import *的话就应该init(),一般情况下pygame用的都是import pygame,因为事件循环里的event与pygame.event名字重复

这只是一个惯例,代表大家都喜欢这么写,也不是强制
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-13 14:44:58 | 显示全部楼层
歌者文明清理员 发表于 2023-5-13 14:43
你是from pygame import *的话就应该init(),一般情况下pygame用的都是import pygame,因为事件循环里的e ...

谢谢!那请问一个完整的pygame程序怎么写?
看到网上有一些代码没用pyagme.init()
还有就是screen=display.set_mode()为什么不报错?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 14:45:49 | 显示全部楼层
21kwimpizswmp 发表于 2023-5-13 14:44
谢谢!那请问一个完整的pygame程序怎么写?
看到网上有一些代码没用pyagme.init()
还有就是screen=disp ...

有些东西是一定得init才能用的,有些不是
网上的代码没init是他的代码不规范
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 14:46:59 | 显示全部楼层
你好!感谢你的提问。

以下是一个示例的完整Pygame程序,它打开一个窗口并展示一张图片:
import pygame

# 初始化 Pygame 库 
pygame.init()

# 创建一个窗口大小为480x320像素的屏幕
screen = pygame.display.set_mode((480, 320))

# 载入图片
image = pygame.image.load("image.png")

# 将图片绘制到屏幕上
screen.blit(image, (0, 0))

# 刷新屏幕,更新显示内容
pygame.display.update()

# 等待用户关闭窗口
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            break
在这个程序中,我们首先使用 `pygame.init()` 函数初始化 Pygame 库。然后,我们创建了一个屏幕对象,这个屏幕对象可以理解为一个窗口,我们使用 `pygame.display.set_mode()` 函数来创建这个窗口,并指定了窗口大小(在本例中是480x320像素)。接下来,我们载入一张名字为"image.png"的图片,使用 `pygame.image.load()` 函数。最后,我们将这个图片绘制到屏幕上,调用`screen.blit()`函数,接受两个参数,第一个是要绘制的表面(即我们加载的图像),第二个是目标位置的坐标。我们使用`(0, 0)`表示这个图片放在窗口的左上角,接着,我们使用 `pygame.display.update()` 函数刷新屏幕来更新显示内容。最后,我们使用一个while循环等待用户关闭窗口 ,如果发现了以 `QUIT` 为type的事件,就调用 `pygame.quit()` 来退出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-13 14:47:48 | 显示全部楼层
isdkz 发表于 2023-5-13 14:39
这段代码中出现了两个错误。第一个错误是在导入pygame时出现了问题,因此无法使用pygame模块中的函数和方法 ...

抱歉刚才没看见您的回答。请问有没有一个完整的pygame例子,就是将屏幕窗口变成白色(刚才我的代码运行起来是黑色),然后监听关闭窗口事件(网上代码都是sys.exit(),,,,请问有没有其他的写法?pygame官网的写法呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-13 14:49:01 | 显示全部楼层
sfqxx 发表于 2023-5-13 14:46
你好!感谢你的提问。

以下是一个示例的完整Pygame程序,它打开一个窗口并展示一张图片:
Python 3.9.9 (tags/v3.9.9:ccb0e6a, Nov 15 2021, 18:08:50) [MSC v.1929 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.12.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:
   ...: import pygame
   ...:
   ...: # 初始化 Pygame 库
   ...: pygame.init()
   ...:
   ...: # 创建一个窗口大小为480x320像素的屏幕
   ...: screen = pygame.display.set_mode((480, 320))
   ...:
   ...: # 载入图片
   ...: image = pygame.image.load("image.png")
   ...:
   ...: # 将图片绘制到屏幕上
   ...: screen.blit(image, (0, 0))
   ...:
   ...: # 刷新屏幕,更新显示内容
   ...: pygame.display.update()
   ...:
   ...: # 等待用户关闭窗口
   ...: while True:
   ...:     for event in pygame.event.get():
   ...:         if event.type == pygame.QUIT:
   ...:             pygame.quit()
   ...:             break
   ...:
pygame 2.3.0 (SDL 2.24.2, Python 3.9.9)
Hello from the pygame community. sssssssssssssssssssss
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[1], line 10
      7 screen = pygame.display.set_mode((480, 320))
      9 # 载入图片
---> 10 image = pygame.image.load("image.png")
     12 # 将图片绘制到屏幕上
     13 screen.blit(image, (0, 0))

FileNotFoundError: No file 'image.png' found in working directory 'C:\Users\bruce'.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 14:49:14 | 显示全部楼层
21kwimpizswmp 发表于 2023-5-13 14:47
抱歉刚才没看见您的回答。请问有没有一个完整的pygame例子,就是将屏幕窗口变成白色(刚才我的代码运行起 ...

以下是一个完整的pyame例子,将屏幕窗口变成白色,并监听关闭窗口事件。代码中使用 `pygame.display.set_caption()` 方法来命名窗口标题,使用 `pygame.display.flip()` 来更新显示的内容。
import pygame

pygame.init()

# 创建屏幕窗口并设置标题
screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption("白色窗口")

# 将屏幕填充为白色
screen.fill((255, 255, 255))

# 更新窗口显示的内容
pygame.display.flip()

# 循环监听事件
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # 监听到窗口关闭事件后退出循环
            running = False

# 退出pygame
pygame.quit()

在监听关闭窗口事件时,可以使用 `pygame.QUIT` 事件类型。当用户尝试关闭窗口时,系统会创建这个事件。因此,只要监听到这个事件就可以退出游戏、释放资源。

值得一提的是,当调用 `pygame.quit()` 时,pygame会释放占用的系统资源。必须在结束游戏前,调用这个函数释放相关资源。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-13 14:50:03 | 显示全部楼层
sfqxx 发表于 2023-5-13 14:46
你好!感谢你的提问。

以下是一个示例的完整Pygame程序,它打开一个窗口并展示一张图片:

看代码信息是没有image.png,加上后,窗口可以关闭,但是循环似乎无法退出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 14:50:28 | 显示全部楼层
sfqxx 发表于 2023-5-13 14:49
以下是一个完整的pyame例子,将屏幕窗口变成白色,并监听关闭窗口事件。代码中使用 `pygame.display.set_ ...

《我慢了一步的后果》
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 14:50:37 | 显示全部楼层


不要用交互模式运行这段代码,要用脚本式

File->New File

至于图片报错,是因为您的电脑没有该图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-13 14:51:54 | 显示全部楼层
sfqxx 发表于 2023-5-13 14:50
不要用交互模式运行这段代码,要用脚本式

File->New File

我用的脚本式也一样
翻了翻求助平台,发现很多人都是多行一起在idle shell里的
我在ipython(pip install)里很正常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 14:51:56 | 显示全部楼层
21kwimpizswmp 发表于 2023-5-13 14:50
看代码信息是没有image.png,加上后,窗口可以关闭,但是循环似乎无法退出

看看这段代码
import pygame

pygame.init()

# 创建屏幕窗口并设置标题
screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption("白色窗口")

# 将屏幕填充为白色
screen.fill((255, 255, 255))

# 更新窗口显示的内容
pygame.display.flip()

# 循环监听事件
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # 监听到窗口关闭事件后退出循环
            running = False

# 退出pygame
pygame.quit()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 14:52:29 | 显示全部楼层
21kwimpizswmp 发表于 2023-5-13 14:51
我用的脚本式也一样
翻了翻求助平台,发现很多人都是多行一起在idle shell里的
我在ipython(pip insta ...

截个图?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-13 14:53:03 | 显示全部楼层

截好了,哪里发图片?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-13 14:53:29 | 显示全部楼层
sfqxx 发表于 2023-5-13 14:50
不要用交互模式运行这段代码,要用脚本式

File->New File

那你哪来的image.png

点评

这个图片是个例子  发表于 2023-5-13 14:54
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 10:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表