Python小游戏:抢21游戏

小时候和伙伴们玩过一个数字游戏:

两个人玩,从小到大轮流数数,一个人每次只能数1-3个数,谁先数到21算输。

当时琢磨出了这个游戏的制胜诀窍,然后凭借这个游戏赢了伙伴不少零食。今天用Python写出来,让不明真相的同学试试,哈哈。

def game(step = 3, count = 5):  
    '''两人轮流从1开始从小到大数数,每次只能数1-3个数,谁数到21谁就输
    泛化一下:
        n 为每次最大步数
        max = (n + 1) * m + 1
        制胜诀窍是抢n + 1的倍数
    '''
    current_number = 0
    target = (step + 1) * count + 1
    
    print('-------游戏规则-------')
    print('''人和电脑轮流从1开始从小到大数数,每次只能数1-%d个数,
          谁数先到%d谁就输''' % (step, target))
    while True:
        n = input('走几步?')

        if n.isdigit():
            n = int(n)
            if not 0 < n < (step + 1):
                print('-------只能输入1和%d之间的数-------' % step)
                continue
        else:
            print('-------只能输入数字-------')
            continue
        #玩家走
        print('-------您选择走%d步-------' % n)
        for i in range(1,n + 1): 
            current_number += 1
            print('您>', current_number)
            if current_number >= target:
                print('-------Game Over! 您输了!-------')
                return
        #电脑走
        m = step + 1 - n
        print('-------电脑选择走%d步-------' % m)
        for i in range(1,m + 1): 
            current_number += 1
            print('电脑>', current_number)
            
game()

你可能感兴趣的:(Python小游戏:抢21游戏)