self.x self.y以及self.rect.x,self.rect.y理解问题

import pygame


class Ship:
    def __init__(self, ai_game):
        self.screen = ai_game.screen
        self.screen_rect = ai_game.screen.get_rect()

        self.image = pygame.image.load('images/Ship_right.bmp')  # 加载飞船图片
        self.rect = self.image.get_rect()

        self.rect.midbottom = self.screen_rect.midbottom

        self.settings = ai_game.settings
        self.x = float(self.rect.x)

        # 移动标志
        self.moving_left = False
        self.moving_right = False
        self.moving_up = False
        self.moving_down = False

    def update(self):
        """根据移动标志移动飞船"""
        if self.moving_right and self.rect.right < self.screen_rect.right:
            self.x += self.settings.ship_speed
        if self.moving_left and self.rect.left > 0:
            self.x -= self.settings.ship_speed

        self.rect.x = self.x

    def blitme(self):
        """构建飞船图像"""
        self.screen.blit(self.image, self.rect)





import pygame
from pygame.sprite import Sprite


class Enemy(Sprite):
    def __init__(self, game):
        super().__init__()

        self.screen = game.screen
        self.screen_rect = game.screen.get_rect()

        self.image = pygame.image.load('images/enemy_ship.bmp')
        self.rect = self.image.get_rect()

        self.rect.x = self.rect.width
        self.rect.y = self.rect.height

        self.x = float(self.rect.x)

一直不清楚self.x,self.rect.x到底指的是什么,是如何让矩形移动的
还有就是第二个代码块中的
self.rect.x = self.rect.width
self.rect.y = self.rect.height
说是将矩形放于左上角,但不知道原理是什么
求解,谢谢

常用的Rect参数形式是:pygame.Rect(left, top, width, height)

rect.right:矩形对象的右边缘,即右上顶点对应的x坐标(左上顶点的横坐标+矩形对象的长)。
rect.left:矩形对象的左边缘,即左上顶点对应的x坐标。
rect.top:矩形对象的上边缘,即左上顶点对应的y坐标。
rect.bottom:矩形对象的下边缘,即左下顶点对应的y坐标(左上顶点的纵坐标+矩形对象的高)。
rect.x:矩形对象的左边缘,即左下顶点对应的 x坐标。
rect.y:矩形对象的上边缘,即左上顶点对应的 y坐标。

因此:

rect.x = rect.bottom = rect.top + rect.height
rect.y = rect.top
rect.right = rect.left + rect.width

就是把x坐标设置为它的长,y坐标设置为它的宽,实现空了一个Enemy的效果:

# ----------
# ----------   ← height
# ----------
#     ↑      ----------
#   width    ----------    ← Enemy
#            ----------