为了账号安全,请及时绑定邮箱和手机立即绑定

教你用Python秒破路边“诈骗”棋牌残局!发家致富第一步!

标签:
Python

webp

教你用Python秒破路边“诈骗”棋牌残局!发家致富第一步!

文章最后有彩蛋,别错过了!

既然说python是一门超前卫的计算机编程语言,那么就决定了它肯定是千变万化的,无所不能的!事实上python目前已经应用与各个领域,然而我就喜欢琢磨一些实用的一些小领域的应用!把python比作shell,控制计算机(给你)思考出牌方式,如何才能够赢。这就是大体思路!

相信大家走在路上,天桥旁边或者小区公园都看到过!

webp

教你用Python秒破路边“诈骗”棋牌残局!发家致富第一步!

“斗地主残局破解,象棋残局破解等等”你能让那边能赢就能获得相应奖励这些!

如果你能够靠自己的思维获得最终的胜利,这无疑是非常厉害的!即使大家都是说人脑比计算机聪明,但是更多的是计算机可以做出来的题目,你却做不出来。这种情况我们用python控制计算机可以让计算机轻松帮我们搞定!计算机是不用思考的,只是库里有,它会立即给出答案!

其实,看到这些残局破解的时候,通常都会习惯性的手动来破解,每次都兴高采烈的以为找到农民胜利的方法时,最终都会发现根本行不通,不管怎么样,都走不完手上的牌!人脑的思维以及储存从某种意义上来说是有极限的,计算机也有,但是计算机的极限远大于人脑!那今天我们就用python来运算一下!

本文将会简述通过python来解决这类问题,让你小区附近的这钟“江湖骗术”统统乖乖离开!

minimax

代码核心部分,minimax可以拆分为两部分,mini和max,分别代表最小和最大!

直观的理解就是两个人下棋,甲可以在N个点走棋,假设甲在某个点走棋了,使得甲的这一步的盘面评估分数最高;但是轮到乙下的时候,就一定会朝着让甲最不利的方向走,使得甲的下一步必然按照乙设定的轨迹来,而设法达到甲在第一步时估算到这一步的最高盘面评分。

在牌局中是一样的,如果农民的这一手牌,让地主无论如何应对都不能赢的话,那么可以说农民有必胜的策略,否则,农民必输!

核心逻辑

函数

hand_out 模拟一个人的出牌过程。

me_pokes 模拟自己手上的牌

last_hand 上一手出的牌

enemy_pokers对手当前所有的牌

这个函数的返回值,是轮到我me_pokers出牌时,是否能够必赢牌,如果能赢则返回真,否则返回假!

**def **hand_out(me_pokers, enemy_pokers, last_hand)

假设轮到我出牌时,如果我没有牌了,那么我将立刻知道我赢了,反之如果对手的牌都出完了,而我没有,则我失败了

**if not **me_pokers:

return True

**if not **enemy_pokers:

return False

因为轮到我出牌,所以我首先要知道我现在能出的所有手牌的组合,注意:这个组合中,包括过牌的策略。

all_hands = get_all_hands(me_pokers)

现在要对所有可能的手牌组合进行遍历。

首先我需要知道,上一手对方出的牌是什么。

如果对方上一手选择过,或者没有上一手牌,那么我这一轮必须不能过牌,但是我可以出任意的牌

如果对手上一手出了牌,则我必须要出一个比它更大的牌或者选择这一轮直接过牌。

关键点就是,在出完我的牌或者过牌后,我们需要用一个递归调用来模拟对手下一步的行为。如果对手的下一次出牌不能获胜的话,则我这一次出牌必胜,否则,对于我的每一个出牌选择,对手都能获胜的话,则我必败!

构建

以上核心逻辑清楚后,构建破解器变的十分简单。

数字代表牌的大小!

然后,我们需要求出一个手牌所有的组合,这里需要get_all_hands函数,具体实现比较繁琐但是很简单!

然后就是牌力的判断,也就是看谁的比较大了!唯一要注意的就是,在斗地主的规则中,除了炸弹外,其他的所有牌力均等,只有牌型一样才去比较!

最后,我们需要一个模拟出牌函数make_hand(pokers,hand),用于求出在手牌为pokers的情况下打出一手牌后,剩下的手牌,实现也非常简单,只需简单的移除掉那些打出的牌即可!



作者:Python_iOS书籍库
链接:https://www.jianshu.com/p/f1d6551c7d0c


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消