Каждый раз, когда вы звоните Player()
, вы создаете нового игрока. Итак, когда вы выполняете
Player().score = Player().score - 10
print(Player().score)
, это примерно эквивалентно:
temp_player1 = Player()
temp_player2 = Player()
temp_player1.score = temp_player2.score - 10
temp_player3 = Player()
print(temp_player3.score)
Как вы можете видеть из этого, есть 3 разных игрока, поэтому вы никогда не уменьшаете счет любого игрока, а затем вы печатаете счет другого игрока.
Вам нужно добавить атрибут player
к Circle
, тогда он может использовать self.player
вместо того, чтобы каждый раз создавать нового игрока.
import turtle as t
import random
class Circle:
def __init__(self,size):
self.size = size
#self.speed = speed
self.circle = t.Turtle()
self.ypos = 300
this.player = Player()
def size_color(self):
self.circle.color('red')
self.circle.shape('circle')
self.circle.shapesize(self.size,self.size,1)
#positions circle random x top y
def posit(self):
number = random.randint(-340,340)
self.circle.ht()
self.circle.penup()
self.size_color()
self.circle.goto(number,self.ypos)
self.circle.st()
#substracts from y position for falling effect
#should substract from score as well
def drop(self):
self.posit()
while True:
self.ypos = self.ypos- 4
self.circle.sety(self.ypos)
if self.ypos <= -300:
self.player.score = self.player.score - 10
print(self.player.score)
self.ypos = 300
self.posit()
class Player:
def __init__(self,score=200):
self.score = score
def display_screen():
window = t.Screen()
window.bgcolor('black')
display_screen()
c = Circle(2)
c.drop()