游戏Undercut使用python代码实现

本文介绍了如何编程计算游戏Undercut中两位玩家的得分,基于给定的牌序规则,包括Undercut特殊情况下的得分计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

游戏Undercut是一个纸牌游戏,两位选手各有编号1-5的5张牌。每一轮中每个玩家选择一张牌,然后依次出示各自的牌。如果两张牌数相同,则没有比分。另有两种情况:两张牌的数字只相差1(这就是所谓的Undercut游戏),或者两张牌数字相差值超过1。在后一种情况下,出示较大数字牌的人获得自己的点数。在Undercut情况下,出示较小数字牌的人获得两张牌的点数之和。当两张牌分别是1和2时例外,出示较小数字牌的人获得6点(而不是只有3点)。每一轮之后,把牌退给选手,让他们玩另一轮比赛。
例如:
现在有5轮比赛,A的点数(以此顺序)是 5,3,1,3,5;B的点数是3,3,3,3,4.每轮比赛的分数将是A得5点、0点、0点、0点、0点;B得0点、0点、3点、0点、9点。总比分A得5点,B得12点。题目给出玩家双方的牌,编程计算玩家的最终得分输入(输入文件A1_input.txt):
将有多个输入实例,每个实例是一场比赛。每场比赛第一行是一个整数n(当n为0时表示输入结
束)。接下来有两行,每行分别包含n个1-5之间的整数,分别代表玩家n轮中的每张牌。第一张是A的牌,第二行是B的牌。输出:对每个输入实例输出一行,输出格式为:
A has a points. B has b points.其中,a为A得的点数,b为B得的点数。
输入示例:
5
5,3,1,3,5
3,3,3,3,4
4
2,3,1,1
1,5,5,5
0
输出示例:
A has 5 points. B has 12 points.
A has 0 points. B has 21 points.

def judge(a_cards,b_cards):
    num=len(a_cards) #获取卡牌count 执行循环
    ascore=0
    bscore=0
    for i in range(0,num):
        anum=int(a_cards[i])
        bnum=int(b_cards[i])
        if(anum == 2 and bnum == 1):
            bscore += 6
        elif(anum==1 and bnum==2):
            ascore += 6
        elif(anum!=bnum):
            if(anum>bnum):
                ascore += anum
            else:
                bscore += bnum
    return ascore,bscore
with open('E:\文件\A1_input.txt','r') as f:
    fout=open('E:\文件\output.txt','w')
    while True:
        cn=eval(f.readline())
        if cn==0:
            break
        a_cards=f.readline()
        b_cards=f.readline()
        ScoreA,ScoreB=judge(list(a_cards.split(',')),list(b_cards.split(',')))
 

        fout.write(f'A has {ScoreA} points. B has {ScoreB} points.\n')
    fout.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星尘库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值