2016-03-21 39 views
1

私はPythonが初めてで、Eric Matthesの "Python crash course"で学習を始めました。私はPygameの章の初めですが、コードに従っていますが、ロードされた画像は常に傷んで見えますが、理由はわかりません。コードは本のものです。最初のファイル:Python Pygameで画像が正しく表示されない

import pygame 
    class Ship(): 
     def __init__(self, screen): 
      """Initialize the ship and set its starting position.""" 

    # Load the ship image and get its rect. 
      self.image = pygame.image.load('ship.bmp') 
      self.screen = screen 
      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 
     def blitme(self): 
      self.screen.blit(self.image, self.rect) 

セカンドファイル:

import sys 
    import pygame 
    from settings import Settings 
    from ship import Ship 
    def run_game(): 
     # Initialize game and create a screen object. 
     pygame.init() 
     ai_settings = Settings() 
     screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height)) 
     pygame.display.set_caption("Alien Invasion") 
     ship = Ship(screen) 
     bg_color = (230, 230, 230) 

     # Start the main loop for the game. 
     while True: 
      # Watch for keyboard and mouse events. 
      for event in pygame.event.get(): 
       if event.type == pygame.QUIT: 
        sys.exit()  
      # Make the most recently drawn screen visible. 

      screen.fill(ai_settings.bg_color) 
      ship.blitme() 


      pygame.display.flip() 


    run_game() 

設定ファイル:

class Settings(): 
     """A class to store all settings for Alien Invasion.""" 
     def __init__(self): 
      """Initialize the game's settings.""" 
      # Screen settings 
      self.screen_width = 800 
      self.screen_height = 600 
      self.bg_color = (230, 230, 230) 

そのような私のbmpの表情:

enter image description here

私はDを追加しようとしましたifferentイメージ、ない運:

enter image description here

私はそれを解決することができますか?

+0

イメージに 'convert()'を適用する必要はありませんか? –

+0

私は知らない、その本のコードにそのようなものはありません。コードを変更するにはどうすればよいですか? – migari

+0

'self.image = pygame.image.load( 'ship.bmp')。convert()' - 最後に 'convert()'を試してください –

答えて

1

あなたはMac上で、比較的新しいバージョンのSDLを使用しているとします。問題はあなたのコードではなく、新しいバージョンのSDLにMac OSのバグがあります。

解決するには、SDLをバージョン1.2より前のバージョンにダウングレードするか、バージョンを忘れたか、正確なバージョンを忘れたか、別のオペレーティングシステムで作業する必要があります。

これは非常に面倒です。私は、バーチャルボックスをインストールして、私のMacにPygameをコードできるようにLinuxを走らせました!

+0

ありがとう、私はそれだと思うし、私はそのコードを修正しようとしている年齢の私の頭を傷つける可能性があります。ここでエルキャプテンとマック。 – migari

+0

また、エルキャピタン!あなたに何か他のものに切り替えてもらえたら教えてください。ここに私のソースbtwです。残念ながら、私はSDLをダウングレードすることができませんでしたので、100%はその問題を言うことはできませんが、それは可能性が高いです。 http://stackoverflow.com/questions/33582204/images-distorted-using-pygame –

関連する問題