Error Text:
Traceback (most recent call last):
File "C:\Users\Sean Takei\Desktop\python_work\alien_invasion\alien_invasion3.py", line 40, in <module>
ai= AlienInvasion()
File "C:\Users\Sean Takei\Desktop\python_work\alien_invasion\alien_invasion3.py", line 21, in _init__
self.ship= Ship(self)
File "C:\Users\Sean Takei\Desktop\python_work\alien_invasion\shiptest.py", line 23, in _init__
self.image = pygame.image.load('images/ship.bmp' )
pygame.error: Couldn't open images/ship.bmp
First post here, Im new to python and been going through the Python Crash Course book and been stuck on chapter12 "Drawing the Ship to the Screen" part. At first I have the ship.bmp in images folder in the alien_invasion folder, which is where the this code below is running. Now I have the images both in images folder and also the alien_invasion folder and it is showing this error. Please tell me what I'm doing wrong
alien_invasion3.py
import sys
import pygame
from settings import Settings
from shiptest import Ship
class AlienInvasion:
"""Overall class to manage game assets and behavior."""
def __init__(self):
"""Initialize the game, and create game resources."""
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):
"""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()
#Redraw the screen during each pass through the loop.
self.screen.fill(self.settings.bg_color)
self.ship.blitme()
#Make the most recently drawn screen visible.
pygame.display.flip()
if __name__== '__main__':
#Make a game instance, and run the game.
ai= AlienInvasion()
ai.run_game()
Ship.py
import pygame
class Ship:
"""A class to manage the ship."""
def __init__(self, ai_game):
"""Initialize the ship and set its staring position."""
self.screen= ai_game.screen
self.screen_rect= ai_game.screen.get_rect()
#Load the ship image and get its rect.
self.image= pygame.image.load('images/ship.bmp')
self.rect= self.image.get_rect()
#Start each new ship at the bottom center of the screen.
self.rect.midbottom= self.screen_rect.midbottom
def blitme(self):
"""Draw the ship at its current location."""
self.screen.blit(self.image, self.rect)
settings.py
class Settings:
"""A class to store all settings for Alien Invasion."""
def __init__(self):
"""Initialize the game's settings."""
#Screen settings
self.screen_width= 1200
self.screen_height= 800
self.bg_color= (0, 0, 255)