问题描述
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))