回合制对战游戏——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

相关文章
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
Python 数据分析:从零开始构建你的数据科学项目
【10月更文挑战第9天】Python 数据分析:从零开始构建你的数据科学项目
67 2
|
7天前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
51 33
|
2月前
|
存储 数据可视化 数据挖掘
Python数据分析项目:抖音短视频达人粉丝增长趋势
Python数据分析项目:抖音短视频达人粉丝增长趋势
|
2月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
36 4
|
2月前
|
弹性计算 Linux iOS开发
Python 虚拟环境全解:轻松管理项目依赖
本文详细介绍了 Python 虚拟环境的概念、创建和使用方法,包括 `virtualenv` 和 `venv` 的使用,以及最佳实践和注意事项。通过虚拟环境,你可以轻松管理不同项目的依赖关系,避免版本冲突,提升开发效率。
138 3
|
3月前
|
JSON 搜索推荐 API
Python的web框架有哪些?小项目比较推荐哪个?
【10月更文挑战第15天】Python的web框架有哪些?小项目比较推荐哪个?
85 1
|
4月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
127 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
3月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
84 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
3月前
|
存储 开发工具 Python
【Python项目】外星人入侵项目笔记
【Python项目】外星人入侵项目笔记
50 3
|
3月前
|
前端开发 JavaScript API
惊呆了!学会AJAX与Fetch API,你的Python Web项目瞬间高大上!
在Web开发领域,AJAX与Fetch API是提升交互体验的关键技术。AJAX(Asynchronous JavaScript and XML)作为异步通信的先驱,通过XMLHttpRequest对象实现了局部页面更新,提升了应用流畅度。Fetch API则以更现代、简洁的方式处理HTTP请求,基于Promises提供了丰富的功能。当与Python Web框架(如Django、Flask)结合时,这两者能显著增强应用的响应速度和用户体验,使项目更加高效、高大上。
61 2