用python基础语法写 ‘ 小游戏 ‘

import random


#创造父类敌方小兵
class Monster:
    mname = ''
    def __init__(self):
        self.mname = "monster"

#创造敌方小兵对象1

class Monster1(Monster):
    m_live = 0
    def __init__(self, n, lu1):
        super().__init__()
        self.m_live = lu1
        match n:
            case 1:
                self.m_name = "容嬷嬷"
            case 2:
                self.m_name = "一只耳"
            case 3:
                self.m_name = "黑熊精"
            case 4:
                self.m_name = "僵尸博士"
            case 5:
                self.m_name = "奔波霸儿"

class Monster2(Monster):
    m_live = 0
    def __init__(self, n, lu2):
        super().__init__()
        self.m_live = lu2
        match n:
            case 1:
                self.m_name = "黑蝙王"
            case 2:
                self.m_name = "灭霸"
            case 3:
                self.m_name = "灰太狼"
            case 4:
                self.m_name = "特朗普"
            case 5:
                self.m_name = "霸波奔儿"

#与敌人战斗函数
def fight(m_name,m_power,m_live):
    if power > m_live:
        print(' ' * 100)
        print(f"恭喜{name}成功斩杀  {monster.mname}")
        return 1
    elif power == m_live:
        print(' ' * 100)
        print(f"可惜了,你与{m_name}同归于尽")
        return 0
    else:
        print(' ' * 100)
        print(f"{m_name}:垃圾,就这给我提鞋都不配")
        return -1

#菜单
def menu():
    while True:
        # 显示用户的选项
        print(' ' * 100)
        print('-' * 100)
        print('-' * 100)
        print('请选择要做的操作:')
        print('\t1.查询角色')
        print('\t2.创建角色')
        print('\t3.删除角色')
        print('\t4.开始对局')
        print('\t5.退出游戏')
        ch = int(input())
        match ch:
            case 1:
                inquiry()
            case 2:
                addCharacter()
            case 3:
                drop(Character,'角色表','角色')
            case 4:
                if len(Character)!=0:
                    break
                else:
                    print("你还未创键角色,请先创建角色!")
            case 5:
                exit()

#查找角色
def inquiry():
    if len(Character) != 0:
        print("请输入要查找角色的序号\n"
              "或者输入0--展示所有角色")
        n = int(input())
        if n==0:
            for item in Character:
                print(item)
        else:
            if n<=len(Character):
                print(Character[n-1])
    else:
        print("还未创建角色,快去创建角色吧")

#创建角色
def addCharacter():
    while True:
        print("请完善身份信息:")
        while True:
            print("请选择你的职业,1.厉不厉害你坤哥    2.马可逼罗   3.蜘蛛侠    4.18岁较小萝莉    5.马保国老师")
            print('-' * 100)
            try:
                js = int(input("\t选择职业:"))
                match js:
                    case 1:
                        print("\t辉煌迎来虚伪的看客,黄昏见证真正的信徒!哎呦,不错呦,小黑子才是真爱粉")
                    case 2:
                        print("狗都不玩王者荣耀")
                        print("你的手机被妈妈收走了,游戏失败")
                        print('-' * 100)
                        break
                    case 3:
                        print("\t没能救下玛丽·简,这次我代豪成阳一定要救下美...大魔头")
                    case 4:
                        print("呸,不要脸,你下贱,你还选上小萝莉了")
                        print(f"性格变态,{name}被游戏管理员踢出游戏,游戏失败")
                        print(' ' * 100)
                        break
                    case 5:
                        print("\t诶,朋友们好啊,我是混元形意太极门掌门人——马保国·代豪成阳,我劝!这位年轻人好自为之,"
                              "好好反思,以后不要再犯这样的聪明,小聪明,啊,呃,武林要以和为贵,要讲武德,不要搞窝里斗")
                    case _:
                        print("数字都输不好,你不配玩游戏")
                        print("游戏失败")
                        break
            except ValueError:
                print(' '*100)
                print("----输入错误")
                break
            sno = len(Character)+1
            career = Career[js-1]
            sex = input("\t请输入性别:")
            age = input("\t请输入年龄:")
            print("\t请选择门派:1.长沙富婆俱乐部    2.六位帝皇丸    3.中国先疯大队    4.姻缘阁")
            try:
                school = School[int(input("\t请输入门派:"))-1]
            except IndexError as e:
                print("输入错误,角色创建失败!",e)
                break
            dict1 = {'ID':sno,'职业':career,'性别':sex,'年龄':age,'门派':school}
            Character.append(dict1)
            print("角色创建成功!职业选择完毕,初始攻击力为 10 血量为20")
            break
        try:
            print('-'*100)
            if input("是否继续创建角色:\n"
                         "1:继续创建角色    0:否,下一步\n"
                         "输入:")!='1':
                break
        except ValueError as e:
            print("输入错误",e)

#删除表元素
def drop(list_1,l_name,m):
    if len(list_1) != 0:
        print("请输入要删除角色的序号,或者输入0,清除所有角色")
        try:
            num = int(input())
            if num == 0:
                list_1.clear()
            else:
                del (list_1[num - 1])
                print("删除成功")
        except IndexError as e:
            print("超出列表范围")
    else:
        print(f"{l_name}还未添加任何{m},快去添加新{m}吧")

#打开商店
def store():
    while True:
        print(' ' * 100)
        print('-' * 100)
        print('-' * 100)
        global money,power
        print(f"欢迎光临装备商店\n各种装备大促销,童叟无欺\n"
              f"带上你的30块钱亲爱的,不买东西你是真穷到家了\n"
              f"选择\n1、购买装备\n2、留言版\n3、我的装备\n4、退出商店")
        k = input("请选择:")
        match k:
            case "1":
                goods()
                print('-' * 100)
                if input("是否支付:1,支付   0,算了,再考虑考虑") == '1':
                    money, power = buy()
                else:
                    print("支付失败")
            case "2":
                boards()
            case "3":
                buy()
            case "4":
                break
            case _ :
                print("输入错误,本店不招待数学不好的人")
                break

#选择商品
def goods():
    for m, j in enumerate(store_list):
        print("序号: %d 装备名:%s 价格:%d元     增加攻击力:%d 元\n"
              "     效果:%s" % (m + 1, j[0].center(8,' '), j[1], j[2], j[3]))
    while True:
        try:
            s = int(input("请输入商品的序号,0则退出选择,前往购物车"))
            if s == 0:
                break
            else:
                #验证商品是否已购买
                if store_list[s-1] in goods_list:
                    print("你已拥有该装备,请重新选择")
                elif store_list[s-1]  in select_car:
                    print("购物车已添加该商品,无须再次添加")
                else:
                    select_car.append(store_list[s - 1])
                    print("选择成功")
        except ValueError:
            print("无效值")

    print('您选择的装备是:')
    for k in select_car:
        print(k[0])
    print(' '*100)
    print('已加入购物车')

#支付金币
def buy():
    t = 0
    p = 0
    print('您选择的商品:')
    for h in select_car:
        print(h)
        t += h[1]
    print('共计%d元' % t)
    print("1,支付         0,退出购物车")
    while int(input('选择:')):
        if money >= t:  # 支付金额大于需支付额
            for j in select_car:
                goods_list.append(i)
                p += j[2]
            select_car.clear()
            print('已支付 %d 金币 ,余额 %d 金币' % (t, money - t))
            return money-t,power+p
        else:
            print('钱不够!穷鬼,晦气\n')
            print('-'*100)
            if input('1,删除部分商品重新支付      0,清空和购物车,老子TMD不买了') == '1':
                drop(select_car,'购物车','商品')
            else:
                select_car.clear()
                return money,power

#留言板
def boards():
    while True:
        m = input('请您留下富贵的意见')
        keywords = '不好,差,烂,不行'
        if any([w in m and w for w in keywords.split(',')]):
            print("你已被系统禁言")
            print('-' * 100)
        else:
            message.append(m)
        y = input('按1则可以查看所有评论\n'
                  '按0退出留言板')
        if y == '1':
            for i in message:
                print(i)

#我的装备
def gear():
    for i in goods_list:
        print(i)

#角色信息表
Character =[]
#职业表
Career = ['厉不厉害你坤哥','马可逼罗','蜘蛛侠','18岁娇小萝莉','马保国老师']
#门派表
School = ['长沙富婆俱乐部','六位帝皇丸','中国先疯大队','姻缘阁']
#商店列表
store_list = [('无极战刃',20,20,'拥有它可以提升暴击几率'),('六味地黄丸',30,40,'全方位增强属性'),
        ('金箍棒',38,50,'借助其内部残留的一丝大圣之力'),
        ('黑丝教师的教鞭',60,70,'(男性角色):获得短暂狂爆效果,增加攻速与暴击率全方位属性提升;'
        '(女性角色)佩戴则增加个人魅力点100点,获得妲己属性,用于辅助战斗'),
        ('电耗子的尾巴',40,66,'吞下可获得无尽战刃升级版:闪电飞廉,同时失去理智,化身为小疯子,见人就砍')]
#我的商品列表
goods_list = []
#留言板
message=[]
#购物车
select_car = []



#男主代豪成阳
name ="代豪成阳"
print(' ' * 100)
print('-' * 100)
print('-' * 100)
print(f"欢迎光临 {name} 的英雄血泪史")
print(f"{name}宣言:")
print(f"hahaha,今日我{name}就要踏上这紫禁之巅,征服大胸...奥不,是女魔头\n")
print('-' * 100)

#初始状态
live = 20   #初始血量
power = 10  #初始攻击力
money = 30  #初始金币
#菜单
menu()
count = 0
while count < 1:
    i = 1
    while 0< i <= 5:
        print(' ' * 100)
        print('-' * 100)
        print(f"欢迎来到第{i}关")
        print("请选择路径(1,2),,输入3进入商店提升自己,输入4战术性撤退")
        lu = input("输入路径:")
        #小怪随机血量
        lu1 = random.randint(power -6, power + 3)
        lu2 = random.randint(power -7, power + 3)
        #路径选择
        match lu:
            case "1":
                monster = Monster1(i, lu1)
                n = fight(monster.m_name,power, monster.m_live)
            case "2":
                monster = Monster2(i, lu2)
                n = fight(monster.m_name, power,monster.m_live)
            case "3":
                store()
            case "4":
                print(' ' * 100)
                print(f"{name}夹杂尾巴跑路了")
                menu()
                break
            case _:
                print("数字都输不好,你不配玩游戏")
                print("再给你个机会好好输")
                continue
        #战斗结果判断
        if n > 0:
            power += monster.m_live//2
            money += random.randint(25,40)
            print(' ' * 100)
            print(f"恭喜击败{monster.m_name}")
            print(f"战斗力升级为:{power}")
            print(f"获得金币奖励,目前剩余金币{money}")
            i += 1
            continue
        else:
            i = 1
            power = 10
            continue
    #最后一关
    if i == 6:
        print(f"恭喜{name}来到最终关卡")
        print("机会只有一次,输入1,进行战斗,输入2,逃跑")
        choose = int(input())
        if choose == 1:
            print("真男人永不退缩,fire home")
            f=fight("最终boss",power, 180)
            if f==1:
                break
            else:
                continue
        else:
            print(f"{name}已经闻风丧胆,双腿颤抖了边逃边说,君子报仇,10年不晚")
            continue

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值