我想让我的类的两个变量成为动态的,这样它们就有不同的值,这取决于为游戏选择的难度。我是不是在__init__中做错了什么,或者问题出在哪里?如果我从__init__中删除两个参数speed_top_border, speed_bottom_border并输入静态值,一切都会正常工作。
# Obstacle class
class Obstacle(object):
# Init
def __init__(self, speed_top_border, speed_bottom_border):
self.obstacleImg = 'rock.png'
self.obstacleX = random.randint(700, 800)
self.obstacleY = random.randint(0, ScreenHeight - 64)
self.obstacleX_change = random.uniform(self.speed_top_border, self.speed_bottom_border)
# Keep window running (Infinite-Loop)
running = 1
# Menu-loop
while running == 1:
# Insert Background
screen1.blit(background, (0, 0))
for event in pygame.event.get():
# Quit game
if event.type == pygame.QUIT:
running = 0
if event.type == pygame.KEYDOWN:
# Difficulty easy
if event.key == pygame.K_1:
speed_top_border = -1
speed_bottom_border = -0.5
# Start game
if event.key == pygame.K_SPACE:
running = 2
# Game While-Loop
while running == 2:
# Creation of instancet of class obstacle each iteration
if timer1_current - timer1_start >= interval:
timer1_start = time.time() # Timer of start set to current time
obstacle = Obstacle(speed_top_border, speed_bottom_border) # Create instance of class obstacle
obstacle_list.append(obstacle) # Append instance to list
print(obstacle) # Print created instance for check
score += 100 * score_multiplier # Increase score错误消息
Traceback (most recent call last):
File "C:\Users\Timo\PycharmProjects\2DFlugzeugspiel\main.py", line 221, in <module>
obstacle = Obstacle(speed_top_border, speed_bottom_border) # Create instance of class obstacle
File "C:\Users\Timo\PycharmProjects\2DFlugzeugspiel\main.py", line 89, in __init__
self.obstacleX_change = random.uniform(self.speed_top_border, self.speed_bottom_border)
AttributeError: 'Obstacle' object has no attribute 'speed_top_border'发布于 2021-03-19 20:17:20
您永远不会在__init__中定义self.speed_top_border、self.speed_bottom_border,而是尝试在self.obstacleX_change = random.uniform(self.speed_top_border, self.speed_bottom_border)中使用它们
如果要使用这些属性,请在使用它们之前对其进行定义
class Obstacle(object):
def __init__(self, speed_top_border, speed_bottom_border):
self.obstacleImg = 'rock.png'
self.obstacleX = random.randint(700, 800)
self.obstacleY = random.randint(0, ScreenHeight - 64)
self.speed_top_border = speed_top_border
self.speed_bottom_border = speed_bottom_border
self.obstacleX_change = random.uniform(self.speed_top_border, self.speed_bottom_border)https://stackoverflow.com/questions/66707913
复制相似问题