2016-03-21 23 views
1

Python’da yeniyim ve Eric Matthes’in “Python crash course” ile öğrenmeye başladım. Pygame bölümünün başındayım ve kodu takip ediyorum, ancak yüklenen resimlerim her zaman bozuk görünüyor ve nedenini bilmiyorum. Kod kitaptan. İlk dosyası:Python Pygame resimleri doğru şekilde göstermiyor

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) 

İkinci dosyası: Böyle

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) 

Benim bmp görünüm::

enter image description here

ben d eklemek çalıştı

Ayarlar dosyası

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() 

ifferent görüntü, ancak hiçbir şanslar:

enter image description here

bunu nasıl düzeltebilirim?

+0

Görüntünüze 'convert()' uygulamak zorunda değil misiniz? –

+0

Bilmiyorum, kitap kodunda böyle bir şey yok. Kodumu bununla nasıl değiştirebilirim? – migari

+0

'self.image = pygame.image.load ('ship.bmp') convert()' - sadece 'convert' ile '' deneyin '' sonunda –

cevap

1

Göreceli olarak yeni bir SDL sürümü olan bir Mac üzerinde olduğunuzu farz ediyorum. Sorun kodunuzla değil, SDL'nin Mac OS'lu bir hataya sahip yeni sürümleridir.

Bu sorunu gidermek için, SDL'nizi sürüm 1.2'den önceki bir sürüme (tam olarak, tam sürümü unuttuktan) önce bir sürüme geçirmeniz veya farklı bir işletim sistemi üzerinde çalışmanız gerekir.

Bu çok sinir bozucu .. Ben sadece Mac oyunu kodlamak için sanal kutu yükleme ve Mac üzerinde Linux çalıştıran sona erdi!

+0

Teşekkür ederim, sanırım bu ve bu kodu düzeltmeye çalışan yaşlarımı kafamı çizebilirim. El Kaptan ile Mac burada. – migari

+0

Ayrıca El Capitain! Başka bir şeye geçmek sizin için çalışıyorsa bana bildirin. İşte benim kaynak btw. Maalesef, SDL'yi düşüremedim, bu yüzden sorunun% 100'ünü bulamıyorum, ancak büyük olasılıkla. http://stackoverflow.com/questions/33582204/images-distorted-using-pygame –

İlgili konular