2016-03-21 7 views
1

Ich bin neu bei Python und habe angefangen mit "Python crash course" von Eric Matthes zu lernen. Ich bin am Anfang des Pygame-Kapitels und folge dem Code, aber meine geladenen Bilder sehen immer beschädigt aus und ich weiß nicht warum. Der Code stammt aus dem Buch. Erste Datei:Python Pygame zeigt Bilder nicht richtig an

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) 

Zweite Datei:

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

Einstellungsdatei:

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) 

Mein bmp Blick wie folgt aus:

enter image description here

Ich versuchte d hinzufügen ifferent Bild, aber kein Glück:

enter image description here

Wie kann ich es beheben?

+0

Sie müssen 'convert()' nicht auf Ihr Bild anwenden? –

+0

Ich weiß nicht, es gibt keine solche Sache im Buchcode. Wie kann ich meinen Code damit ändern? – migari

+0

'self.image = pygame.image.load ('ship.bmp'). Convert()' - versuche es einfach mit 'convert()' am Ende –

Antwort

1

Ich vermute, Sie sind auf einem Mac, mit einer relativ neuen Version von SDL. Das Problem ist nicht mit Ihrem Code, aber neuere Versionen von SDL haben einen Fehler mit Mac OS.

Um dies zu beheben, müssen Sie entweder Ihr SDL auf eine Version vor Version 1.2 downgraden (es ist dort, vergessen Sie die genaue Version), oder arbeiten Sie auf einem anderen Betriebssystem.

Es ist sehr nervig .. Ich habe die Installation von Virtualbox und Linux auf meinem Mac ausgeführt, nur um pygame zu codieren!

+0

Danke, ich denke das war's und ich konnte mir ewig den Kopf kratzen, um diesen Code zu reparieren. Mac mit El Captain hier. – migari

+0

Auch El Capitain! Lassen Sie mich wissen, ob der Wechsel zu etwas anderem für Sie funktioniert. Hier ist meine Quelle übrigens. Leider konnte ich SDL nicht downgraden, daher kann ich das Problem nicht zu 100% sagen, obwohl es sehr wahrscheinlich ist. http://stackoverflow.com/questions/33582204/images-distorted-using-pygame –