这是我的代码中的错误“TypeError:'pygame.Surface' 类型的对象没有 len()”,我在这里得到它“if for_count >= len(for_enemy_list)”

问题描述

这是我代码中的错误

TypeError: object of type 'pygame.Surface' has no len()

在这个声明中得到它if for_count >= len(for_enemy_list)

       if for_enemy_x == for_enemy_distance_1:
            for_enemy_list = []
            for_enemy_list.append(pygame.image.load("boar 1 r.png"))
            for_enemy_list.append(pygame.image.load("boar 2 r.png"))
            for_enemy_list.append(pygame.image.load("boar 3 r.png"))
            for_enemy_list.append(pygame.image.load("boar 4 r.png"))
            for_count += 1
            
            print("its getting till here")
            
        if for_count >= len(for_enemy_list):
            for_count = 0
                
        for_enemy_animation = for_enemy_list[for_count]
            
        
        SCREEN_disPLAY.blit(for_background_scale,(ground_1_x,0))
        SCREEN_disPLAY.blit(for_monkey_scale,(for_monkey_x,400))
        SCREEN_disPLAY.blit(for_grass,(for_grass_x,330))
        SCREEN_disPLAY.blit(for_grass_2,(for_grass_2_x,330))
        SCREEN_disPLAY.blit(tree_background,(for_tree_background_x,285))
        SCREEN_disPLAY.blit(background_creature_scale,(for_background_creature_2_x,for_background_creature_2_y))
        SCREEN_disPLAY.blit(for_background_2_scale,(ground_2_x,0))
        SCREEN_disPLAY.blit(player_body,(for_player_body_x,380))
        SCREEN_disPLAY.blit(player_leg,(300,380))
        SCREEN_disPLAY.blit(for_enemy_scale,(for_enemy_x,for_enemy_y))
        SCREEN_disPLAY.blit(for_ground,(for_ground_x,for_ground_y))
        SCREEN_disPLAY.blit(for_ball_scale,(for_ball_x,350))
        #SCREEN_disPLAY.blit(for_ball_2_scale,(0,0))
        
    pygame.display.update()

这是整个代码供参考........

import pygame

pygame.init()

SCREEN_HEIGHT = 800
SCREEN_WIDTH = 500

SCREEN_disPLAY = pygame.display.set_mode((SCREEN_HEIGHT,SCREEN_WIDTH))
for_clock = pygame.time.Clock()    

for_button_size = 30
for_button_size_1 = 30
for_button_size_2 = 30
for_button_size_3 = 30
for_button_size_4 = 30

for_check = False
for_check_2 = False
for_check_3 = False
for_check_4 = False

player_body = pygame.image.load("player1 r body.png")
player_leg = pygame.image.load("player2 r leg.png")

ground_1_x = 0
ground_2_x = 800 

for_count = 0
for_count_2 = 0

for_num = 0

for_background_creature_2_x = 630
for_background_creature_2_y = 204
for_ground_x = 0
for_ground_y = 460
for_monkey_x = 570
for_grass_x = 535
for_grass_2_x = 31
for_tree_background_x = 291
for_enemy_x = 800
for_enemy_y = 390
for_ball_x = 1200
for_player_body_x = 281

for_player_enemy_distance = False
for_player_enemy_distance_2 = False

while True:
    for_clock.tick(30)
    
    mouse_x,mouse_y = pygame.mouse.get_pos()
    for_mouse_rect = pygame.draw.rect(SCREEN_disPLAY,(255,255,255),(mouse_x,mouse_y,1,1))
    
    keys = pygame.key.get_pressed()
    
    class menu():
        def __init__(self):
            pass
        
        def update(self):
            global for_button_size
            global for_check
            global for_button_size_1
            global for_button_size_2
            global for_button_size_3
            global for_button_size_4
            global for_check_2
            global player_body
            global player_leg
            global for_check_3
            global for_check_4
            global keys
            global ground_1_x
            global ground_2_x
            global for_background_creature_2_x
            global for_background_creature_2_y
            global for_ground_x
            global for_grass_x
            global for_monkey_x
            global for_ground_x
            global for_ground_y
            global for_grass_2_x
            global mouse_x
            global mouse_y
            global for_mouse_rect
            
            mouse_x,mouse_y = pygame.mouse.get_pos()
            for_mouse_rect = pygame.draw.rect(SCREEN_disPLAY,1))
            
            SCREEN_disPLAY.fill((255,255))
            self.background = pygame.image.load("background_menu.png")
            self.background_scale = pygame.transform.scale(self.background,(800,500))
            SCREEN_disPLAY.blit(self.background_scale,0))
            
            self.for_button = pygame.font.Font("freesansbold.ttf",for_button_size)
            self.for_button_render = self.for_button.render("PLAY",True,(23,55,55))
            self.for_button_show = SCREEN_disPLAY.blit(self.for_button_render,(100,100))
            
            self.collide = for_mouse_rect.colliderect(self.for_button_show)
            
            if self.collide:
                for_button_size = 33
            else:
                for_button_size = 30
            
            if self.collide and event.type == pygame.MOUSEBUTTONDOWN:
                for_check = True
                
            if for_check == True:
                SCREEN_disPLAY.fill((255,255))
                self.background = pygame.image.load("background_menu.png")
                self.background_scale = pygame.transform.scale(self.background,500))
                SCREEN_disPLAY.blit(self.background_scale,0))
                
                self.for_button_2 = pygame.font.Font("freesansbold.ttf",for_button_size_1)
                self.for_button_2_render = self.for_button_2.render("LEVEL 1",0),115,95))
                self.for_button_2_show = SCREEN_disPLAY.blit(self.for_button_2_render,200))
                
                self.collide_2 = for_mouse_rect.colliderect(self.for_button_2_show)
                
                if self.collide_2:
                    for_button_size_1 = 33
                else:
                    for_button_size_1 = 30    
                
                self.for_button_3 = pygame.font.Font("freesansbold.ttf",for_button_size_2)
                self.for_button_3_render = self.for_button_3.render("LEVEL 2",95))
                self.for_button_3_show = SCREEN_disPLAY.blit(self.for_button_3_render,(260,200))
                
                self.collide_3 = for_mouse_rect.colliderect(self.for_button_3_show)
                
                if self.collide_3:
                    for_button_size_2 = 33
                else:
                    for_button_size_2 = 30
                    
                self.for_button_4 = pygame.font.Font("freesansbold.ttf",for_button_size_3)
                self.for_button_4_render = self.for_button_4.render("LEVEL 3",95))
                self.for_button_4_show = SCREEN_disPLAY.blit(self.for_button_4_render,(420,200))
                
                self.collide_4 = for_mouse_rect.colliderect(self.for_button_4_show)
                
                if self.collide_4:
                    for_button_size_3 = 33
                else:
                    for_button_size_3 = 30
                    
                if self.collide_2 and event.type == pygame.MOUSEBUTTONDOWN:
                    for_check_2 = True
                        
                if self.collide_3 and event.type == pygame.MOUSEBUTTONDOWN:
                    for_check_3 = True
                    
                if for_check_3 == True:
                    SCREEN_disPLAY.fill((255,255))
                    
                if self.collide_4 and event.type == pygame.MOUSEBUTTONDOWN:
                    for_check_4 = True
                    
                if for_check_4 == True:
                    SCREEN_disPLAY.fill((255,255))
                 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        for_call = menu()
        for_call.update()
        
        if for_check_2 == True:            
            SCREEN_disPLAY.fill((255,255))
            
            keys = pygame.key.get_pressed()
            
            if keys[pygame.K_a]:
                player_body = pygame.image.load("player1 l body.png")
                player_leg = pygame.image.load("player2 l leg.png")
                ground_1_x += 10
                ground_2_x += 10
                for_background_creature_2_x += 10
                for_ground_x += 10
                for_grass_x += 10
                for_grass_2_x += 10
                for_tree_background_x += 10
                for_enemy_x += 10
                for_ball_x += 10
             
#            if event.type == pygame.KEYUP:
#                ground_1_x += 0
#                ground_2_x += 0
#                for_background_creature_2_x += 0
#                for_ground_x += 0
#                for_grass_x += 0
#                for_grass_2_x += 0
#                for_background_creature_2_y += 0
#                for_tree_background_x += 0        
#                for_enemy_x += 0
                
            if keys[pygame.K_d]:
                player_body = pygame.image.load("player1 r body.png")
                player_leg = pygame.image.load("player2 r leg.png")
                ground_1_x -= 10
                ground_2_x -= 10
                for_background_creature_2_x -= 10
                for_ground_x -= 10
                for_grass_x -= 10
                for_grass_2_x -= 10
                for_tree_background_x -= 10
                for_enemy_x -= 10
                for_ball_x -= 10
                
            for_background_creature_2_y += 2
            
            for_ball = pygame.image.load("for_ball_2.png")
            for_ball_scale = pygame.transform.scale(for_ball,(20,20))
            
            for_ball_2 = pygame.image.load("for_ball.png").convert()
            for_ball_2_scale = pygame.transform.scale(for_ball_2,(50,50))
            
        if for_check_2 == True:
            # animation1
            for_background = pygame.image.load("forest.png")
            for_background_scale = pygame.transform.scale(for_background,500))
            
            tree_background = pygame.image.load("tree_background.png")
            
            for_ground = pygame.image.load("for_ground.png")
            
            background_creature = pygame.image.load("backgroundcreature.png")
            background_creature_scale = pygame.transform.scale(background_creature,20))
            
            for_background_2 = pygame.image.load("forest.png")
            for_background_2_scale = pygame.transform.scale(for_background,500))
            
            enemy_1 = pygame.image.load("boar1 r.png")    
            enemy_1_scale = pygame.transform.scale(enemy_1,(80,60))
            for_enemy_y = 370
            
            for_player_distance = for_enemy_x - 199
            for_player_distance_2 = for_enemy_x + 199
            
            for_enemy_list = pygame.image.load("boar 1 r.png")
            for_enemy_scale = pygame.transform.scale(for_enemy_list,(125,120))
            
            if for_player_body_x == for_player_distance:
                for_player_enemy_distance = True
                
            if for_player_enemy_distance == True:
                for_enemy_list = []
                for_enemy_list.append(pygame.image.load("boar1 l.png"))
                for_enemy_list.append(pygame.image.load("boar2 l.png"))
                for_enemy_list.append(pygame.image.load("boar3 l.png"))
                for_enemy_list.append(pygame.image.load("boar4 l.png"))
                for_enemy_list.append(pygame.image.load("boar5 l.png"))
                for_count += 1
                for_enemy_y = 387    
                
                if for_count >= len(for_enemy_list):
                    for_count = 0                
                
                for_enemy_animation = for_enemy_list[for_count]
                for_enemy_scale = pygame.transform.scale(for_enemy_animation,90))                
                for_enemy_y = 390       
                for_enemy_x -= 5
                
            if for_enemy_x <= for_player_body_x or for_player_body_x == for_player_distance_2:
                for_player_enemy_distance = False
                for_num = 1
                for_enemy_list = []
                for_enemy_list.append(pygame.image.load("boar1 r.png"))
                for_enemy_list.append(pygame.image.load("boar2 r.png"))
                for_enemy_list.append(pygame.image.load("boar3 r.png"))
                for_enemy_list.append(pygame.image.load("boar4 r.png"))
                for_enemy_list.append(pygame.image.load("boar5 r.png"))
                for_count += 1
                for_enemy_y = 390
                
                if for_count >= len(for_enemy_list):
                    for_count = 0                
                
                for_enemy_x += 5
                for_enemy_animation = for_enemy_list[for_count]
                for_enemy_scale = pygame.transform.scale(for_enemy_animation,90))                
                for_enemy_y = 387
            
            if for_player_enemy_distance == False and for_enemy_x >= for_player_body_x and for_num == 1: 
                for_player_enemy_distance = True
            for_grass = pygame.image.load("grass.png")
            
            for_monkey = []
            for_monkey.append(pygame.image.load("monkeys black 2.png"))
            for_monkey.append(pygame.image.load("monkeys black 2_2.png"))
            for_monkey.append(pygame.image.load("monkeys black 2_3.png"))
            for_count_2 += 0.8
            
            if for_count_2 >= len(for_monkey):
                for_count_2 = 0
            
            for_monkey_movement = for_monkey[int(for_count_2)]
            for_monkey_scale = pygame.transform.scale(for_monkey_movement,(70,70))
            
            for_monkey_x -= 10
            
            for_grass_2 = pygame.image.load("grass2.png")
            
            for_enemy_distance_1 = for_player_body_x + 4
            for_enemy_distance_2 = for_player_body_x - 45
            
            print(for_enemy_distance_1,for_enemy_x)
            
            if for_enemy_x == for_enemy_distance_1:
                for_enemy_list = []
                for_enemy_list.append(pygame.image.load("boar 1 r.png"))
                for_enemy_list.append(pygame.image.load("boar 2 r.png"))
                for_enemy_list.append(pygame.image.load("boar 3 r.png"))
                for_enemy_list.append(pygame.image.load("boar 4 r.png"))
                for_count += 1
                
                print("its getting till here")
                
            if for_count >= len(for_enemy_list):
                for_count = 0
                    
            for_enemy_animation = for_enemy_list[for_count]
                
            
            SCREEN_disPLAY.blit(for_background_scale,0))
            SCREEN_disPLAY.blit(for_monkey_scale,400))
            SCREEN_disPLAY.blit(for_grass,330))
            SCREEN_disPLAY.blit(for_grass_2,330))
            SCREEN_disPLAY.blit(tree_background,285))
            SCREEN_disPLAY.blit(background_creature_scale,for_background_creature_2_y))
            SCREEN_disPLAY.blit(for_background_2_scale,0))
            SCREEN_disPLAY.blit(player_body,380))
            SCREEN_disPLAY.blit(player_leg,380))
            SCREEN_disPLAY.blit(for_enemy_scale,for_enemy_y))
            SCREEN_disPLAY.blit(for_ground,for_ground_y))
            SCREEN_disPLAY.blit(for_ball_scale,350))
#            SCREEN_disPLAY.blit(for_ball_2_scale,0))
            
        pygame.display.update()

 

#if for_check_2 == True:
#SCREEN_disPLAY.fill((255,255))
#self.creature_1 = pygame.image.load("creature.png")
#SCREEN_disPLAY.blit(self.creature_1,200))
#
#self.creature_2 = pygame.image.load("common monster small.png")
#self.creature_2_scale = pygame.transform.scale(self.creature_2,(60,60))
#SCREEN_disPLAY.blit(self.creature_2_scale,400))

           
#for_button_text_4 = pygame.font.Font("freesansbold.ttf",for_button_size_change_5)
#for_button_render_4 = for_button_text_4.render("BACK",95))
#for_button_render_4.get_rect()
        

解决方法

for_enemy_list 应该是一个列表。更改:

for_enemy_list = pygame.image.load("boar 1 r.png")

for_enemy_list = [ pygame.image.load("boar 1 r.png") ]
for_enemy_scale = pygame.transform.scale(for_enemy_list[0],(125,120))