Python 3.x Python3-面向对象编程-类和;功能
我学习Python3已经有几个月了,我刚刚开始研究面向对象编程。我问了一个关于堆栈溢出的问题,是关于我正试图编写的一个文本冒险游戏,有人建议最好使用OOP 我做了一些搜索,因为我想要一个可以在游戏中使用的非常简单的战斗系统。我有游戏的基本框架,但我想在战斗系统方面得到一些帮助 以下是我目前掌握的代码: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
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肌肉,想想玩家
和敌人
类是如何相似的,以及如何使用继承将这些相似性的所有代码移到一个地方。