回合制对战游戏——python小项目

简介: 回合制对战游戏——python小项目

1、需求分析:

①创建角色:名字、性别、血量、装备

战斗:装备-防弹衣、血量默认100、正常被攻击-10滴血 、有防弹衣-5滴血

②创建房间:角色可加入房间 ,房间的人可互打,房间上限2人。

2、代码实现

class Role():
    def __init__(self,name,sex,blood=100,euqip=None):
        self.name = name
        self.sex = sex
        self.blood = blood
        self.euqip = euqip
        self.room = None
    def attack(self,other):
        if self.room == other.room:  #在同一个房间里面
            if self != other:       #至少有两个角色
                if self.blood > 0 and other.blood > 0:
                    if other.equip:
                       other.blood -= 5 #有防弹衣
                    else:
                        other.blood -= 10 #正常被攻击
                    print(f"{self.name}攻击{other.name}")
                    print(f"{self.name}的血量还剩:{self.blood}")
                    print(f"{other.name}的血量还剩:{other.blood}")
                else:
                    print("其中一方血量不足,不能攻击")
                    return False
            else:
                print("至少要有两个角色才能进入战斗模式")
        else:
            print("攻击对象不在同一个房间")
class Room(Role):
    def __init__(self,name):
        self.member = []  #房间成员为空列表
        self.name = name
    def join(self, role):
        # 角色的类里定义room
        if not is role.room:
            if len(self.member) < 2:  #房间里上限两个人,只能加入两个人
                self.member.append(role) #增加角色
                role.room = self.name #将定义初始房间里的角色
            else:
                print("这个房间的人数已满")
        else:
            print("这个角色已经加入房间了")
role_dict = {}  #初始化实例存放在role_dict字典中    # 注:存放名字和对象的关系
room_dict = {}  #初始化实例存放在room_dict字典中
while True:
    print("欢迎来到回合制对战游戏".center(30,"*"))
    print("你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗  5:退出")
    option = input("请输入你的选择:")
    if option.isdigit():
        option = int(option)
        if option == 1:
            name = input("请输入角色的姓名:")
            sex = input("请输入角色的性别:")
            role_dict[name] = Role(name, sex) #Role类实例化对象中的属性name,sex存入字典中,keys是角色,values是Role的整个实例化对象
            role_blood = input("输入这个角色的血量:")
            if role_blood.isdigit():
                role_dict[name].blood = role_blood #定义当前角色的血量
                # print(role_dict[name].blood)
                print(f"角色创建成功,{name}当前血量为{role_dict[name].blood}")
            else:
                print(f"角色创建失败,{name}当前血量{role_dict[name].blood}")
            equip = input("请输入装备(F装备防弹衣):")
            if equip == "F":
                role_dict[name].euqip = 1 #=1表示为真
                print(f"{name}配有防弹衣")
            else:
                print(f"{name}没有配备防弹衣,将正常被攻击")
        elif option == 2:
                name = input("请输入房间的名字:")
                room_dict[name] = Room(name)  #Room类实例化对象中的属性name存入字典中,keys是房间名,values是整个房间对象
                print(room_dict)
        elif option == 3:
                print(f"当前已有的角色是{role_dict.keys()},房间是{room_dict.keys()}")
                role_name = input("请输入要加入的角色:")
                room_name = input("请输入要加入的房间:")
                # 角色类中的属性加入到房间类中的属性
                room_dict[room_name].join(role_dict[role_name])#从字典取出房间对象,调用join()方法将用户对象加入房间
        elif option == 4:
                print(f"当前房间有{room_dict.keys()}")
                room_name = input("请输入要进行战斗房间的名称:")  #从已经有的房间中进行选择
                if len(room_dict[room_name].member) == 2: #调用字典中的成员对象
                    print(room_dict[room_name].member)
                    #房间实例获取角色类中的对象,
                    while True:
                        room_dict[room_name].member[0].attack(room_dict[room_name].member[1])#从字典中取出房间实例对象中的member属性
                        room_dict[room_name].member[1].attack(room_dict[room_name].member[0]) # 双方可互打
                else:
                    print(f"房间{room_name}人数不足2人,对战失败!")
                    continue
        elif option == 5:
            print("退出对战")
            break
    else:
        print("输入错误,请重新输入!")

3、运行结果

*********欢迎来到回合制对战游戏**********

你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗  5:退出

请输入你的选择:1

请输入角色的姓名:hzw

请输入角色的性别:男

输入这个角色的血量:100

角色创建成功,hzw当前血量为100

请输入装备(F装备防弹衣):F

hzw配有防弹衣

*********欢迎来到回合制对战游戏**********

你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗  5:退出

请输入你的选择:1

请输入角色的姓名:hhh

请输入角色的性别:男

输入这个角色的血量:150

角色创建成功,hhh当前血量为150

请输入装备(F装备防弹衣):

hhh没有配备防弹衣,将正常被攻击

*********欢迎来到回合制对战游戏**********

你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗  5:退出

请输入你的选择:2

请输入房间的名字:ROOT

{'ROOT': <__main__.Room object at 0x0000018DF695AE80>}

*********欢迎来到回合制对战游戏**********

你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗  5:退出

请输入你的选择:3

当前已有的角色是dict_keys(['hzw', 'hhh']),房间是dict_keys(['ROOT'])

请输入要加入的角色:hzw

请输入要加入的房间:ROOT

*********欢迎来到回合制对战游戏**********

你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗  5:退出

请输入你的选择:3

当前已有的角色是dict_keys(['hzw', 'hhh']),房间是dict_keys(['ROOT'])

请输入要加入的角色:hhh

请输入要加入的房间:ROOT

相关文章
|
6月前
|
异构计算 Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
503 1
|
6月前
|
API 语音技术 开发者
Python 项目打包,并上传到 PyPI,分享项目
本文介绍了如何使用 Poetry 打包并发布一个 Python 项目至 PyPI。内容包括:项目创建、配置 `pyproject.toml` 文件、构建软件包、上传至 PyPI、安装与使用。通过实例 iGTTS 展示了从开发到发布的完整流程,帮助开发者快速分享自己的 Python 工具。
|
6月前
|
人工智能 Shell Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
296 0
|
6月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
9月前
|
监控 大数据 API
Python 技术员实践指南:从项目落地到技术优化
本内容涵盖Python开发的实战项目、技术攻关与工程化实践,包括自动化脚本(日志分析系统)和Web后端(轻量化API服务)两大项目类型。通过使用正则表达式、Flask框架等技术,解决日志分析效率低与API服务性能优化等问题。同时深入探讨内存泄漏排查、CPU瓶颈优化,并提供团队协作规范与代码审查流程。延伸至AI、大数据及DevOps领域,如商品推荐系统、PySpark数据处理和Airflow任务编排,助力开发者全面提升从编码到架构的能力,积累高并发与大数据场景下的实战经验。
Python 技术员实践指南:从项目落地到技术优化
|
8月前
|
存储 算法 区块链
从零实现Python扫雷游戏:完整开发指南与深度解析
扫雷作为Windows经典游戏,承载了许多人的童年回忆。本文将详细介绍如何使用Python和Tkinter库从零开始构建一个功能完整的扫雷游戏,涵盖游戏设计、算法实现和界面开发的全过程。
654 1
|
9月前
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
1128 1
|
11月前
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
357 21
怎么开发Python第三方库?手把手教你参与开源项目!

推荐镜像

更多