1 目的
为了巩固自己近期学习的python知识,所以写了一个demo加深我对python的理解
2 demo需求
模拟两个人互相对战的过程,其中两个人初始血量为100,都可以可以回血,通过各种攻击手段击杀对方。
3 项目实现
先定义一个Role类,去模拟人这个对象,在这个类中,暂时只设置的姓名和血量两个类属性。然后将攻击手段和回血手段抽象为类方法,让Role对象去调用,就相当于双方的对战。
类属性的初始化和状态的打印
攻击方法
回血方法
主要代码
先初始化两个Role对象
然后通过双方的当前血量去控制循环的结束与否
其中,我是通过random.randint这个函数去实现随机一个人去进行攻击或者回血的状态
choose方法
为了避免代码的冗余,我将部分重复的代码抽出,写成了一个方法,方便之后的调用:
最后附上代码
点击查看代码
import random
class Role:
def __init__(self, name, hp):
self.name = name
self.hp = hp
pass
def __str__(self):
return '{}还剩下{}滴血'.format(self.name, self.hp)
pass
def tong(self, enemy):
enemy.hp -= 10
print('{}捅了{}一刀'.format(self.name, enemy.name))
pass
def kanren(self, enemy):
enemy.hp -= 15
print('{}砍了{}一刀'.format(self.name, enemy.name))
pass
def chiyao(self):
self.hp += 10
print('{}吃药加了10滴血'.format(self.name))
pass
def choose(role, enemy, m):
if m == 1:
role.tong(enemy)
elif m == 2:
role.kanren(enemy)
else:
role.chiyao()
print(role)
print(enemy)
x = Role('张三', 100)
y = Role('李四', 100)
while x.hp > 0 and y.hp > 0:
n = random.randint(1, 2)
if n == 1:
m = random.randint(1, 3)
choose(x, y, m)
print()
else:
m = random.randint(1, 3)
choose(y, x, m)
print()