为什么已导入的在类里的图片加载不出来,而且也绘制了图片和更新桌面

我是一个初一的学生,我遇到了一个困难,就是我成功地导入了图片,而且也在屏幕上绘制了图片,也写了pygame.display.update(),可图片就是无法显示。这是源代码:

player.py:

import pygame

pygame.init()

class Player(pygame.sprite.Sprite):
    def __init__(self,screen):
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load(r"D:\python3.8.5_files\python_games\images\coins_image\player.png").convert_alpha()
        self.rect = self.image.get_rect()
        self.width,self.height = 600,500
        self.active = True
        self.speed = 10
        self.rect.left = self.width / 2 - self.rect.width / 2
        self.rect.top = 485
        self.screen = screen
        self.mask = pygame.mask.from_surface(self.image)

    def moveleft(self):
        if self.rect.left > 0:
            self.rect.left -= self.speed
        else:
            self.rect.left = 0

    def moveright(self):
        if self.rect.right < self.width:
            self.rect.left += self.speed
            self.update()
        else:
            self.rect.right = self.width

    def update(self):
        self.screen.blit(self.image,(self.rect.left,self.rect.top))
        pygame.display.update()

bomb.py:

import pygame,random

pygame.init()

class Bomb(pygame.sprite.Sprite):
    def __init__(self,screen):
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load(r"D:\python3.8.5_files\python_games\images\coins_image\bomb.png").convert_alpha()
        self.rect = self.image.get_rect()
        self.width,self.height = 600,500
        self.speed = 5
        self.rect.left = random.randint(0,self.width - self.rect.width)
        self.rect.top = 0 - self.rect.height
        self.screen = screen
        self.mask = pygame.mask.from_surface(self.image)

    def movedown(self):
        if self.rect.top < self.height:
            self.rect.top += self.speed
            self.update()
        else:
            self.reset()

    def reset(self):
        self.active = True
        self.rect.left = random.randint(0,self.width - self.rect.width)
        self.rect.top = 0 - self.rect.height

    def update(self):
        self.screen.blit(self.image,self.rect)
        pygame.display.update()

coins.py:

import pygame,random

pygame.init()

class Small_coin(pygame.sprite.Sprite):
    def __init__(self,screen):
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load(r"D:\python3.8.5_files\python_games\images\coins_image\small_coin.png").convert_alpha()
        self.rect = self.image.get_rect()
        self.width,self.height = 600,500
        self.active = True
        self.speed = 3
        self.rect.left = random.randint(0,self.width - self.rect.width)
        self.rect.top = 0 - self.rect.height
        self.screen = screen
        self.mask = pygame.mask.from_surface(self.image)

    def movedown(self):
        if self.rect.top < self.height:
            self.rect.top += self.speed
            self.update()
        else:
            self.reset()

    def reset(self):
        self.active = True
        self.rect.left = random.randint(0,self.width - self.rect.width)
        self.rect.top = 0 - self.rect.height

    def update(self):
        self.screen.blit(self.image,self.rect)
        pygame.display.update()

class Mid_coin(pygame.sprite.Sprite):
    def __init__(self,screen):
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load(r"D:\python3.8.5_files\python_games\images\coins_image\mid_coin.png").convert_alpha()
        self.rect = self.image.get_rect()
        self.width,self.height = 600,500
        self.active = True
        self.speed = 3
        self.rect.left = random.randint(0,self.width - self.rect.width)
        self.rect.top = 0 - self.rect.height
        self.screen = screen
        self.mask = pygame.mask.from_surface(self.image)

    def movedown(self):
        if self.rect.top < self.height:
            self.rect.top += self.speed
            self.update()
        else:
            self.reset()

    def reset(self):
        self.active = True
        self.rect.left = random.randint(0,self.width - self.rect.width)
        self.rect.top = 0 - self.rect.height

    def update(self):
        self.screen.blit(self.image,self.rect)
        pygame.display.update()

class Big_coin(pygame.sprite.Sprite):
    def __init__(self,screen):
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load(r"D:\python3.8.5_files\python_games\images\coins_image\big_coin.png").convert_alpha()
        self.rect = self.image.get_rect()
        self.width,self.height = 600,500
        self.active = True
        self.speed = 5
        self.rect.left = random.randint(0,self.width - self.rect.width)
        self.rect.top = 0 - self.rect.height
        self.screen = screen
        self.mask = pygame.mask.from_surface(self.image)

    def movedown(self):
        if self.rect.top < self.height:
            self.rect.top += self.speed
            self.update()
        else:
            self.reset()

    def reset(self):
        self.active = True
        self.rect.left = random.randint(0,self.width - self.rect.width)
        self.rect.top = 0 - self.rect.height
        
    def update(self):
        self.screen.blit(self.image,self.rect)
        pygame.display.update()

main.py:

import pygame,sys,random,time,traceback,bomb,coins,player
from pygame.locals import *

pygame.init()
bg_size = [600,500]
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("money catcher")
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)

def add_score(result):
    if result == "s":
        score += 10
    elif result == "m":
        score += 30
    elif result == "b":
        score += 50

def print_txt(font,x,y,txt,color = white):
    text = font.render(txt,True,color)
    screen.blit(text,(x,y))

def add_small_coins(group1,group2,num):
    for i in range(num):
        sc = coins.Small_coin(screen)
        group1.add(sc)
        group2.add(sc)

def add_mid_coins(group1,group2,num):
    for i in range(num):
        mc = coins.Mid_coin(screen)
        group1.add(mc)
        group2.add(mc)

def add_big_coins(group1,group2,num):
    for i in range(num):
        bc = coins.Big_coin(screen)
        group1.add(bc)
        group2.add(bc)

def add_bombs(group,num):
    for i in range(num):
        b = bomb.Bomb(screen)
        group.add(b)

def add_speed(target):
    target.speed += 1

def main():
    gameover = True
    win = False
    lose = False
    record = False
    lives = 5
    mistake = 0
    score = 0
    level = 1
    font = pygame.font.Font(None,24)
    p = player.Player(screen)
    
    coins_list = pygame.sprite.Group()
    small_coins_list = pygame.sprite.Group()
    mid_coins_list = pygame.sprite.Group()
    big_coins_list = pygame.sprite.Group()
    bombs_list = pygame.sprite.Group()
    
    add_small_coins(small_coins_list,coins_list,8)
    add_mid_coins(small_coins_list,coins_list,5)
    add_big_coins(small_coins_list,coins_list,2)
    add_bombs(bombs_list,3)

    print("接住金币,获得分数,躲避炸弹.如若碰到炸弹,就会减少生命.如若没接住金币,就会增加失误次数.")
    
    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
                
        screen.fill(green)

        keys = pygame.key.get_pressed()
        if keys[K_RETURN]:
            if gameover:
                gameover = False
                lives = 5
                win = False
                lose = False
                mistake = 0
                score = 0
                level = 1
                del coins_list
                del small_coins_list
                del mid_coins_list
                del big_coins_list
                del bombs_list
                coins_list = pygame.sprite.Group()
                small_coins_list = pygame.sprite.Group()
                mid_coins_list = pygame.sprite.Group()
                big_coins_list = pygame.sprite.Group()
                bombs_list = pygame.sprite.Group()
                coins.Small_coin.speed = 3
                coins.Mid_coin.speed = 3
                coins.Big_coin.speed = 5
                bomb.Bomb.speed = 5

        if gameover:
            if not win and not lose:
                read_txt = open(r"D:\python3.8.5_files\python_games\pygame.money_catcher.mine\score\score.txt","r")
                heightest_score = read_txt.readlines()
                print_txt(font,200,100,str(heightest_score))
                read_txt.close()
                
            if win:
                if score > heightest_score:
                    heightest_score = score
                print_txt(font,200,400,"YOU WIN!!!")

            if lose:
                if score > heightest_score:
                    heightest_score = score
                print_txt(font,200,400,"YOU LOSE!!!")
                    
            print_txt(font,200,238,"<PRESS ENTER TO PLAY>")
            
        else:
            if keys[K_a]:
                p.moveleft()
            elif keys[K_d]:
                p.moveright()
            p.update()

            for sc in small_coins_list:
                if sc.active:
                    sc.movedown()
                    screen.blit(sc.image,sc.rect)
                    pygame.display.update()
                    if sc.rect.top >= p.rect.top + sc.rect.height and sc.rect.top < p.rect.top - p.rect.height:
                        if sc.rect.right >= p.rect.left and sc.rect.left <= p.rect.right:
                            add_score("s")
                            sc.reset()

            for mc in mid_coins_list:
                if mc.active:
                    mc.movedown()
                    if mc.rect.top >= p.rect.top + mc.rect.height and mc.rect.top < p.rect.top - p.rect.height:
                        if mc.rect.right >= p.rect.left and mc.rect.left <= p.rect.right:
                            add_score("m")
                            mc.reset()

            for bc in big_coins_list:
                if bc.active:
                    bc.movedown()
                    if bc.rect.top >= p.rect.top + bc.rect.height and bc.rect.top < p.rect.top - p.rect.height:
                        if bc.rect.right >= p.rect.left and bc.rect.left <= p.rect.right:
                            add_score("b")
                            bc.reset()

            if level == 1 and score > 999:
                level = 2
                add_small_coins(small_coins_list,coins_list,3)
                add_mid_coins(mid_coins_list,coins_list,2)
                add_big_coins(big_coins_list,coins_list,1)
                add_bombs(bombs_list,1)

            elif level == 2 and score > 1999:
                level = 3
                add_small_coins(small_coins_list,coins_list,3)
                add_mid_coins(mid_coins_list,coins_list,2)
                add_big_coins(big_coins_list,coins_list,1)
                add_bombs(bombs_list,1)

            elif level == 3 and score > 3499:
                level = 4
                add_small_coins(small_coins_list,coins_list,3)
                add_mid_coins(mid_coins_list,coins_list,2)
                add_big_coins(big_coins_list,coins_list,1)
                add_bombs(bombs_list,1)
                add_speed(coins.Small_coin)
                add_speed(coins.Mid_coin)

            elif level == 4 and score > 4999:
                level = 5
                add_small_coins(small_coins_list,coins_list,3)
                add_mid_coins(mid_coins_list,coins_list,2)
                add_big_coins(big_coins_list,coins_list,1)
                add_bombs(bombs_list,1)
                add_speed(coins.Small_coin)
                add_speed(coins.Mid_coin)
                add_speed(coins.Big_coin)
                add_speed(bomb.Bomb)

            if lives < 1:
                if score > 9999:
                    win = True
                else:
                    lose = True
                gameover = True

            print_txt(font,0,0,"lives:" + str(lives))
            print_txt(font,270,0,"mistake:" + str(mistake))
            print_txt(font,540,0,"score:" + str(score))

        pygame.display.update()
        time.sleep(0.01)
        
if __name__ == "__main__":
    try:
        main()
    except SystemExit:
        pass
    except KeyboardInterrupt:
        pass
    except:
        traceback.print_exc()
        pygame.quit()
        input()

我无法找出错误,请各位大神帮忙找找错误。 

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。