Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何组织我的代码。类、函数等?_Python - Fatal编程技术网

Python 如何组织我的代码。类、函数等?

Python 如何组织我的代码。类、函数等?,python,Python,我正在努力想办法组织这里的事情。 我正在制作一个比赛游戏。有运动员和赛道。玩家有名字、年龄等属性。比赛课程也有一系列属性,包括难度。我想做的一件事是,当一个球员跑一个球场时,他们的能量水平会随着球场的难度而下降。我感到困惑的是,因为难度是球场的一个属性,而能量水平是球员的一个属性,我该如何影响这两者 以代码为例 class Player(): energy_level = 0 def __init__(self, name, ability) self.name

我正在努力想办法组织这里的事情。 我正在制作一个比赛游戏。有运动员和赛道。玩家有名字、年龄等属性。比赛课程也有一系列属性,包括难度。我想做的一件事是,当一个球员跑一个球场时,他们的能量水平会随着球场的难度而下降。我感到困惑的是,因为难度是球场的一个属性,而能量水平是球员的一个属性,我该如何影响这两者

以代码为例

class Player():
    energy_level = 0
    def __init__(self, name, ability)
        self.name = name
        self.ability = ability

    def run(self):
        #code to run course here, reduces energy level when running course. Energy level is reduced based on player ability

class Course():
    def __init__(self, name, difficulty) 
        self.name = name
        self.difficulty = difficulty

player1 = Player("Bob", 90)
course1 = Course("Advanced Track", 15)
也许我把这一切都搞错了?这门课需要是一门课吗


谢谢您的意见。

我如何影响这两个方面?

这可以通过将Course类型的对象传递给
run
函数来实现,如下所示:

class Player():
    energy_level = 0
    def __init__(self, name, ability)
        self.name = name
        self.ability = ability

    def run(self, course):
        #use course.difficulty to reduce self.energy_level

class Course():
    def __init__(self, name, difficulty) 
        self.name = name
        self.difficulty = difficulty

player1 = Player("Bob", 90)
course1 = Course("Advanced Track", 15)
player1.run(course1) # this will pass course1 to the run function and run will reduce the energy level according to the difficulty of course1

我如何影响这两者?

这可以通过将Course类型的对象传递给
run
函数来实现,如下所示:

class Player():
    energy_level = 0
    def __init__(self, name, ability)
        self.name = name
        self.ability = ability

    def run(self, course):
        #use course.difficulty to reduce self.energy_level

class Course():
    def __init__(self, name, difficulty) 
        self.name = name
        self.difficulty = difficulty

player1 = Player("Bob", 90)
course1 = Course("Advanced Track", 15)
player1.run(course1) # this will pass course1 to the run function and run will reduce the energy level according to the difficulty of course1

您可以使课程成为玩家类的成员

class Player():
    course = null;
    energy_level = 0
    def __init__(self, name, ability)
        self.name = name
        self.ability = ability
        self.course1 = Course("Advanced Track", 15)

    def run(self):
        #code to run course here, reduces energy level when running course. Energy level is reduced based on player ability
        #change  self.energy based on self.course1.difficulty

当然,这过于简单化了。您需要添加方法来打开新课程,而不是在构造函数中硬编码。

您可以使课程成为玩家类的成员

class Player():
    course = null;
    energy_level = 0
    def __init__(self, name, ability)
        self.name = name
        self.ability = ability
        self.course1 = Course("Advanced Track", 15)

    def run(self):
        #code to run course here, reduces energy level when running course. Energy level is reduced based on player ability
        #change  self.energy based on self.course1.difficulty

当然,这过于简单化了。您需要添加方法来打开新课程,而不是在构造函数中硬编码。

课程仍然可以是单独的类。在玩家课程中增加一门课程(或一系列课程)怎么样?只是一个想法。制作另一个继承玩家类和课程类的类。一旦你完成了任务,考虑一下设计评审。他们可能会给出更好的建议,从整体上看,而不仅仅是这些具体问题。发布前请务必阅读指导原则(即,代码必须有效),或者第三个种族等级如何,该等级使用一组玩家和一个球场。移动代码以在那里运行课程(或比赛)。无论如何,我同意JETM的观点,这应该在代码审查中进行。@mikey和Martin Jakubik,你能再详细说明一下吗?具体来说,第三类的对象是什么样子的?假设我创建了一个名为Event的第三个类,它继承了Player和Course类。在那个事件类中,我创建了一个“运行课程”的方法,它降低了能量级别。我的对象会是什么样子?当然仍然可以是一个单独的类。在玩家课程中增加一门课程(或一系列课程)怎么样?只是一个想法。制作另一个继承玩家类和课程类的类。一旦你完成了任务,考虑一下设计评审。他们可能会给出更好的建议,从整体上看,而不仅仅是这些具体问题。发布前请务必阅读指导原则(即,代码必须有效),或者第三个种族等级如何,该等级使用一组玩家和一个球场。移动代码以在那里运行课程(或比赛)。无论如何,我同意JETM的观点,这应该在代码审查中进行。@mikey和Martin Jakubik,你能再详细说明一下吗?具体来说,第三类的对象是什么样子的?假设我创建了一个名为Event的第三个类,它继承了Player和Course类。在那个事件类中,我创建了一个“运行课程”的方法,它降低了能量级别。我的物体会是什么样子?