Python初学者です。参考書にて基礎から学びつつ、応用としてpygameを使った学習を行っていますが、メインモジュール内でShipクラスのインスタンス生成時にShip()の引数として、何故selfを指定しているのか分からず。これまで進めてきた参考書にも記載は無く、他にも調べてみても(私の調べ方の問題もあると思っています。。)分からず。
教えていただきたいことは、引数を指定せずインスタンス生成した場合(self.settings = Settings())と、selfを引数にインスタンス生成した場合(self.ship = Ship(self))の違いについてご教授いただければ幸いです。
メインモジュール
import sys import pygame from settings import Settings from ship import Ship class AlienInvasion: def __init__(self): pygame.init() self.settings = Settings() self.screen = pygame.display.set_mode( (self.settings.screen_width, self.settings.screen_height)) pygame.display.set_caption("Alien Invasion") self.ship = Ship(self) def run_game(self): while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() self.screen.fill(self.settings.bg_color) self.ship.blitme() pygame.display.flip() if __name__ == '__main__': ai = AlienInvasion() ai.run_game()
settings.pyモジュール
class Settings: def __init__(self): self.screen_width = 900 self.screen_height = 600 self.bg_color = (230, 230, 230)
ship.pyモジュール
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.bmp') self.rect = self.image.get_rect() self.rect.midbottom = self.screen_rect.midbottom def blitme(self): self.screen.blit(self.image, self.rect)
回答1件
あなたの回答
tips
プレビュー