当前位置: 首页 > news >正文

县网站建设/写软文能赚钱吗

县网站建设,写软文能赚钱吗,清远网站建设公司,网站建设公司怎么投诉尼姆游戏1 实验题目1.1 游戏介绍1.2 实验要求2 实验原理2.1 计算机回合2.2 玩家回合2.3 游戏开始3 运行结果4 源代码1 实验题目 1.1 游戏介绍 尼姆游戏是个著名的游戏,有很多变种玩法。有傻瓜模式与聪明模式。 傻瓜模式:两个玩家轮流从一堆物品中拿走一部分。在每…

尼姆游戏

    • 1 实验题目
      • 1.1 游戏介绍
      • 1.2 实验要求
    • 2 实验原理
      • 2.1 计算机回合
      • 2.2 玩家回合
      • 2.3 游戏开始
    • 3 运行结果
    • 4 源代码

1 实验题目

1.1 游戏介绍

尼姆游戏是个著名的游戏,有很多变种玩法。有傻瓜模式聪明模式

傻瓜模式:两个玩家轮流从一堆物品中拿走一部分。在每一步中,玩家可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品,然后轮到下一个玩家。拿走最后一个物品的玩家输掉游戏。

聪明模式:在聪明模式中,除傻瓜模式的规则外,每次到计算机拿走一部分时,计算机每次拿走足够多的物品使得堆的大小是 2 的幂次方减 1——也就是 3,7,15,31 或 63。除了堆的大小已经是 2 的幂次方减 1,在其他情况下这样走都是符合游戏规则的。在那种情况下,计算机就按游戏规则随机拿走一些。

1.2 实验要求

编写程序,模拟聪明版本的尼姆游戏。

2 实验原理

2.1 计算机回合

使得计算机每次取走的数量会使得堆大小变成2的幂次方减一即可。

可以使用一个while循环,找到物品堆大小的数量处于2的几次方之间。找到这个区间的下限x,每次拿走时:拿走数量 = 物品数量 - (2x - 1)。这样就可以保证每次计算机拿走之后,物品剩下的数量为 2x-1

另外,当物品数量正是2的幂次方时,就让计算机随机产生一个符合游戏规则的数字作为拿走数量。

while True:if pow(2, x) < self.number <= pow(2, x + 1):breakx = x + 1
if self.number == pow(2, x + 1):n = random.randint(1, int(self.number / 2))
else:n = self.number - (pow(2, x) - 1)

2.2 玩家回合

判断玩家取走是否满足游戏规则,即是否大于1且小于物品总数的一半。

此处可设置一个 flag 进行标志,若用户输入数量符合游戏规则,则令 flag 为 True ;若不符合,令 flag 为 False 。

当 flag = False 时就让用户继续输入直到输入数量符合规则。当 flag = True 时就使用用户输入的数量。

n = int(input('请输入要拿走的物品个数:'))
flag = n < 1 or n > int(self.number / 2)
while flag:print('输入数据不符合游戏规则,请重新输入!')n = int(input('请输入要拿走的物品个数:'))flag = n < 1 or n > int(self.number / 2)

2.3 游戏开始

实现玩家与计算机交替拿走物品。

这里需要设置每次玩家拿走数量的变量player,以及计算机每次拿走数量的变量computer。使用while循环让游戏一直进行下去,直到判断出谁输谁赢。

while True:computer = self.computer_turn()if computer == 0:breakelse:self.number = self.number - computerprint('电脑回合:拿走{:d}个物品,剩余{:d}个物品'.format(computer, self.number))player = self.player_turn()if player == 0:breakelse:self.number = self.number - playerprint('玩家回合:拿走{:d}个物品,剩余{:d}个物品'.format(player, self.number))

3 运行结果

尼姆游戏运行结果

4 源代码

# 尼姆游戏
import randomclass Game:def __init__(self):self.number = 0def computer_turn(self):x = 0n = 0if self.number == 2:n = 1elif self.number == 1:print('游戏结束,玩家获胜')return 0else:while True:if pow(2, x) < self.number <= pow(2, x + 1):breakx = x + 1if self.number == pow(2, x + 1):n = random.randint(1, int(self.number / 2))else:n = self.number - (pow(2, x) - 1)return ndef player_turn(self):if self.number == 1:print('游戏结束,电脑获胜')return 0n = int(input('请输入要拿走的物品个数:'))flag = n < 1 or n > int(self.number / 2)while flag:print('输入数据不符合游戏规则,请重新输入!')n = int(input('请输入要拿走的物品个数:'))flag = n < 1 or n > int(self.number / 2)return ndef begin(self):computer = 0player = 0print('欢迎来到尼姆游戏!')self.number = int(input('请输入物品总数:'))while True:computer = self.computer_turn()if computer == 0:breakelse:self.number = self.number - computerprint('电脑回合:拿走{:d}个物品,剩余{:d}个物品'.format(computer, self.number))player = self.player_turn()if player == 0:breakelse:self.number = self.number - playerprint('玩家回合:拿走{:d}个物品,剩余{:d}个物品'.format(player, self.number))if __name__ == '__main__':game = Game()game.begin()
http://www.jmfq.cn/news/4965121.html

相关文章:

  • 做网站的策划方案/如何做好网上销售
  • 网站关于我们怎么做/百度联盟怎么加入
  • 对网站的赏析/爱站网挖掘词
  • 国内外画画做的好网站/电商培训有用吗
  • 销售产品做单页还是网站/网站seo策划方案案例分析
  • 西安seo网站关键词/裂变营销
  • 中国做木线条的网站/seo北京公司
  • app 网站开发团队人员配置/网络营销策略都有哪些
  • 宁波做网站设计/女教师遭网课入侵直播
  • 推广是不是骗局/seo优化推广技巧
  • 济南自适应网站建设/个人模板建站
  • 网站下载织梦模板/免费关键词搜索工具
  • 什么网站做蜘蛛池/免费seo工具大全
  • 在线免费logo设计生成器/seo网络优化日常工作内容
  • 2015做微网站多少钱/全网整合营销推广方案
  • com网站建设中/线上推广平台哪些好
  • 康定网站建设/网站建设推广
  • 自己做网站分销/近期国际新闻热点大事件
  • 使用wampserver做响应式网站/代理公司注册
  • 什么网站可以做数据调查/百度公司高管排名
  • 长春住房和城乡建设部官方网站/如何制作微信小程序
  • 花店网站建设构思/搭建网站教程
  • 佛山做pc端网站/营销型网站定制
  • 临沂最好的做网站公司/天津提升专业关键词排名
  • pbootcms的特点/网站seo优化推广
  • 改善网站建设/google入口
  • 网站怎样做能排名靠前/公司软文
  • 做网站备案是承诺书是啥/站长统计app官方网站
  • 旅游网站管理系统/友链互换平台推荐
  • 做文案的人看什么网站/怎么做推广