怎么样用Python制作简单的尼姆游戏,代码是什么
Admin 2022-06-20 群英技术资讯 646 次浏览
尼姆游戏,这是一个著名的游戏,有很多变种玩法。两个玩家轮流从一堆物品中拿走一部分。在每一步中,玩家可以自由选择拿走多少物品,但是必须拿走一部并且最多只能拿走一半物品,然后轮到下一个玩家。拿走最后一个物品的玩家输掉游戏。先手随机。
#/sur/bin/nve python # coding: utf-8 import os #用os.system(r'clear')清屏 import random #用random.randint()随机取数 def clear(): '''#Linux清屏''' clear = os.system(r'clear') def optimal(n): '''机器最优拿法''' if n in (1, 2, 3, 4): return 1 take = int(n/2) m = 1 for i in range(take): if m>take: break m *= 2 take = n-m+1 if take>int(n/2): take = random.randint(1, int(n/2)) return take def common(n): '''机器一般拿法''' while True: if n==1: return 1 return random.randint(1, int(n/2)) def effect(first, take, n): '''结果输出''' cl() print('\n'*6) flag_s = ('简单', '困难')[flag-1] print('%s\n'%('【%s】'%flag_s).rjust(20)) print('﹊'*21) print(' '*4, end='') print('%s已取走%s。物品堆物品还剩%s。'%(first, take, n)) print('﹊'*21) def show_error(): '''报错信息打印''' print('\n\n%s'%error) print('输入错误!请重试。'.rjust(20)) print('﹊'*21) input('任意键继续……'.rjust(20)) #Main Codes cl = clear s = ''' 尼姆游戏,这是一个著名的游戏, 有很多变种玩法。 两个玩家轮流从一堆物品中拿走 一部分。在每一步中,玩家可以自由 选择拿走多少物品,但是必须拿走一个 并且最多只能拿走一半物品,然后轮到 下一个玩家。 拿走最后一个物品的玩家输掉游戏。 先手随机。 ''' #规则打印 cl() print('\n\n%s'%'“尼姆”游戏规则'.rjust(20)) print() print('﹊'*21) print(s) print('﹊'*21) input('任意键继续……'.rjust(20)) #难度选择 while True: cl() print('\n'*6) print('\n%s'%'【难度选择】'.rjust(20)) print() print('﹊'*21) print('1. 简单 2. 困难'.rjust(24)) print('﹊'*21) try: flag = int(input('请选择:'.rjust(12))) if flag not in (1, 2): error() continue break except Exception as error: show_error() #开始游戏 p = '小可爱' cl() print('\n'*6) while True: try: c = input('给对手命名:'.rjust(12)) break except Exception as error: error() continue if flag==2: n = random.randint(1, 500) else: n = random.randint(1, 100) cl() print('\n'*6) print('﹊'*21) print('%s\n'%'【本局游戏物品堆】'.rjust(21)) print(('%s:%3d'%('物品总数', n)).rjust(22)) print('﹊'*21) input('任意键继续……'.rjust(20)) #随机先手选择 first = random.choice((c, p)) while n>0: #机器取 if flag==2 and first==c: take = optimal(n) n = n-take if flag==1 and first==c: take = common(n) n = n-take if first==c: effect(first, take, n) if n==0: break first = p #转换玩家先手 #玩家取 if first==p: while True: try: take = int(input('\n%s'%'您取物:'.rjust(12))) if take==1 and (n in (1, 2, 3)): break if take>int(n/2) or take<1: error() continue break except Exception as error: show_error() n = n-take if first==p: effect('您', take, n) input('任意键继续……'.rjust(20)) if n==0: break first = c #转换机器先手 #结果输出 if first==p: first = '您' cl() print('\n'*6) print('﹊'*21) print(('%s输了!'%first).rjust(20)) print('﹊'*21)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
今天很有可能你已经做了一些使用滑动窗口(也称为移动窗口)的事情,而你甚至不知道它。例如:许多编辑算法都是基于移动窗口的。在GIS中做地形分析的大多数地形栅格度量(坡度、坡向、山坡阴影等)都基于滑动窗口。很多情况下,对格式化为二维数组的数据进行分析时,都很有可能涉及到滑动窗口。滑动窗口操作非常普遍,非常有用。它们也很容易在Python中实现。学习如何实现移动窗口将把你的数据分析和争论技能提升到一个新的水平。
这篇文章主要为大家介绍了python读写json文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
python下如何往数据库批量插入数据?方法是什么?假如我们想要往数据库表中的插入的数据有几百上千条,那么一条条插入,则调用sql语句查询插入就需要执行几百上千,这样花费的时间就非常的长。因此我们可以使用cursor.executemany(sql,args)来实现批量插入数据,那么具体怎样做呢?接着往下看。
这篇文章主要介绍了python+pytest接口自动化参数关联,参数关联,也叫接口关联,即接口之间存在参数的联系或依赖,更多相关内容需要的小伙伴可可以参考一下
这篇文章主要为大家介绍了python神经网络Inception ResnetV2模型复现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008