Python 3.x TypeError:参数1必须是pygame.Surface,而不是元组
我是Stack Overflow的新用户,我的问题是如果我运行代码,它会给我错误,错误显示: DISPLAYSURF.blitcaimg,dogImg,catx,caty,dogx,dogy TypeError:参数1必须是pygame.Surface,而不是元组 如何解决此问题?非常感谢您的回答!谢谢 我试着用谷歌搜索,但他们的答案和我的不同Python 3.x TypeError:参数1必须是pygame.Surface,而不是元组,python-3.x,pygame-surface,Python 3.x,Pygame Surface,我是Stack Overflow的新用户,我的问题是如果我运行代码,它会给我错误,错误显示: DISPLAYSURF.blitcaimg,dogImg,catx,caty,dogx,dogy TypeError:参数1必须是pygame.Surface,而不是元组 如何解决此问题?非常感谢您的回答!谢谢 我试着用谷歌搜索,但他们的答案和我的不同 import pygame, sys from pygame.locals import * pygame.init() FPS = 30 fpsC
import pygame, sys
from pygame.locals import *
pygame.init()
FPS = 30
fpsClock = pygame.time.Clock()
DISPLAYSURF = pygame.display.set_mode((500, 500), 0, 32)
pygame.display.set_caption('Cat and Dog running.')
WHITE = (255, 255, 255)
catImg = pygame.image.load('cat.png')
dogImg = pygame.image.load('dog.png')
catx = 50
caty = 50
dogx = 25
dogy = 25
direction = 'right'
running = True
while running:
DISPLAYSURF.fill(WHITE)
if direction == 'right':
catx += 5
dogx += 5
if catx == 250 and dogx == 250:
direction = 'down'
elif direction == 'down':
caty += 5
dogy += 5
if caty == 225 and dogy == 225:
direction = 'left'
elif direction == 'left':
catx -= 5
dogx -= 5
if catx == 10 and dogx == 10:
direction = 'up'
elif direction == 'up':
caty -= 5
dogy -= 5
if caty == 10 and dogy == 10:
direction = 'right'
DISPLAYSURF.blit((catImg, dogImg), (catx, caty, dogx, dogy))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
fpsClock.tick(FPS)
您唯一的问题是,您正试图通过一次调用将两个图像快速发送到表面。将BLIT分为两个不同的调用将解决您的问题: 无法通过一个调用blit两个不同的图像 DISPLAYSURF.blitcaimg,dogImg,catx,caty,dogx,dogy 相反,使用两个电话 DISPLAYSURF.blitcaimg、catx、caty DISPLAYSURF.blitdoggim,dogx,dogy 此外,您可能需要调整输入的图像的大小。正如您所拥有的,您的代码将以其本机分辨率拍摄图像,这意味着它们可能太大或太小。您可以使用pygame.transform.scaleimg和imgSize这样做: 此外,您可能需要调整所用图像的大小: imgSize=300300 catImg=pygame.transform.scalepygame.image.load'cat.png',imgSize dogImg=pygame.transform.scalepygame.image.load'dog.png',imgSize 资料来源: