双人报数小游戏,指定总数,每人每次报1或2,全部相加,最后一个人报数为赢

游戏玩法:

两人轮流报数,每次智能报1或者2,把两个人报的所有数加起来,谁报数后和为10,谁就获胜。必赢游戏

比赢策略

游戏本质要赢需要看总数和谁先开始报数,结合才能确定谁能赢,程序依靠随机整数确定谁先报数来赢

栗子

假如总数是21
21 % 3 = 7
没有余数所以是对手先报数可以必赢,根据对手报的数用3相减(使用3相减是因为对方和我方每次报数一定能够组成是数字是3)
20 % 3 = 6 余 2
我方先报余数2,然后根据对手报数,我方报数用3相减最后就可以赢

import random
print("游戏玩法:")
print("两人轮流报数,每次智能报1或者2,把两个人报的所有数加起来,谁报数后和为10,谁就获胜。必赢游戏")
print("游戏本质要赢需要看总数和谁先开始报数,结合才能确定谁能赢,程序依靠随机整数确定谁先报数来赢")

sum_num = random.randint(3,100)
print("="*99)
print(f"游戏现在开始:总数为:{sum_num}")


def decorator(func):
    

def counting_game(sum_num):
    if sum_num % 3 == 0:
        # 对手先报
        one_num = int(input("您先开始,请输入1或者2: "))
        print(f"我报: {3 - one_num}")
        one_num += 3 - one_num
        print(f"[当前总数为:{one_num}]")
        
    else:
        # 我先报
        one_num = sum_num % 3
        print(f"我先报数: {one_num}")
    cur_num = one_num
    while True:
        if cur_num >= sum_num:
            break
        e_num = int(input("请输入1或2: "))
        cur_num += e_num
        print(f"[当前总数为:{cur_num}]")
        
        print(f"我报:{3-e_num}")
        cur_num += 3 - e_num
        print(f"[当前总数为:{cur_num}]")
    print("我赢了")
counting_game(sum_num)

代码比较简陋核心就是根据数学原理计算,没有做一些异常处理

少年易老学难成,一寸光阴不可轻

你可能感兴趣的:(总结,python,游戏)