python写机器人玩僵尸骰子

时间:2021-05-28 09:53:36

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当中比任何一个人都要具备先天的网站排名优势。