Python,用点符号混淆

时间:2017-03-19 22:46:43

标签: python python-3.x

我正在阅读Python Crash Course,并且有代码:

import pygame


class Ship():


    def __init__(self, screen):

        """Initialize the ship, and set its starting position."""

        self.screen = screen



        # Load the ship image, and get its rect.

        self.image = pygame.image.load('images/ship.bmp')

        self.rect = self.image.get_rect()

        self.screen_rect = screen.get_rect()


        # Start each new ship at the bottom center of the screen.

        self.rect.centerx = self.screen_rect.centerx

        self.rect.bottom = self.screen_rect.bottom

我很确定我会问基本的东西,但是我的大脑,以及我的谷歌技能也不是那么好。

  1. 这件事:self.rect = self.image.get_rect()。是不是get_rect()是pygame.Screen模块的一部分?如果是这样,不应该像pygame.Screen.get_rect()?

  2. 那样使用它
  3. self.rect.centerx = self.screen_rect.centerx Too.many.dots。是由get_rect()方法创建的rect类实例,而centerx是该实例的属性吗?此外,屏幕变量(或类实例?)的定义如下:screen = pygame.display.set_mode((1200,800))

  4. 提前致谢!

    编辑:感谢您的回答!

2 个答案:

答案 0 :(得分:2)

  1. 在PyGame中,get_rect()函数在表示某种表面的类中定义。在这种情况下,屏幕和图像都具有该方法,因为两个子类表面都是如此,因此它们都具有get_rect()方法。

  2. 此代码:self.rect.centerx = self.screen_rect.centerx可以翻译为将我自己的矩阵的centerx设置为我自己屏幕的centerx。换句话说,它将对象移动到屏幕的中心。 self关键字表示当前对象,每个点表示该对象的属性。

答案 1 :(得分:0)

get_rect() is a method of Surface。 Screen和Image都是Surface(它们实现了Surface接口)。屏幕只是特殊的Surface,它指的是实际映射到屏幕上某个位置的Surface,而其他像Surface这样的Surface是内存中的屏幕外对象,可以在不影响屏幕上的内容的情况下绘制或绘制。

self.rect是Rect instance,pygame使用它来跟踪Surface / s的位置和尺寸。