Python题目——实现人机对战的尼姆游戏:假设有一堆物品,计算机和人类玩家轮流从其中拿走一部分。在每一步中,人或计算机可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品

Posted 玛卡巴卡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python题目——实现人机对战的尼姆游戏:假设有一堆物品,计算机和人类玩家轮流从其中拿走一部分。在每一步中,人或计算机可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品相关的知识,希望对你有一定的参考价值。

问题描述:尼姆游戏是这样一个游戏:假设有一堆物品,计算机和人类玩家轮流从其中拿走一部分。在每一步中,人或计算机可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品,然后轮到下一个玩家。拿走最后一个物品的玩家输掉游戏。


基本思路:在每次循环中让人类玩家先拿走一定数量的物品,然后再让计算机取走一些物品,要求拿走的物品数量不超过剩余数量的一半。如果物品全部取完则结束游戏,并且判定拿走最后一个物品的玩家为输。

from random import randint

n=int(input('请输入一个正整数:'))
while n>1:
    #人类玩家先走
    print("该你拿了,现在剩余物品数量为:0". format(n))
    #确保人类玩家输入合法整数值 
    while True:
        try:
            num=int(input('输入你要拿走的物品数量:'))
            #确保拿走的物品数量不超过一半
            assert 1<=num<=n//2
            break
        except:
            print('最少必须拿走1个,最多可以拿走0个。'. format(n//2)) 
        n-=num
        if n==1:
            print('恭喜,你赢了!')
            break
        #计算机玩家随机拿走一些,randint()用来生成指定范围内的一个随机数 
        n-=randint(1,n//2)
    else:
        print('哈哈,你输了。')

测试结果

 

 

 

以上是关于Python题目——实现人机对战的尼姆游戏:假设有一堆物品,计算机和人类玩家轮流从其中拿走一部分。在每一步中,人或计算机可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品的主要内容,如果未能解决你的问题,请参考以下文章

Java五子棋课程设计

人机对战小游戏

Python游戏开发,pygame模块,Python实现五子棋联机对战小游戏

步步为营-墙棋AI人机对战(Android)

Python小游戏 井字棋(人机对战,玩家对战)

AI人机对战五子棋游戏Python(pygame)+AI并实现软件输出