云非鹤 2023-10-29 22:43 采纳率: 0%
浏览 10

🤔用Python编程小游戏

  • 写回答

2条回答 默认 最新

  • 梦幻精灵_cq 2023-10-30 12:56
    关注
    • 代码运行效果截屏图片

      img


      设置了默认玩家昵称

      img


        除了玩家昵称外,我都采用了随机生成:生命值、攻击值是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() # 调用主函数,开始游戏。
    
    
    • 效果优化

      img


      img


      img

    (正在整理学习笔记,修正源码详见学习笔记本回答已整理成学习笔记Python类模拟对战游戏,请跳转翻阅。)


    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 10月29日

悬赏问题

  • ¥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分钟内自动退出