Python:CPU和人的21点对决

发布时间:2019-09-07 08:11:32编辑:auto阅读(1556)

    # coding:utf-8
    # __author__: 神仙也考试
    # __author time__: 2017/8/8
    import random
    print """
    需求:
        1、初始CPU和人各随机拥有2张牌;
        2、各计算得出初始2张牌的总数;
        3、当拥有的牌数小于16点则自动新增一张牌;
        4、新增的牌进入计算总和;
        5、人的计算中:当大于等16点时候进行选择是否加牌;当加的牌大于等于22点,则自动停止;
        6、CPU的计算中:当小于16点则自动新增牌并计算;当大于16点则自动停止;
        7、最后得出的值进行比较
        8、比较规则:
        【1】都大于等于22点,则和局;
        【2】都小于22点时,若两个数相等,则和局;
        【3】点数大者为赢,点数小者为输。
    """
    print "*************** 开始游戏 ***************"
    # 初始化4个随机1-10的整数
    number1 = random.randint(1, 10)
    number2 = random.randint(1, 10)
    number3 = random.randint(1, 10)
    number4 = random.randint(1, 10)
    # 初始化CPU和人的随机列表
    man_numbers = [number1, number2]
    cpu_numbers = [number3, number4]
    # 初始化CPU和人的总数
    man_count = 0
    cpu_count = 0
    # 初始化循环标识
    flag_cpu = 1
    flag_man = 1
    # **************************************
    # ############# 定义人行为 #############
    # **************************************
    # 计算初始人得到的总数
    for i in man_numbers:
        man_count = man_count + i
    print "你拥有的牌是 %s " % man_numbers
    print "你的牌数总计点数是 %s" % man_count
    if man_count < 16:  # 小于16则继续自动添加牌到16点以上
        print "拥有的牌数小于16点,自动添加新牌到16点以上..."
        while flag_man == 1:
            man_random1 = random.randint(1, 10)     # 获得随机值,保证每次取到的都是一个新的随机值
            man_numbers.append(man_random1)    # 把获得的随机值添加到列表中
            man_count = man_count + man_numbers[-1]   # 始终加上列表的最后一个值
            if man_count >= 16 and man_count <22:
                while flag_man == 1:
                    print "你拥有的牌数点数大于16点,总数为 %s,是否需要继续添加新牌?" % man_count
                    print "任意键表示继续要牌,输入大写Q或小写q,表示退出!"
                    get_key = raw_input("请输入:\n")
                    if get_key == 'Q' or get_key == 'q':
                        flag_man = 0
                    else:
                        man_random2 = random.randint(1, 10)   # 获得随机值,保证每次取到的都是一个新的随机值
                        man_numbers.append(man_random2)   # 把获得的随机值添加到列表中
                        man_count = man_count + man_numbers[-1]  # 始终加上列表的最后一个值
                        if man_count >= 22:
                            flag_man = 0
            if man_count >= 22:
                flag_man = 0
        print """******************************"""
        print "当前你的牌数总数是 %s" % man_count
        print "当前你拥有的牌是 %s" % man_numbers
    else:
        while flag_man == 1:
            print "你拥有的牌数点数大于16点,总数为 %s,是否需要继续添加新牌?" % man_count
            print "任意键表示继续要牌,输入大写Q或小写q,表示退出!"
            get_key = raw_input("请输入:\n")
            if get_key == 'Q' or get_key == 'q':
                flag_man = 0
            else:
                man_random3 = random.randint(1, 10)  # 获得随机值,保证每次取到的都是一个新的随机值
                man_numbers.append(man_random3)   # 把获得的随机值添加到列表中
                man_count = man_count + man_numbers[-1]  # 始终加上列表的最后一个值
                if man_count >= 22:
                    flag_man = 0
        print """******************************"""
        print "当前你的牌数总数是 %s" % man_count
        print "当前你拥有的牌是 %s" % man_numbers
    # **************************************
    # ############# 定义CPU行为 ############
    # **************************************
    # 计算初始CPU得到的总数
    for j in cpu_numbers:
        cpu_count = cpu_count + j
    if cpu_count < 16:
        while flag_cpu == 1:
            # CPU获取随机值
            cpu_random1 = random.randint(1, 10)
            cpu_numbers.append(cpu_random1)
            cpu_count = cpu_count + cpu_numbers[-1]
            if cpu_count >= 16:
                flag_cpu = 0
        print """******************************"""
        print "CPU的总和是 %s" % cpu_count
        print "当前CPU拥有的牌是 %s" % cpu_numbers
    else:
        print """******************************"""
        print "CPU的总和是 %s" % cpu_count
        print "当前CPU拥有的牌是 %s" % cpu_numbers
    # **************************************
    # ######### 比较CPU和人的值 ###########
    # **************************************
    print """******************************"""
    if man_count >= 22 and cpu_count < 22:
        print "CPU赢了..."
        print "你的总数大于22,你输了..."
    elif man_count < 22 and cpu_count >= 22:
        print "你赢了..."
        print "CPU的总数大于22,CPU输了..."
    elif man_count <= 21 and cpu_count <= 21:
        if man_count > cpu_count:
            print "你赢了..."
            print "你的总数为:%s" % man_count
            print "CPU输了..."
            print "CPU的总数为:%s" % cpu_count
        elif man_count < cpu_count:
            print "CPU赢了..."
            print "CPU的总数为:%s" % cpu_count
            print "你输了..."
            print "你的总数为:%s" % man_count
        else:
            print "和局..."
            print "你和CPU的总数都为:%s" % man_count
    else:
        print "和局..."
        print "你和CPU的总数都大于22..."
    print "*************** 游戏结束 ***************"


关键字