为什么分数实例变量在python中不减少

问题描述 投票:0回答:1

我已经开始学习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()

python oop variables
1个回答
0
投票

[每次您呼叫Player()时,您正在创建一个新播放器。所以当你做

© www.soinside.com 2019 - 2024. All rights reserved.