【Python】闲来无事用Python写一个小游戏

其实什么语言都可以实现,此代码仅为练习python而写
游戏规则:在1-9中随机取n个不重复的数,玩家去猜这n个数以及对应的位置,n的范围是1-9,每次猜测会有检验结果,如谜底为5269 玩家猜2468 检验结果为1A1B
A:数字和位置都正确,B:仅数字可以对应,但位置不对。8次猜测机会,8次之内猜出结果则胜利,反之则失败。
附上源码

import random

def makeList(count):
    i = 0
    list = []
    while i < count:
        a = random.randint(1, 9)
        if list.count(str(a)) == 0:
            list.append(str(a))
        else:
            continue
        i += 1
    # print('谜底:',end='')
    # print(list)
    return list


def main(list):
    listLen = len(list)

    j = 1
    times = int(1.685**listLen)
    print('游戏次数是:'+str(times))
    success = ''
    error = 0
    while j <= times:
        if error >= 3:
            break
        a = input('请输入你猜的结果'+str(j)+':')
        if len(a) == listLen:
            k = 0
            newlist = []
            while k < listLen:
                newlist.append(a[k])
                k += 1
            c = 0
            double = False
            while c < listLen-1:
                if newlist.count(a[c]) > 1:
                    print('数字不能重复')
                    error += 1
                    double = True
                    break
                c += 1
            if double:
                continue
            n = 0
            while n < listLen:
                if list[n] == newlist[n]:
                    success += 'A'
                else:
                    if list.count(newlist[n]) == 1:
                        success += 'B'
                n += 1
            aCount = success.count('A')
            bCount = success.count('B')
            success = ''
            if aCount > 0:
                success += str(aCount)+'A'
            if bCount > 0:
                success += str(bCount)+'B'
            if success == '':
                success = '数字和位置都没有正确的'
            print('验证:'+success)
            if success == str(listLen)+'A':
                break
            success = ''
        else:
            print('请输入'+str(listLen)+'位数字!')
            error += 1
            continue
        j+=1
    if success != '':
        print('成功')

    else:
        if error == 3:
            print('失误次数过多,',end = '')
        print('失败')
    print('答案是:',end='')
    print(list)



if __name__ == '__main__':
    print('''游戏规则:在1-9中随机取n个不重复的数,玩家去猜这n个数以及对应的位置,n的范围是1-9,每次猜测会有检验结果,
        如谜底为5269 玩家猜2468 检验结果为1A1B
        A:数字和位置都正确
        B:仅数字可以对应,但位置不对。
        8次猜测机会,8次之内猜出结果则胜利,反之则失败。''')
    print()

    isJixu = 1
    while isJixu == 1:
        count = int(input('请选择游戏难度(最低为1,最大为9):'))
        print('游戏开始!')

        list = makeList(count)
        main(list)

        cca = 0
        while cca < 5:
            isJixu = int(input('是否继续游戏(是:1,否:0)?'))
            if isJixu != 0 and isJixu != 1:
                print('请输入0或1,不要输入其他字符')
            if isJixu == 0:
                print('游戏结束')
                break
            else:
                print('游戏继续')
                break
            cca += 1
        if cca == 5:
            print('不想玩别玩了')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老子要吃大西瓜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值