我正在阅读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
我很确定我会问基本的东西,但是我的大脑,以及我的谷歌技能也不是那么好。
这件事:self.rect = self.image.get_rect()。是不是get_rect()是pygame.Screen模块的一部分?如果是这样,不应该像pygame.Screen.get_rect()?
self.rect.centerx = self.screen_rect.centerx Too.many.dots。是由get_rect()方法创建的rect类实例,而centerx是该实例的属性吗?此外,屏幕变量(或类实例?)的定义如下:screen = pygame.display.set_mode((1200,800))
提前致谢!
编辑:感谢您的回答!
答案 0 :(得分:2)
在PyGame中,get_rect()函数在表示某种表面的类中定义。在这种情况下,屏幕和图像都具有该方法,因为两个子类表面都是如此,因此它们都具有get_rect()方法。
此代码: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的位置和尺寸。