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()

推荐阅读更多精彩内容

  • 小米手环到手,已走四千步,还有四千完成今日目标 车终于洗了,洗车小哥说你这车好久没开了吧,一脸( ̄_ ̄|||),天...
    rockinfog阅读 31评论 0 0
  • 凡是电脑非硬件问题,80%的问题都能用重启解决。 19%能用重装系统解决。 至于剩下的1%,能用换电脑解决。 ——...
    神good杰阅读 470评论 0 4
  • 小时候,也许是因为家里第一个孩子,老妈又是理发师,所以小小的我尝试过整个80、90年代各种潮的发型与潮款服...
    想念刺身阅读 56评论 0 1
  • 你说尝你尽了生活的苦,找不到可以相信的人…… 在上个世纪九十年代末的深圳,聚集了有大量来自全国各地的人们...
    情为何物平平常常阅读 175评论 6 3
  • 当util模块越来越大时, 到最后会发现模块里已经包含了比较杂的功能,比较混乱, 虽然是通用小函数,但也不要一股脑...
    kamfon阅读 15评论 0 0