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( ...
随机推荐
- 《The book of shaders》读书笔记
最近几天在GitHub上看到一个关于Shader开发的开源项目thebookofshaders,其中一个贡献者是Patricio Gonzalez Vivo,这个开源项目囊括了<The book ...
- HTML5 实现获取 gzip 压缩数据,并进行解压,同时解决汉字乱码,相关 pako.js
1, 下载 pako.js => http://nodeca.github.io/pako/#Deflate.prototype.onData 2, 首先需要了解一下 XMLHttpReques ...
- django管理后台添加admin账号
直接用命令行添加即可:python manage.py createsuperuser # python manage.py createsuperuser Username (leave blank ...
- golang执行shell命令
ommand := "echo hello” cmd := exec.Command("/bin/bash", "-c", command) byte ...
- jqGrid基本使用
jqGrid: 参照网址:官网地址http://www.trirand.com/ http://blog.mn886.net/jqGrid/(快速获取demo) http://www.guriddo. ...
- ACM__01背包,完全背包,多重背包
今天写题的时候碰到了一道完全背包题,可是没有看出来,乱写了一通,浪费了一个晚上,顺便复习一下背包的知识 01背包 每种物品只能选择一次或者不选,求背包容量内的最大价值 先给出状态转移方程: f[i][ ...
- linux mce的一些相关内容和用户态监控的设计方法
之所以想起写一点关于mce的东西,倒不是因为遇到mce的异常了,之前遇到过很多mce的异常,内存居多,但没有好好记录下来,写这个是因为参加2018 clk南京会议的一点想法. void __init ...
- python使用xlrd 操作Excel读写
此文章非本人 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 二.使用介绍 1.导入模块 i ...
- 8张思维导图学习javascript
分别归类为: javascript变量 javascript运算符 javascript数组 javascript流程语句 javascript字符串函数 javascript函数基础 javascr ...
- mac+windows下从git上拉取项目及运行
一.Mac下从git拉取项目 1. 拉项目 打开终端,先进入想放置项目的目录.假设进入workfile目录,输入cd workfile. 进入workfile目录后:输入git clone 链接(gi ...