python写机器人玩僵尸骰子
python写机器人玩僵尸骰子
由Al Sweigart用python发布
注意:我正在为我的僵尸骰子模拟器寻找反馈,以及这一套指令。如果你觉得有什么地方可以改进,请发邮件到al@inventwithpython.com。
编程游戏是一种游戏类型,玩家不直接玩游戏,而是编写机器人程序来自主玩游戏。我已经创建了一个僵尸骰子模拟器,允许程序员在玩ai游戏的同时练习他们的技能。僵尸骰子机器人可以是简单的或难以置信的复杂,是伟大的类练习或个人编程挑战。
如何玩僵尸骰子
僵尸骰子是一个快速,有趣的骰子游戏从史蒂夫杰克逊的游戏。玩家们都是僵尸,试图吃掉尽可能多的人类大脑而不被“射杀”。有13个骰子,上面有大脑、脚印和猎枪的图标。骰子的颜色是绿色(大脑更有可能),红色(猎枪更有可能),黄色(大脑和猎枪平分)。
他们将:杏仁图片
玩家从杯子里随机取出骰子,直到手中有三个骰子,然后滚动骰子。玩家总是掷三次骰子。
他们把大脑(被吃掉的人类)和猎枪(反击的人类)放在一边。
如果玩家在此回合中拨出三把散弹枪,他们的回合将以零分结束。
如果玩家决定再次掷骰子,他们手中会保留任何出现脚印的骰子。
否则,玩家可以选择结束他们的回合,在那里他们将收集每个大脑一分,并返回所有骰子为下一个球员的杯。
或者玩家可以选择继续他们的旋转和再次滚动。回到第1步,注意任何已经出现在步骤中的骰子都将被重用。
僵尸骰子有一个“推你运气”的游戏机制:你重新掷骰子的次数越多,你能得到的大脑就越多,但你最终得到三把猎枪并失去一切的可能性就越大。一旦一个玩家达到13分,剩下的玩家就会得到一个回合(潜在的追赶),游戏就结束了。得分最多的选手获胜。
更多关于僵尸骰子的完整规则可以在这里找到:
PDF英文规则
动画Flash演示如何播放
说明文章的规则
YouTube上有人解释规则的视频
机器人编程挑战
要使用pip安装模拟器,请运行pip install zombiedice(在Windows上)或pip3 install zombiedice(在macOS和Linux上)。要使用一些预先制作好的机器人运行一个演示程序,可以运行python -m zombiedice(在Windows上)或python3 -m zombiedice(在macOS和Linux上),以查看模拟器的web gui示例:
模拟器可以快速运行数百个游戏,记录每个机器人获得多少胜利和平局。
您将通过使用turn()方法编写类来创建bot,当轮到机器人时,厂家专卖网站模拟器会调用该方法。在这个turn()方法中,您将尽可能频繁地调用zombiedice.roll()函数(当然,在您的回合中至少应该调用一次)。类超出了本文的范围,但是您可以简单地更改myzombie.py中的turn()代码:
进口zombiedice
类MyZombie:
def __init__(自我、名称):
self.name =名字
def转(自我,gameState):
# gameState是一个带有关于游戏当前状态信息的字典。
您可以选择在代码中忽略它。
第一个卷
# roll()返回一个字典,其中有键“brains”、“shotgun”和
#“脚步声”,每个类型有多少卷。
# 'rolls'键是一个包含(颜色、图标)元组的列表
准确的滚动结果信息。
滚动()返回值的例子:
#{‘大脑’:1,‘脚步’:1,‘猎枪’:1,
#“卷”:[(“黄色”,“大脑”)(“红”、“脚步”),
#(“绿色”、“猎枪”)]}
你的僵尸程序的代码逻辑在这里:
大脑= 0
而diceRollResults并不是没有:
大脑+ = diceRollResults(“大脑”)
如果大脑小于2:
diceRollResults = zombiedice.roll() # roll再一次
其他:
打破
类AlwaysRollsTwicePerTurn:
def __init__(自我、名称):
self.name =名字
def转(自我,gameState):
zombiedice.roll()
zombiedice.roll()
僵尸=(
zombiedice.examples.RandomCoinFlipZombie(name =“随机”),
zombiedice.examples。RollsUntilInTheLeadZombie(name =“直到领先”),
zombiedice.examples。MinNumShotgunsThenStopsZombie(名字='停在2枪',minShotguns=2),
zombiedice.examples。MinNumShotgunsThenStopsZombie(名字='停在1枪',minShotguns=1),
MyZombie(name =“我的僵尸机器人”),
AlwaysRollsTwicePerTurn(name = '滚两次'),
添加其他僵尸玩家。
)
在CLI或Web GUI模式下运行的下列代码之一取消注释:
# zombiedice.runTournament(僵尸=僵尸,爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你来控制它咯。关于SEO优化,不仅仅是SEO知识点的学习,更是SEO资源和SEO策略的积累。多数SEO人员学完了整套SEO视频无法独立优化网站的最大原因是因为任何SEO培训教程都是在阐述SEO的知识点,并没有给与学员本身系统化的SEO流程化分析。所以多数从业人员并不知道第一步该做什么、第二步又该做什么。导致你即使参加了SEO培训,也无法操作网站排名。当然,也有一部分人领会到了SEO优化流程化思想,但是真正操作一个SEO优化的时候网站排名总是上不去,其实归结到底,还是资源性的问题。其实任何一个行业都是如此,资源决定你的SEO的走向,比如做SEO排名当中经常要用到的外链,几乎任何一个SEO培训机构都给不出,而通过SEO培训提供全新的SEO方法,足够让你在前期的实战SEO当中比任何一个人都要具备先天的网站排名优势。
python写机器人玩僵尸骰子的更多相关文章
- python写红包的原理流程包含random,lambda其中的使用和见简单介绍
Python写红包的原理流程 首先来说说要用到的知识点,第一个要说的是扩展包random,random模块一般用来生成一个随机数 今天要用到ramdom中unifrom的方法用于生成一个指定范围的随机 ...
- 用aardio给python写个图形界面
前阵子在用python写一些小程序,写完后就开始思考怎么给python程序配一个图形界面,毕竟控制台实在太丑陋了. 于是百度了下python的图形界面库,眼花缭乱的一整页,拣了几件有“特色”有“噱头” ...
- Python实现机器人聊天
今天午休的时候,无意之中看了一篇博客,名字叫Python实现机器人,感觉挺有的意思的.于是用其写了一个简单的Python聊天,源码如下所示: # -*- coding: utf- -*- import ...
- 如何Python写一个安卓APP
前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般 ...
- Python写爬虫-爬甘农大学校新闻
Python写网络爬虫(一) 关于Python: 学过C. 学过C++. 最后还是学Java来吃饭. 一直在Java的小世界里混迹. 有句话说: "Life is short, you ne ...
- 用Python写Verilog(非HLS)
https://blog.csdn.net/qq_32010099/article/details/81197171 前段时间玩Python的时候好奇, 既然Python这么强大, 那么能不能用Pyt ...
- Python写各大聊天系统的屏蔽脏话功能原理
Python写各大聊天系统的屏蔽脏话功能原理 突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存放的仓库好到时 ...
- Python写地铁的到站的原理简易版
Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
随机推荐
- Python学习笔记_week3_函数
一.介绍 1.面向对象(华山派)--->类(独门秘籍)--->class(定义的关键字) 2.面向过程(少林派)--->过程--->def 3.函数式编程(逍遥派)---> ...
- tomcat及nginx相关,格式化输出,配置及日志解析
1.https://www.cnblogs.com/jingmoxukong/p/8258837.html?utm_source=gold_browser_extension Tomcat ...
- git 找回本地误删的文件
1, 查看本地工作区变化 => git status 2, 重新设置文件状态 => git reset HEAD url ( url 是上一步第二个红框中的地址) 3, 检出文件 ...
- 揭开牙病之谜 与牙医说再见<转>
原贴地址:https://www.douban.com/group/topic/44383918/ -------------------------------------------------- ...
- vue.js 作一个用户表添加页面----初级
使用vue.js 制作一个用户表添加页面,实际上是把原来需要使用js写的部分,改写成vue.js的格式 首先,想象一下,先做思考,我们要添加用户表,设涉及到哪些数据,一个是用户id,一个是用户名,一个 ...
- 一种比较low的linux的hung分析
在调试一个功能的时候,发现了两种hung,以前认为的hung肯定是softlock导致的,后来才发现不一定要有lock这种结构,但是有类似于锁的功能的时候,也可能触发hung,为了避免大家走弯路,故记 ...
- 如何查看一个class文件是否正确
今天碰到了个问题,左思右想就是找不出问题,试验多个路径来解决问题,错误依旧. 然后我拿到了现场的包,一个很大的问题让我忽略了,这个class文件用反编译程序打不开(jd-gui.exe),非常神奇,但 ...
- ubuntu 该软件包现在的状态极为不妥 error
rm -rf /var/lib/dpkg/info/yourerrorsofware* dpkg --remove --force-remove-reinstreq yourerrorsoftware ...
- java script删除数组的方法集合(转载)
一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...
- 转: 日期格式参考extjs api文档中的Date类型
var md = new Ext.form.DateField({ //下面的格式是:2000-01-01 00:00:00 format: 'Y-m-d H:i:s', ............ } ...