python练习之双人对战
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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构