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

相关文章
|
14天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
44 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
13天前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
64 21
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
13天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
43 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
9天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
22 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
6天前
|
Python
python编写下象棋游戏|4-14
python编写下象棋游戏|4-14
|
6天前
|
前端开发 Python
前后端分离的进化:Python Web项目中的WebSocket实时通信解决方案
在现代Web开发领域,前后端分离已成为一种主流架构模式,它促进了开发效率、提升了应用的可维护性和可扩展性。随着实时数据交互需求的日益增长,WebSocket作为一种在单个长连接上进行全双工通讯的协议,成为了实现前后端实时通信的理想选择。在Python Web项目中,结合Flask框架与Flask-SocketIO库,我们可以轻松实现WebSocket的实时通信功能。
17 2
|
9天前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
27 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
24天前
|
人工智能 算法 图形学
总有一个是你想要的分享40个Python游戏源代码
这是一系列基于Python开发的游戏项目集合,包括中国象棋、麻将、足球、坦克大战、扑克等多种类型游戏,运用了Pygame等库实现图形界面与AI算法。此外还包含迷宫、数独、推箱子等益智游戏及经典游戏如《仙剑奇侠传二战棋版》和《星露谷物语》的Python版本,适合编程学习与娱乐。
50 11
|
1月前
|
Python
Python 项目及依赖管理工具技术选型
【8月更文挑战第30天】在进行Python项目及依赖管理时,有多种工具可供选择。虚拟环境工具有`virtualenv`和内置的`venv`,可为项目创建独立环境,避免依赖冲突。依赖管理工具有`pip`、`pipenv`和`poetry`,分别用于安装包、管理依赖并确保版本一致性。选型时需考虑项目需求、团队协作、易用性和社区支持等因素。
34 10
|
26天前
|
消息中间件 数据采集 数据库
庆祝吧!Python IPC让进程间的合作,比团队游戏还默契
【9月更文挑战第7天】在这个数字化时代,软件系统日益复杂,单进程已难以高效处理海量数据。Python IPC(进程间通信)技术应运而生,使多进程协作如同训练有素的电竞战队般默契。通过`multiprocessing`模块中的Pipe等功能,进程间可以直接传递数据,无需依赖低效的文件共享或数据库读写。此外,Python IPC还提供了消息队列、共享内存和套接字等多种机制,适用于不同场景,使进程间的合作更加高效、精准。这一技术革新让开发者能轻松应对复杂挑战,构建更健壮的软件系统。
28 1
下一篇
无影云桌面