前言

大家周末好~最近更新了太多的数据分析内容不知道各位有没有疲劳,今天给大家带来的是如何上班如何高级摸鱼:用Python开发一个命令行斗地主小游戏,利用跑程序的时间来一把斗地主岂不是非常快乐,关键是没有时间限制,不仅可以喊上老板一起玩还能随时断点续玩

doudizhu.mov

接下来简单讲讲如何使用python开发这样一个斗地主游戏,我们先来想想进行一场斗地主游戏所经历的过程:首先生成54张扑克,然后将这54张扑克随机发给三名玩家,每个玩家17张牌并保留三张底牌,接着从第一个玩家开始询问是否抢地主,如果成为地主则获得三张底牌,这样依次循环直到地主出现,之后就是根据出牌规则完成一系列的出牌动作,最先出完牌的人取得胜利并按照记分规则累积分数(欢乐豆)。

因为仅供自己娱乐使用所以不用做UI界面,不用登陆不用注册,不用分客户端、服务端以及一些消息传输等复杂的内容,简单来说只需要完成洗牌发牌出牌规则以及生成指定数量的机器人陪玩即可。因此我们仅使用纯python不依赖任何第三方库来开发。

洗牌与发牌的实现

洗牌与发牌是比较好搞定的,基本上使用python标准库random即可,比如生成牌库

import random
def get_Card():card_type = ['黑桃','红桃','方片','梅花']card_values= ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']n=1cards = ['JOKER','joker']for i in card_type:for j in card_values:cards.append((i+j))n += 1return cards

洗牌与发牌

def send_Card(cards):print('开始洗牌')wash_card = random.shuffle(cards) #使用shuffle打乱print('开始发牌')print('底牌为 : %s' %cards[0:3])player1 = cards[3:20]player2 = cards[20:37]player3 = cards[37:54]print ('player1 : '+ str(player1))print ('player2 : '+ str(player2))print ('player3 : '+ str(player3))

其他功能实现与使用

那么在打牌过程中的出牌与判定规则就很难去搞定了,于是只能求助GitHub大神,很遗憾大多数项目还是比较大型的交互式斗地主游戏开发,不满足我们的简单版需求,经过一番查找与修改最终整理出一份能够实现我们之前所提出的命令行的斗地主程序(没有依赖任何第三方库),来看看部分代码,例如判定两个玩家的出牌

def legal(cards1,cards2):type1,number1 = cardtype(cards1)type2,number2 = cardtype(cards2)if type2 == "rocket": #火箭return Trueif type2 == "bomb":if type1 == "bomb":if number2[0] > number1[0]:return Trueelse:return Falseelse:return Trueif type1 == "single": #单牌if type2 == "single":if number2 > number1:return Trueelse:return Falseelse:return Falseif type1 == "pair": #对子    if type2 == "pair":if number2[0] > number1[0]:return Trueelse:return Falseelse:return Falseif type1 == "3+1": #三带一if type2 == "3+1":if number2[0] > number1[0]:return Trueelse:return Falseelse:return Falseif type1 == "4+2": #4带2if type2 == "4+2":if number2[0] > number1[0]:return Trueelse:return Falseelse:return Falseif type1 == "straight": #顺子if type2 == "straight":if number2[1] == number1[1]:if number2[0] > number1[0]:return Trueelse:return Falseelse:return Falseelse:return False
######################其他规则

那我们生成的AI是按照什么样的规则出牌?(你可以修改ai.py部分代码调整规则)

分析手牌

先看是不是王炸
看是不是炸弹,如果是对手的炸弹,能打就打
再看是不是大于K,如果是队友出的,就过牌,否则就试着打掉,用炸弹
如果对手手牌少于9张出大于K或者出的大于8张的飞机/顺子/连对有王炸/炸弹就用掉
否则无脑跟 不用炸弹和火箭
如果跟对方牌并且对方小于9张,没有1,2张的牌就拆2,3张的牌打
自己出牌lastcard应该是[]
若自己手牌小于5张,先出王炸,炸弹,最大牌
再看下家手牌数量和阵营 同阵营出最小单/对 不同阵营出比他多的牌或者大牌

由于篇幅原因就不展示全部代码。在『早起python』公众号后台回复斗地主即可下载全部源码。

使用也很简单,从命令行进入doudizhu文件夹执行python main.py即可。摸鱼时记得关掉声音或者删除源码中bgm相关代码。当然早起想说没有bgm的斗地主是没有灵魂的斗地主,注意:若因上班斗地主被开除,本公众号概不负责。祝大家周末愉快,拜拜~

上班摸鱼系列|Python开发命令行斗地主相关推荐

  1. python 斗地主 图形界面_上班摸鱼必备|Python开发命令行斗地主

    原标题:上班摸鱼必备|Python开发命令行斗地主 今天给大家带来的是如何上班如何高级摸鱼: 用Python开发一个命令行斗地主小游戏,利用跑程序的时间来一把斗地主岂不是非常快乐,关键是没有时间限制, ...

  2. 上班摸鱼用Python写一个酷狗音乐播放器

    Python改变生活,科技改变世界. 这个五一好想出去浪啊,可惜工作不允许啊,只放了两天假,不得不又回到工作岗位了,虽然也没啥事,然后就上班摸鱼写了这个酷狗音乐播放器,自己一边听歌一边下载歌曲歌词也蛮 ...

  3. 摸鱼神器:在命令行中玩斗地主

    斗地主我想大家都会玩吧,但是不知道大家有没有在命令行内玩过斗地主.这个项目是基于 Netty 实现的一款命令行斗地主游戏,在下班后或者工作闲暇之余,你都可以肆无忌惮的在命令行中玩斗地主. 逛逛常用的摸 ...

  4. 小白上班摸鱼学python

    Summary if条件判断 while循环的使用 for循环的使用 猜谜游戏.输入一个数字,判定与预先设置的值大小.若猜大了,提示"Tinking smaller":若猜小了,提 ...

  5. 微信重大更新!这特么是为上班摸鱼开发的吧.....(附内测地址)

    来自:民工哥技术之路 近日,腾讯微信PC版迎来了2.9.0.测试版.相信很多人都会爱上这个功能!毕竟我怀疑是为上班摸鱼的那些小伙伴的开发的.... 此次更新增添了不少新功能.最引人注目的也是我期待已久 ...

  6. 上班摸鱼在群里吹牛B,逮到一个华为10年老Java开发,聊过之后收益良多...

    老话说的好,这人呐,一单在某个领域鲜有敌手了,就会闲得蛋疼.前几天我在上班摸鱼刷群的时候认识了一位阿里JAVA开发大佬,在华为工作了10年,因为本人天赋比较高,平时工作也兢兢业业,现在企业内有一定的地 ...

  7. 为了上班摸鱼我用Python制作了俄罗斯方块?

    很多人问我我是零基础开始的小白,能学会Python嘛? 首先零基础是能学python的,很多编程大神入门之前都选择先学习Python,所以想学就大胆去学吧,没学之前谁不是零基础,就算是现在才下定决心学 ...

  8. 程序员上班摸鱼,这么玩才高端

    说到上班摸鱼,用手机刷剧.打游戏这些方式都太低端了,不仅低着头对颈椎不好,还容易被老板抓到. 那么,今天就来给大家分享一下高端程序员应该掌握的摸鱼技巧. 1.Ratel 万万没想到,有一天我居然会在命 ...

  9. 白嫖我常用的 11 个超火的前端必备在线工具,终于有时间上班摸鱼了

    大家好,我是你们的 猫哥,一个不喜欢吃鱼.又不喜欢喵 的超级猫 ~ 前言 猫哥是一个常年混迹在 GitHub 上的猫星人,所以发现了不少好的前端开源项目,在此分享给大家. 公众号:前端GitHub,专 ...

最新文章

  1. gcc和g++是什么,有什么区别?
  2. 【博客话题】我的Linux虽然年轻,但是已经喜欢上她了...
  3. mysql系统的功能_MySQL系统架构及功能概述
  4. 有关转换流中涉及的【乱码问题】
  5. C++中extern关键字的作用
  6. Windows静态库和动态库的调用方法汇总
  7. python自带笔记本电脑_Python执行速度:笔记本电脑与台式机
  8. linux7解绑bond命令,linux多网卡的7种bond模式原理配置
  9. 按键精灵q语言连接mysql_【按键精灵8】Q语言介绍
  10. 烟雨江南暂排第一,第四届橙瓜网络文学奖入围20年十佳奇幻大神
  11. 基于张正友标定法的工业机器人视觉标定
  12. Vue输入框快速调出数字键盘
  13. 郑州共享门店系统开发优势有哪些?
  14. 把多个txt文件合成一个txt文件
  15. 全新UI众人帮任务帮PHP源码 悬赏任务抖音快手头条点赞源码 带三级分销可封装小程序
  16. volumes-from 参数的一些试验
  17. UVA - 1600 Patrol Robot (巡逻机器人)(bfs)
  18. 全国计算机等级考试Java上机真题
  19. Revit二次开发中如何创建结构平面,修改结构平面的视图范围
  20. QQ群空间登录网址:http://qun.qq.com/air/#

热门文章

  1. 前端框架iviewui使用示例之菜单+多Tab页布局
  2. 国内外旅游数据(1994-2018)
  3. linux系统日志的查看和采集
  4. 高新技术企业研发费用怎么归集?
  5. python中mktime函数_Python3 time mktime()方法
  6. win10设置pin一直转圈_如何在Windows10上删除PIN密码,试试这一招,非常方便
  7. [EDI 案例] 村田/muRata EDI实施案例
  8. knn算法,最优k值求解
  9. 仓库库存周转率公式计算实例
  10. 域名投资不能被个人眼光和情怀所误导