双人报数小游戏,指定总数,每人每次报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)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值