Python Forum
[PyGame] Error: Couldn't open image
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyGame] Error: Couldn't open image
#1
Hello, I have recently started following a pygame flappy bird tutorial series.
In the code that he shows in the tutorial he loads a few images, I have downloaded them and put them in a file just like he did but whenever I run the code that is in the tutorial I get this error:
Error:
Traceback (most recent call last):line 10, in <module> bird_imgs = [pygame.transform.scale2x(pygame.image.load(os.path.join("imgs", "bird1.png")))] pygame.error: Couldn't open imgs\bird1.png
here is the code that i wrote by now:
import os
import random
import pygame
import time
import neat

win_width = 600
win_height = 800

bird_imgs = [pygame.transform.scale2x(pygame.image.load(os.path.join("imgs", "bird1.png"))), pygame.transform.scale2x(pygame.image.load(os.path.join("imgs", "bird2.png"))), pygame.transform.scale2x(pygame.image.load(os.path.join("imgs", "bird3.png")))]
pipe_img = pygame.transform.scale2x(pygame.image.load(os.path.join("imgs", "pipe.png")))
base_img = pygame.transform.scale2x(pygame.image.load(os.path.join("imgs", "base.png")))
bg_img = pygame.transform.scale2x(pygame.image.load(os.path.join("imgs", "bg.png")))

class Bird:
    imgs = bird_imgs
    max_rotation = 25
    rotation_velocity = 20
    animation_time = 5

    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.tilt = 0
        self.tick_count = 0
        self.vel = 0
        self.height = self.y
        self.img_count = 0
        self.img = self.imgs[0]
    def jump(self):
        self.vel = -10.5
        self.tick_count = 0
        self.height = self.y

    def move(self):
        self.tick_count += 1

        d = self.vel*self.tick_count + 1.5*self.tick_count**2

        if d >= 16:
            d = 16

        if d < 0:
            d -= 2

        self.y = self.y + d

        if d < 0 or self.y < self.height + 50:
            if self.tilt < self.max_rotation:
                self.tilt = self.max_rotation
        else:
            if self.tilt > -90:
                self.tilt -= self.rotation_velocity

    def draw(self, win):
        self.img_count *= 1

        if self.img_count < self.animation_time:
            self.img = self.imgs[0]
        elif self.img_count < self.animation_time*2:
            self.img = self.imgs[1]
        elif self.img_count < self.animation_time*3:
              self.img = self.imgs[2]
        elif self.img_count < self.animation_time*4:
              self.img = self.imgs[1]
        elif self.img_count == self.animation_time*4 + 1:
              self.img = self.imgs[0]
              self.img_count = 0

        if self.tilt <= -80:
            self.img = self.imgs[1]
            self.img_count = self.animation_time*2

        rotated_image = pygame.transform.rotate(self.img, self.tilt)
        new_rect = rotated_image.get_rect(center=self.img.get_rect(topleft = (self.x, self.y)).center)
        win.blit(rotated_image, new_rect.topleft)

    def get_mask(self):
        return pygame.mask.from_surface(self.img)

def draw_window(win, bird):
    win.blit(bg_img, (0,0))
    pygame.display.update()

def main():
    bird = Bird (200, 200)
    win = pygame.display.set_mode((win_width, win_height))

    run = True
    while run:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False

            draw_window(win, bird)

    pygame.quit()
    quit()
here are the links to the episodes of the series that i watched by now:
https://www.youtube.com/watch?v=MMxFDaIOHsE&t=213s
https://www.youtube.com/watch?v=ps55secj7iU
If it helps, I use the pycharm IDE.
Can someone please help me or tell me if im doing something wrong?
Reply
#2
Check to make sure that you have a folder called "imgs", not "images" or "img" in the same folder as the main python file your are writing.

The code looks like it works, but the file it is looking for isn't where it is looking. See perhaps if the files you downloaded are still in a folder, inside the "imgs" folder.

The error is something like this. It looks like your code matches his, so it is most likely a simple error/typo in how you named or located things.
Reply
#3
thank you michael1789 it worked!
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  open cv ->pygame: turn image into location Gamedeveloper 1 2,029 Jan-20-2020, 05:00 PM
Last Post: michael1789
  [PyGame] pygame image loading error BlueClaw 6 6,322 Dec-10-2019, 08:50 PM
Last Post: BlueClaw
  [PyGame] Image not found error simiugor 8 8,642 Dec-02-2016, 06:17 PM
Last Post: simiugor

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020