在 python 中获取'TypeError: invalid destination position for blit'



我是python的新手,无法解决这个问题。尝试运行游戏时,出现此错误:

Traceback (most recent call last):
File "C:Userssoni801DocumentsGitHubvolleyballPlayer.py", line 15, in draw
window.blit(pygame.image.load("player.png"), 100, 100)
TypeError: invalid destination position for blit

我知道其他人已经完成了非常相似的代码而没有收到此错误,我不知道为什么会出现这个。

我该如何解决这个问题?我尝试从字面上更改每个变量,但没有运气。任何帮助表示赞赏。这是我的代码:

Game.py

import pygame
from Player import Player
running = True
clock = pygame.time.Clock()
# Images
background = pygame.image.load("bg.png")
# Global variables
WIDTH = 800
HEIGHT = 600
# Player variables
player_size = 70
player_pos = [(WIDTH / 4) - (player_size / 2), HEIGHT - player_size]
player_speed = 5
jump_height = 22
jumping = False
jump_time = -jump_height
window = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Volleyball")
player = Player(player_pos, player_size, player_speed, jump_height, pygame.image.load("player.png"))

def tick():
player.movement()

def render():
window.blit(background, (0, 0))
player.draw(window)
pygame.display.update()

if __name__ == '__main__':
while running:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
tick()
render()
pygame.quit()

Player.py

import pygame

class Player(object):
def __init__(self, pos, size, speed, jump_height, image):
self.jump_height = jump_height
self.speed = speed
self.pos = pos
self.image = image
self.jumping = False
self.jump_time = -jump_height
def draw(self, window):
window.blit(self.image, self.pos[0], self.pos[1])
def movement(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_a] and self.pos[0] > 0:
self.pos[0] -= self.speed
if keys[pygame.K_d] and self.pos[0] < 800 - self.pos:
self.pos[0] += self.speed
if not self.jumping:
if keys[pygame.K_SPACE]:
self.jumping = True
else:
if self.jump_time <= self.jump_height:
self.pos[1] += self.jump_time
self.jump_time += 1
else:
self.jumping = False
self.jump_time = -self.jump_height

我还没有测试过,但我认为你只需要在你的绘制函数中元组 pos:

不是这个:

def draw(self, window):
window.blit(self.image, self.pos[0], self.pos[1])

这:

def draw(self, window):
window.blit(self.image, (self.pos[0], self.pos[1]))

最新更新