Python文字版《恶魔轮盘赌》

#开源项目有哪些机遇与挑战?#

大家玩过《恶魔轮盘赌》吗?
下面是一款我自制python的《恶魔轮盘赌》文字游戏。
(注:这个程序只用了一些基础的代码)

import random


name = [0, '', '']

a = [0, 0, 0, 5, 5]

b = []
c = []

k = [0, 0, 0, 0]
l = [0, 0, 0, 0]


def fun1():
    if a[3] == 0:
        print(f'{name[1]}血量归零 {name[2]}胜利')
        exit()
    elif a[4] == 0:
        print(f'{name[1]}血量归零 {name[1]}胜利')
        exit()
    elif a[1] == 0 and a[2] == 0:
        print('实弹和空弹都为0 将重新随机子弹\n')
        fun()
    else:
        print(f'{a[1]}{a[2]}空')
        print(f'{name[1]}的血量:{a[3]}')
        print(f'{name[1]}的道具:{b}')
        print(f'{name[2]}的血量:{a[4]}')
        print(f'{name[2]}的道具:{c}')
        print(f'轮到{name[1]}开枪')
        aaa = input(f'【1.射自己 2.射{name[2]} 3.使用道具】\n>')
        if aaa == '1':
            if k[1] == 1:
                if k[2] == 1:
                    print('实弹 你死了')
                    a[3] -= 2
                    a[1] -= 1
                    k[1] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
                else:
                    print('实弹 你死了')
                    a[3] -= 1
                    a[1] -= 1
                    k[1] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
            elif k[1] == 2:
                if k[2] == 1:
                    print(f'空弹 你活了下来 跳过{name[2]}回合')
                    a[2] -= 1
                    k[1] = 0
                    k[2] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun1()
                else:
                    print(f'空弹 你活了下来 跳过{name[2]}回合')
                    a[2] -= 1
                    k[1] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun1()
            elif a[1] != 0 and a[2] != 0:
                s = random.randint(1, a[1] + a[2])
                if s <= a[1]:
                    if k[2] == 1:
                        print('实弹 你死了')
                        a[3] -= 2
                        a[1] -= 1
                        k[2] = 0
                        if k[3] == 1:
                            k[3] = 0
                            print(f'手铐生效 跳过{name[2]}回合\n')
                            fun1()
                        else:
                            print()
                            fun2()
                    else:
                        print('实弹 你死了')
                        a[3] -= 1
                        a[1] -= 1
                        if k[3] == 1:
                            k[3] = 0
                            print(f'手铐生效 跳过{name[2]}回合\n')
                            fun1()
                        else:
                            print()
                            fun2()
                elif s > a[1]:
                    if k[2] == 1:
                        print(f'空弹 你活了下来 跳过{name[2]}回合')
                        a[2] -= 1
                        k[2] = 0
                        if k[3] == 1:
                            k[3] = 0
                            print(f'手铐生效 跳过{name[2]}回合\n')
                            fun1()
                        else:
                            print()
                            fun1()
                    else:
                        print(f'空弹 你活了下来 跳过{name[2]}回合')
                        a[2] -= 1
                        if k[3] == 1:
                            k[3] = 0
                            print(f'手铐生效 跳过{name[2]}回合\n')
                            fun1()
                        else:
                            print()
                            fun1()
            elif a[1] == 0 and a[2] != 0:
                if k[2] == 1:
                    print(f'空弹 你活了下来 跳过{name[2]}回合')
                    a[2] -= 1
                    k[2] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun1()
                else:
                    print(f'空弹 你活了下来 跳过{name[2]}回合')
                    a[2] -= 1
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun1()
            elif a[1] != 0 and a[2] == 0:
                if k[2] == 1:
                    print('实弹 你死了')
                    a[3] -= 2
                    a[1] -= 1
                    k[2] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
                else:
                    print('实弹 你死了')
                    a[3] -= 1
                    a[1] -= 1
                    k[2] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
        elif aaa == '2':
            if k[1] == 1:
                if k[2] == 1:
                    print(f'实弹 {name[2]}死了')
                    a[4] -= 2
                    a[1] -= 1
                    k[1] = 0
                    k[2] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
                else:
                    print(f'实弹 {name[2]}死了')
                    a[4] -= 1
                    a[1] -= 1
                    k[1] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
            elif k[1] == 2:
                if k[2] == 1:
                    print(f'空弹 {name[2]}活了下来')
                    a[2] -= 1
                    k[2] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
                else:
                    print(f'空弹 {name[2]}活了下来')
                    a[2] -= 1
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
            elif a[1] != 0 and a[2] != 0:
                s = random.randint(1, a[1] + a[2])
                if s <= a[1]:
                    if k[2] == 1:
                        print(f'实弹 {name[2]}死了')
                        a[4] -= 2
                        a[1] -= 1
                        k[2] = 0
                        if k[3] == 1:
                            k[3] = 0
                            print(f'手铐生效 跳过{name[2]}回合\n')
                            fun1()
                        else:
                            print()
                            fun2()
                    else:
                        print(f'实弹 {name[2]}死了')
                        a[4] -= 1
                        a[1] -= 1
                        if k[3] == 1:
                            k[3] = 0
                            print(f'手铐生效 跳过{name[2]}回合\n')
                            fun1()
                        else:
                            print()
                            fun2()
                elif s > a[2]:
                    if k[2] == 1:
                        print(f'空弹 {name[2]}活了下来')
                        a[2] -= 1
                        k[2] = 0
                        if k[3] == 1:
                            k[3] = 0
                            print(f'手铐生效 跳过{name[2]}回合\n')
                            fun1()
                        else:
                            print()
                            fun2()
                    else:
                        print(f'空弹 {name[2]}活了下来')
                        a[2] -= 1
                        if k[3] == 1:
                            k[3] = 0
                            print(f'手铐生效 跳过{name[2]}回合\n')
                            fun1()
                        else:
                            print()
                            fun2()
            elif a[1] == 0 and a[2] != 0:
                if k[2] == 1:
                    print(f'空弹 {name[2]}活了下来')
                    a[2] -= 1
                    k[2] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
                else:
                    print(f'空弹 {name[2]}活了下来')
                    a[2] -= 1
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
            elif a[1] != 0 and a[2] == 0:
                if k[2] == 1:
                    print(f'实弹 {name[2]}死了')
                    a[4] -= 2
                    a[1] -= 1
                    k[2] = 0
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
                else:
                    print(f'实弹 {name[2]}死了')
                    a[4] -= 1
                    a[1] -= 1
                    if k[3] == 1:
                        k[3] = 0
                        print(f'手铐生效 跳过{name[2]}回合\n')
                        fun1()
                    else:
                        print()
                        fun2()
        elif aaa == '3':
            fun11()
        else:
            print('没有此选项\n')
            fun1()


def fun11():
    aaa = input(f'道具:{b}\n请输入要使用的道具名称【0.退出】\n>')
    if aaa == '0':
        fun1()
    if b.__contains__(f'{aaa}'):
        if aaa == '啤酒':
            b.remove('啤酒')
            x = random.randint(1, a[1] + a[2])
            if x <= a[1]:
                print('已退出一发实弹\n')
                a[1] -= 1
                fun11()
            elif x > a[1]:
                print('已退出一发空弹\n')
                a[2] -= 1
                fun11()
        elif aaa == '香烟':
            b.remove('香烟')
            print('已使用香烟,血量+1\n')
            a[3] += 1
            fun11()
        elif aaa == '放大镜':
            b.remove('放大镜')
            x = random.randint(1, a[1] + a[2])
            if x <= a[1]:
                k[1] = 1
                print('实弹\n')
                fun11()
            elif x > a[1]:
                k[1] = 2
                print('空弹\n')
                fun11()
        elif aaa == '小刀':
            b.remove('小刀')
            print('已使用小刀,伤害翻倍\n')
            k[2] = 1
            fun11()
        elif aaa == '手铐':
            b.remove('手铐')
            print(f'已使用手铐,跳过{name[2]}回合一次\n')
            k[3] = 1
            fun11()
    else:
        print('没有此道具')
        fun11()


def fun2():
    if a[3] == 0:
        print(f'{name[1]}血量归零 {name[2]}胜利')
        exit()
    elif a[4] == 0:
        print(f'{name[1]}血量归零 {name[1]}胜利')
        exit()
    elif a[1] == 0 and a[2] == 0:
        print('实弹和空弹都为0 将重新随机子弹\n')
        fun()
    else:
        print(f'{a[1]}{a[2]}空')
        print(f'{name[1]}的血量:{a[3]}')
        print(f'{name[1]}的道具:{b}')
        print(f'{name[2]}的血量:{a[4]}')
        print(f'{name[2]}的道具:{c}')
        print(f'轮到{name[2]}开枪')
        aaa = input(f'【1.射自己 2.射{name[1]} 3.使用道具】\n>')
        if aaa == '1':
            if l[1] == 1:
                if l[2] == 1:
                    print('实弹 你死了')
                    a[4] -= 2
                    a[1] -= 1
                    l[1] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
                else:
                    print('实弹 你死了')
                    a[4] -= 1
                    a[1] -= 1
                    l[1] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
            elif l[1] == 2:
                if l[2] == 1:
                    print(f'空弹 你活了下来 跳过{name[1]}回合')
                    a[2] -= 1
                    l[1] = 0
                    l[2] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun2()
                else:
                    print(f'空弹 你活了下来 跳过{name[1]}回合')
                    a[2] -= 1
                    l[1] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun2()
            elif a[1] != 0 and a[2] != 0:
                s = random.randint(1, a[1] + a[2])
                if s <= a[1]:
                    if l[2] == 1:
                        print('实弹 你死了')
                        a[4] -= 2
                        a[1] -= 1
                        l[2] = 0
                        if l[3] == 1:
                            l[3] = 0
                            print(f'手铐生效 跳过{name[1]}回合\n')
                            fun2()
                        else:
                            print()
                            fun1()
                    else:
                        print('实弹 你死了')
                        a[4] -= 1
                        a[1] -= 1
                        if l[3] == 1:
                            l[3] = 0
                            print(f'手铐生效 跳过{name[1]}回合\n')
                            fun2()
                        else:
                            print()
                            fun1()
                elif s > a[1]:
                    if l[2] == 1:
                        print(f'空弹 你活了下来 跳过{name[1]}回合')
                        a[2] -= 1
                        l[2] = 0
                        if l[3] == 1:
                            l[3] = 0
                            print(f'手铐生效 跳过{name[1]}回合\n')
                            fun2()
                        else:
                            print()
                            fun2()
                    else:
                        print(f'空弹 你活了下来 跳过{name[1]}回合')
                        a[2] -= 1
                        print()
                        fun2()
            elif a[1] == 0 and a[2] != 0:
                if l[2] == 1:
                    print(f'空弹 你活了下来 跳过{name[1]}回合')
                    a[2] -= 1
                    l[2] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun2()
                else:
                    print(f'空弹 你活了下来 跳过{name[1]}回合')
                    a[2] -= 1
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun2()
            elif a[1] != 0 and a[2] == 0:
                if l[2] == 1:
                    print('实弹 你死了')
                    a[4] -= 2
                    a[1] -= 1
                    l[2] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
                else:
                    print('实弹 你死了')
                    a[4] -= 1
                    a[1] -= 1
                    l[2] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
        elif aaa == '2':
            if l[1] == 1:
                if l[2] == 1:
                    print(f'实弹 {name[1]}死了')
                    a[3] -= 2
                    a[1] -= 1
                    l[1] = 0
                    l[2] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
                else:
                    print(f'实弹 {name[1]}死了')
                    a[3] -= 1
                    a[1] -= 1
                    l[1] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
            elif l[1] == 2:
                if l[2] == 1:
                    print(f'空弹 {name[1]}活了下来')
                    a[2] -= 1
                    l[2] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
                else:
                    print(f'空弹 {name[1]}活了下来')
                    a[2] -= 1
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
            elif a[1] == 0 and a[2] != 0:
                s = random.randint(1, a[1] + a[2])
                if s <= a[1]:
                    if l[2] == 1:
                        print(f'实弹 {name[1]}死了')
                        a[3] -= 2
                        a[1] -= 1
                        l[2] = 0
                        if l[3] == 1:
                            l[3] = 0
                            print(f'手铐生效 跳过{name[1]}回合\n')
                            fun2()
                        else:
                            print()
                            fun1()
                    else:
                        print(f'实弹 {name[1]}死了')
                        a[3] -= 1
                        a[1] -= 1
                        if l[3] == 1:
                            l[3] = 0
                            print(f'手铐生效 跳过{name[1]}回合\n')
                            fun2()
                        else:
                            print()
                            fun1()
                elif s > a[2]:
                    if l[2] == 1:
                        print(f'空弹 {name[1]}活了下来')
                        a[2] -= 1
                        l[2] = 0
                        if l[3] == 1:
                            l[3] = 0
                            print(f'手铐生效 跳过{name[1]}回合\n')
                            fun2()
                        else:
                            print()
                            fun1()
                    else:
                        print(f'空弹 {name[1]}活了下来')
                        a[2] -= 1
                        if l[3] == 1:
                            l[3] = 0
                            print(f'手铐生效 跳过{name[1]}回合\n')
                            fun2()
                        else:
                            print()
                            fun1()
            elif a[1] != 0 and a[2] != 0:
                if l[2] == 1:
                    print(f'空弹 {name[1]}活了下来')
                    a[2] -= 1
                    l[2] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
                else:
                    print(f'空弹 {name[1]}活了下来')
                    a[2] -= 1
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
            elif a[1] != 0 and a[2] == 0:
                if l[2] == 1:
                    print(f'实弹 {name[1]}死了')
                    a[3] -= 2
                    a[1] -= 1
                    l[2] = 0
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
                else:
                    print(f'实弹 {name[1]}死了')
                    a[3] -= 1
                    a[1] -= 1
                    if l[3] == 1:
                        l[3] = 0
                        print(f'手铐生效 跳过{name[1]}回合\n')
                        fun2()
                    else:
                        print()
                        fun1()
        elif aaa == '3':
            fun21()
        else:
            print('没有此选项\n')
            fun2()


def fun21():
    aaa = input(f'道具:{c}\n请输入要使用的道具名称【0.退出】\n>')
    if aaa == '0':
        fun1()
    if c.__contains__(f'{aaa}'):
        if aaa == '啤酒':
            c.remove('啤酒')
            x = random.randint(1, a[1] + a[2])
            if x <= a[1]:
                print('已退出一发实弹\n')
                a[1] -= 1
                fun21()
            elif x > a[1]:
                print('已退出一发空弹\n')
                a[2] -= 1
                fun21()
        elif aaa == '香烟':
            c.remove('香烟')
            print('已使用香烟,血量+1\n')
            a[3] += 1
            fun21()
        elif aaa == '放大镜':
            c.remove('放大镜')
            x = random.randint(1, a[1] + a[2])
            if x <= a[1]:
                l[1] = 1
                print('实弹\n')
                fun21()
            elif x > a[1]:
                l[1] = 2
                print('空弹\n')
                fun21()
        elif aaa == '小刀':
            c.remove('小刀')
            print('已使用小刀,伤害翻倍\n')
            l[2] = 1
            fun21()
        elif aaa == '手铐':
            c.remove('手铐')
            print(f'已使用手铐,跳过{name[2]}回合一次\n')
            l[3] = 1
            fun21()
    else:
        print('没有此道具')
        fun21()


def fun():
    x1 = random.randint(1, 5)
    x2 = random.randint(1, 5)
    a[1] = x1
    a[2] = x2
    y1 = random.choice(['啤酒', '香烟', '放大镜', '小刀', '手铐'])
    b.append(f'{y1}')
    y2 = random.choice(['啤酒', '香烟', '放大镜', '小刀', '手铐'])
    b.append(f'{y2}')
    y3 = random.choice(['啤酒', '香烟', '放大镜', '小刀', '手铐'])
    b.append(f'{y3}')
    y4 = random.choice(['啤酒', '香烟', '放大镜', '小刀', '手铐'])
    c.append(f'{y4}')
    y5 = random.choice(['啤酒', '香烟', '放大镜', '小刀', '手铐'])
    c.append(f'{y5}')
    y6 = random.choice(['啤酒', '香烟', '放大镜', '小刀', '手铐'])
    c.append(f'{y6}')


aaa = input('请输入玩家1的名称\n>')
name[1] = aaa
aaa = input('请输入玩家2的名称\n>')
name[2] = aaa
print()
fun()
fun1()

能给我点个赞吗,制作不易

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值