我已经开始学习oop,并且很难使它完成我需要的操作。我使用乌龟模块构建了一个简单的游戏,其中放了一个圆圈,每当圆圈掉出屏幕时分数就会降低,我将添加射击功能和速度配置等等。但是此刻,我陷入了这种循环。
问题是分数未正确更改。我有两个班Circle和Player。分数是Player类的实例变量,但是Circle类中的drop()函数对分数进行计数。
我可以使用一种程序化的程序样式来使它工作,但是会阻塞住。这里是代码。欢迎任何建设性的批评。
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
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:
Player().score = Player().score - 10
print(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()
[每次您呼叫Player()
时,您正在创建一个新播放器。所以当你做