Python 3.x Python3-面向对象编程-类和;功能

Python 3.x Python3-面向对象编程-类和;功能,python-3.x,Python 3.x,我学习Python3已经有几个月了,我刚刚开始研究面向对象编程。我问了一个关于堆栈溢出的问题,是关于我正试图编写的一个文本冒险游戏,有人建议最好使用OOP 我做了一些搜索,因为我想要一个可以在游戏中使用的非常简单的战斗系统。我有游戏的基本框架,但我想在战斗系统方面得到一些帮助 以下是我目前掌握的代码: import random import time as t class Die: def __init__(self, sides = 6): self.sides

我学习Python3已经有几个月了,我刚刚开始研究面向对象编程。我问了一个关于堆栈溢出的问题,是关于我正试图编写的一个文本冒险游戏,有人建议最好使用OOP

我做了一些搜索,因为我想要一个可以在游戏中使用的非常简单的战斗系统。我有游戏的基本框架,但我想在战斗系统方面得到一些帮助

以下是我目前掌握的代码:

import random
import time as t

class Die:

    def __init__(self, sides = 6):
        self.sides = sides

    def roll(self):
        return random.randint(1, self.sides)

class Player:

    def __init__(self):
        self.hit_points = 10

    def take_hit(self):
        self.hit_points -= 2

class Enemy:

    def __init__(self):
        self.hit_points = 10

   def take_hit(self):
        self.hit_points -= 2

p = Player()
e = Enemy()

d = Die(6)

battle = 1
while battle != 0:

    human = d.roll() + 6
    print("Your hit score: ",human)
    enemy = d.roll() + 6
    print("Enemy hit score: ",enemy)
    if human > enemy:
        e.take_hit()
        print("Your hit points remaining: ",p.hit_points)
        print("Enemy points remaining: ", e.hit_points)
        if e.hit_points == 0:
            battle = 0
        t.sleep(2)
    elif human < enemy:
        p.take_hit()
        print("Your hit points remaining: ",p.hit_points)
        print("Enemy points remaining: ", e.hit_points)
        if p.hit_points == 0:
            battle = 0
        t.sleep(2)
随机导入
导入时间为t
类模具:
def _;初始(自身,侧面=6):
self.sides=sides
def辊(自身):
返回random.randint(1,self.sides)
职业球员:
定义初始化(自):
自身命中率=10
def take_hit(自我):
自身命中率-=2
阶级敌人:
定义初始化(自):
自身命中率=10
def take_hit(自我):
自身命中率-=2
p=玩家()
e=敌人()
d=模具(6)
战斗=1
战斗中!=0:
人=d.滚动()+6
打印(“你的命中分数:”,人类)
敌人=掷骰()+6
打印(“敌人命中分数:”,敌人)
如果人类>敌人:
e、 打
打印(“剩余生命值:”,p.生命值)
打印(“剩余敌人点数:”,即生命点数)
如果e.hit_points==0:
战斗=0
t、 睡眠(2)
elif人类敌人:
p、 打
打印(“剩余生命值:”,p.生命值)
打印(“剩余敌人点数:”,即生命点数)
如果p.hit_points==0:
战斗=0
t、 睡眠(2)
骰子类用来模拟六面骰子,玩家和敌人用于游戏角色。在这之后,代码被用来滚动随机数和最高的数字赢得这一轮,直到玩家或敌人达到零分

我不确定如何使用这三个类之后的最后几行代码,并从中创建一个类

我需要能够在游戏中多次运行一场战斗,并且在每次战斗后存储玩家得分和扣分


我非常喜欢并喜欢对象的使用,并且希望变得更好,因此非常感谢您在这方面提供的任何帮助。

您可以重用一个类并从一个模板创建更多实例。
玩家
敌人
类具有相同的功能。只需使用带有不同参数的
\uuuu init\uuu
方法,就可以从一个类创建不同的实例

import random
import time as t

class Player:
    def __init__(self, hit_points, sides):
        self.hit_points = hit_points
        self.sides = sides

    def take_hit(self):
        self.hit_points -= 2

    def roll(self):
        return random.randint(1, self.sides)

p = Player(hit_points=10, sides=6)
e = Player(hit_points=8, sides=6)

battle = 1

while battle != 0:
    human = p.roll()
    print("Your hit score: ",human)
    enemy = e.roll()
    print("Enemy hit score: ",enemy)
    if human > enemy:
        e.take_hit()
        print("Your hit points remaining: ",p.hit_points)
        print("Enemy points remaining: ", e.hit_points)

    elif human < enemy:
        p.take_hit()
        print("Your hit points remaining: ",p.hit_points)
        print("Enemy points remaining: ", e.hit_points)

    t.sleep(2)

    if e.hit_points == 0 or p.hit_points == 0:
        battle = 0
随机导入
导入时间为t
职业球员:
定义初始(自身、生命点、侧面):
self.hit_points=命中率
self.sides=sides
def take_hit(自我):
自身命中率-=2
def辊(自身):
返回random.randint(1,self.sides)
p=球员(命中率=10,边数=6)
e=球员(命中率=8,边数=6)
战斗=1
战斗中!=0:
人类=p.roll()
打印(“你的命中分数:”,人类)
敌人=掷骰子
打印(“敌人命中分数:”,敌人)
如果人类>敌人:
e、 打
打印(“剩余生命值:”,p.生命值)
打印(“剩余敌人点数:”,即生命点数)
elif人类敌人:
p、 打
打印(“剩余生命值:”,p.生命值)
打印(“剩余敌人点数:”,即生命点数)
t、 睡眠(2)
如果e.hit_points==0或p.hit_points==0:
战斗=0

一般来说,类/对象是名词,函数/方法是动词。您应该编写一个
战斗(玩家,敌人)
函数,该函数将
玩家
敌人
对象作为参数,并返回结果。如果你真的想伸展你的OOP肌肉,想想
玩家
敌人
类是如何相似的,以及如何使用继承将这些相似性的所有代码移到一个地方。