[新星计划] Python面向对象练习 | 回合制对战游戏、模拟ATM、Linux用户管理类

该篇博客涵盖了使用Python编程实现回合制对战游戏、模拟ATM操作以及Linux用户管理的类设计。在游戏部分,详细介绍了角色创建、房间管理以及战斗逻辑;在ATM模拟中,实现了账户创建、取款、存款和查询余额等功能;在Linux用户管理中,包括用户和组的增删改查操作。博客提供了完整的代码实现,便于读者理解和学习。
摘要由CSDN通过智能技术生成


系列文章
https://blog.csdn.net/cpen_web/category_11089219.html


菜鸟教程:面向对象
https://www.runoob.com/python3/python3-class.html


● ①、回合制对战游戏

回合制对战游戏
 
●创建角色:名字、性别、血量、装备   ●战斗
●创建房间:                                              ●装备-防弹衣
●角色可加入房间                                       ●血量默认100
●房间内的人可互打                                   ●正常被攻击-10滴血
●房间上限2人                                            ●有防弹衣-5滴血

class Role():
    def __init__(self,name,sex,blood=100,body_armor=None):
        self.name = name
        self.sex = sex
        self.blood = blood
        self.body_armor = body_armor
        self.room = None
    def attack(self,other):
        if self.room == other.room:	# 注:同一房间
            if self != other:		# 注:不同的人
                if self.blood > 0 and other.blood > 0:
                    reduce_blood = 5 if other.body_armor else 10
				# 注:body_armor为假 返回10(没有设置防弹衣)
                    other.blood -= reduce_blood
                    print(f"{
     self.name}攻击{
     other.name} {
     reduce_blood}点血量\t{
     self.name}当前血量:{
     self.blood}\t{
     other.name}当前血量:{
     other.blood}")
                else:
                    print("其中一方已死亡,不能攻击")
                    exit()
            else:
                print("你不能攻击自己")
        else:
            print("攻击对象,不在同一个房间")
class Room():
    def __init__(self,name):
        self.member = []
        self.name = name
    def join(self,role):
        if role.room == None:
	# 注:在角色的类里定义的属性room
            if len(self.member) < 2:
                self.member.append(role)
		# 注:member房间的属性,房间只能加2个人 所以<2
                role.room = self.name
		# 注:达到条件,定义角色加入到 某个房间
            else:
                print("此房间已满")
        else:
            print("此角色已经加入房间了")

role_dict = {
   }  # 存放初始化实例	# 注:存放名字和对象的关系
room_dict = {
   }  # 存放初始化实例
while True:
    print("请选择:1.创建角色\t2.创建房间\t3.加入房间\t4.开始战斗\t5.退出")
    enter_number = input("请输入你的选择\t")
    if enter_number.isdigit():
        enter_number = int(enter_number)
        if 1 <= enter_number <=5:
            if enter_number == 1:
                name, sex = input("请输入角色的姓名与性别,空格隔开\n").split()
		#注:split()是为了 分割 将字符 赋给2个变量
                role_dict[name] = Role(name, sex)
                def_blood = input("输入自定义血量\n")
                if def_blood.isdigit():
                    role_dict[name].blood = int(def_blood)
                    print(f"自定义成功,用户{
     name}当前血量{
     role_dict[name].blood}")
                else:
                    print(f"自定义失败,用户{
     name}当前血量{
     role_dict[name].blood}")
                wear_body_armor = input("输入y装备防弹衣\n")
                if wear_body_armor == "y":
                    role_dict[name].body_armor = 1
            elif enter_number == 2:
                name = input("请输入房间的名字\n")
                room_dict[name] = Room(name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mycpen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值