Pygame 没有 blitting 图像,而是吐出类型错误
Posted
技术标签:
【中文标题】Pygame 没有 blitting 图像,而是吐出类型错误【英文标题】:Pygame not blitting image,instead spitting out type error 【发布时间】:2022-01-02 00:33:02 【问题描述】:所以我在网上看这个关于 pygame 的教程,因为我对 pygame 非常陌生。所以他所做的就是创建一个 player() 函数,然后对其进行 blit。所以我也做了同样的事情。对他来说,他得到了完美的 blitted,但对我来说,我得到了一个类型错误。他的代码和我的代码唯一不同的是窗口的尺寸和玩家类别和颜色。我尝试在堆栈溢出中搜索它,但唯一相关的问题没有得到解答。不知道出了什么问题。
完全错误:
/home/Command Blocks/Desktop/venv/bin/python "/home/CommandBlocks/Desktop/CLASS_/Studies/Computer/python/practice/space shooter/main.py"
pygame 2.0.2 (SDL 2.0.16, Python 3.9.5)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "/home/Command Blocks/Desktop/CLASS_/Studies/Computer/python/practice/space shooter/main.py", line 33, in <module>
player()
File "/home/Command Blocks/Desktop/CLASS_/Studies/Computer/python/practice/space shooter/main.py", line 20, in player
screen.blit(player, (playerX, playerY))
TypeError: argument 1 must be pygame.Surface, not function
Process finished with exit code 1
完整代码:
import pygame
#Initialize pygame module
pygame.init()
#Create Screen
screen = pygame.display.set_mode((1000, 600))
#Title and Icon
pygame.display.set_caption("Jungle Invader")
icon = pygame.image.load('fox-sitting.png')
pygame.display.set_icon(icon)
# Player
player = pygame.image.load('cat.png')
playerX = 300
playerY = 500
def player():
screen.blit(player, (playerX, playerY))
#Main loop
running = True
while running:
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((244, 232, 255))
player()
【问题讨论】:
您使用了两次名称player
。它是由pygame.image.load('cat.png')
返回的表面和闪烁到屏幕的函数。
...重命名player
函数:drawPlayer
对不起,我忘了说播放器变量名的变化,教程人用了一个大名字,所以我把它缩短了。顺便谢谢@Rabbid76
和@ChrisOram。
【参考方案1】:
您已经使用了两次名称播放器。是pygame.image.load('cat.png')
返回的表面,也是blits
给屏幕的函数。将player
函数重命名为drawPlayer
【讨论】:
好吧,我几周前就澄清了,但你的答案仍然是正确的。以上是关于Pygame 没有 blitting 图像,而是吐出类型错误的主要内容,如果未能解决你的问题,请参考以下文章