![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/573754095896114.jpg "#left"大佬们这个怎么写
2条回答 默认 最新
- 梦幻精灵_cq 2023-10-30 12:56关注
- 代码运行效果截屏图片
设置了默认玩家昵称
除了玩家昵称外,我都采用了随机生成:生命值、攻击值是500~1000的随机整数,暴击率、闪避率是0~1之间的小数。我没有设定随机数种子seed(),让模拟游戏更具“随机性”。
python代码
#!/sur/bin/nve python # coding: utf-8 class Game(): ''' hp: health point # 生命值。 av: attack value # 攻击值。 csr: crotical strike rate # 暴击率。 far: flash avoidance rate # 闪避率。 ''' def __init__(self, name, hp, av, csr, far): self.name = name self.hp = hp self.av = av self.csr = csr self.far = far def attack(self, b): from random import choices killValue = self.hp*choices([2, 1], [self.csr, 1-self.csr])[0]*choices([1, 0], [b.far, 1-b.far])[0] b.hp -= killValue tipA = f"\n◎ {self.name}向{b.name}发动了{killValue}" if killValue else '' tipB = f"\n◎ {b.name}躲开了!" if not killValue else '' tipC = f"\n◎ {b.name}的生命值降低到{b.hp}" if killValue else '' tipD = f"\n◎ {b.name}失败了!" if b.hp <= 0 else '' print(f"{tipA}{tipB}{tipC}{tipD}") return True if b.hp <= 0 else False def main(): from random import randint from random import random s = input(f"\n输入玩家昵称(如梦幻精灵_cq 小精灵):\n\n{'':>13}_").strip() a, b = s.split() if s else ('梦幻精灵_cq', '小精灵') a, b = Game(a, randint(500, 1000), randint(500, 1000), random(), random()), Game(b, randint(500, 1000), randint(500, 1000), random(), random()) flag = 0 k = 1 while not flag: print(f"\n\n{f'第{k:0>2}回合':~^37}") flag = a.attack(b) a, b = b, a k += 1 if __name__ == '__main__': main() # 调用主函数,开始游戏。
- 效果优化
(正在整理学习笔记,修正源码详见学习笔记本回答已整理成学习笔记Python类模拟对战游戏,请跳转翻阅。)
解决 无用评论 打赏 举报 编辑记录 - 代码运行效果截屏图片
悬赏问题
- ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
- ¥15 使用百度地图api 位置函数报错?
- ¥15 metamask如何添加TRON自定义网络
- ¥66 关于川崎机器人调速问题
- ¥15 winFrom界面无法打开
- ¥30 crossover21 ARM64版本安装软件问题
- ¥15 mymetaobjecthandler没有进入
- ¥15 mmo能不能做客户端怪物
- ¥15 osm下载到arcgis出错
- ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出