首页 > 解决方案 > TypeError:无效的矩形赋值,怎么了?

问题描述

我尝试用宇宙飞船的精灵构建一个游戏,但是当我运行代码时,我得到一个错误 - TypeError: invalid rect assignment。我不明白我做错了什么。请帮帮我。

import pygame

pygame.init()
size = (600, 600)
Spaceship_position = [260, 510]

screen = pygame.display.set_mode(size)
pygame.display.set_caption("Spaceships")
icon = pygame.image.load("D:\\Yahav\\Cyber\\Cyber_Images\\icon.png")
pygame.display.set_icon(icon)
screen.fill((0, 0, 0))
pygame.display.flip()


class Spaceship(pygame.sprite.Sprite):

    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("D:\\Yahav\\Cyber\\Cyber_Images\\spaceship.png")
        self.rect = self.image.get_rect()
        self.rect.bottom = (100, 100)


all_sprites = pygame.sprite.Group()
spaceship = Spaceship()
all_sprites.add(spaceship)


def main():
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
        all_sprites.update()
        all_sprites.draw(screen)


main()

我需要做什么?

标签: pythonpygame

解决方案


问题是由线路引起的

self.rect.bottom = (100, 100)

rect.bottom是矩形的底部。因此,您为虚拟属性分配了一个值rect.bottom

self.rect.bottom = 100

如果要设置左下角,则必须分配一个元组:

self.rect.bottomleft = (100, 100)

pygame.Rect

Rect 对象有几个可用于移动和对齐 Rect 的虚拟属性:

x,y
top, left, bottom, right
topleft, bottomleft, topright, bottomright
midtop, midleft, midbottom, midright
center, centerx, centery
size, width, height
w,h

所有这些属性都可以分配给:

rect1.right = 10
rect2.center = (20,30)

推荐阅读