gpt4 book ai didi

python - 使用 PyGame 对存储在元组中的 pygame.Surface 进行位 block 传输

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:22 24 4
gpt4 key购买 nike

当尝试位 block 传输存储在元组中的图像时,出现以下错误:

Traceback (most recent call last):
File "/home/lyut/Projects/FruitMachine/test.py", line 40, in <module>
if __name__ == '__main__': main()
File "/home/lyut/Projects/FruitMachine/test.py", line 34, in main
draw_initial_gems()
File "/home/lyut/Projects/FruitMachine/test.py", line 11, in draw_initial_gems
pygame.Surface.blit(gems[0], (212, 100))
TypeError: argument 1 must be pygame.Surface, not tuple

我四处寻找类似的问题,但没有发现任何与此问题完全相关的问题。

这是我用来重现错误的源代码:

import pygame

gems = [
pygame.image.load("graphics/Gems/1.png"),
pygame.image.load("graphics/Gems/2.png"),
pygame.image.load("graphics/Gems/3.png"),
]


def draw_initial_gems():
pygame.Surface.blit(gems[0], (212, 100))
pygame.Surface.blit(gems[1], (340, 100))
pygame.Surface.blit(gems[2], (468, 100))


def main():
pygame.init()
clock = pygame.time.Clock()

print type(gems[1]) # returns: <type 'pygame.Surface'>

size = [800, 600]
screen = pygame.display.set_mode(size)
pygame.display.set_caption("test")

while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
return


screen.fill((255, 255, 255))

draw_initial_gems()

pygame.time.tick(30)

pygame.quit()

if __name__ == '__main__': main()

所以我的问题是:如何位 block 传输存储在元组中的图像?

最佳答案

这不是你使用方法的方式。你应该写:

gems[0].blit(screen, (x, y))

当您将该方法用作函数时,Pygame 似乎会变得非常困惑。 (通常您必须给出该方法所涉及的实例作为第一个参数。)

为什么需要屏幕?因为blit是 block 图像传输。它从一张图像转到另一张图像。

关于python - 使用 PyGame 对存储在元组中的 pygame.Surface 进行位 block 传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36013172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com