大家好,关于职场休闲必备:Python命令行版斗地主游戏教程很多朋友都还不太明白,今天小编就来为大家分享关于的知识,希望对各位有所帮助!
接下来简单讲讲如何使用python开发这样一个斗地主游戏,我们先来想想进行一场斗地主游戏所经历的过程:首先生成54张扑克,然后将这54张扑克随机发给三名玩家,每个玩家17张牌并保留三张底牌,接着从第一个玩家开始询问是否抢地主,如果成为地主则获得三张底牌,这样依次循环直到地主出现,之后就是根据出牌规则完成一系列的出牌动作,最先出完牌的人取得胜利并按照记分规则累积分数(欢乐豆)。
因为仅供自己娱乐使用所以不用做UI界面,不用登陆不用注册,不用分客户端、服务端以及一些消息传输等复杂的内容,简单来说只需要完成洗牌发牌出牌规则以及生成指定数量的机器人陪玩即可。因此我们仅使用纯python不依赖任何第三方库来开发。
洗牌与发牌的实现
洗牌与发牌是比较好搞定的,基本上使用python标准库random即可,比如生成牌库
importrandomdefget_Card():card_type = ['黑桃','红桃','方片','梅花']card_values= ['A','2','3','4','5','6','7','8','9','10','J','Q','K']n=1cards = ['JOKER','joker']foriincard_type:forjincard_values:cards.append((i+j))n +=1returncards
洗牌与发牌
defsend_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大神,很遗憾大多数项目还是比较大型的交互式斗地主游戏开发,不满足我们的简单版需求,经过一番查找与修改最终整理出一份能够实现我们之前所提出的命令行的斗地主程序(没有依赖任何第三方库),来看看部分代码,例如判定两个玩家的出牌
deflegal(cards1,cards2):type1,number1 = cardtype(cards1)type2,number2 = cardtype(cards2)iftype2 =="rocket":#火箭returnTrueiftype2 =="bomb":iftype1 =="bomb":ifnumber2[0] >number1[0]:returnTrueelse:returnFalseelse:returnTrueiftype1 =="single": #单牌iftype2 =="single":ifnumber2 >number1:returnTrueelse:returnFalseelse:returnFalseiftype1 =="pair": #对子iftype2 =="pair":ifnumber2[0] >number1[0]:returnTrueelse:returnFalseelse:returnFalseiftype1 =="3+1": #三带一iftype2 =="3+1":ifnumber2[0] >number1[0]:returnTrueelse:returnFalseelse:returnFalseiftype1 =="4+2":#4带2iftype2 =="4+2":ifnumber2[0] >number1[0]:returnTrueelse:returnFalseelse:returnFalseiftype1 =="straight":#顺子iftype2 =="straight":ifnumber2[1] == number1[1]:ifnumber2[0] >number1[0]:returnTrueelse:returnFalseelse:returnFalseelse:returnFalse######################其他规则
那我们生成的AI是按照什么样的规则出牌?(你可以修改ai.py部分代码调整规则)
分析手牌
先看是不是王炸看是不是炸弹,如果是对手的炸弹,能打就打再看是不是大于K,如果是队友出的,就过牌,否则就试着打掉,用炸弹如果对手手牌少于9张出大于K或者出的大于8张的飞机/顺子/连对有王炸/炸弹就用掉否则无脑跟 不用炸弹和火箭如果跟对方牌并且对方小于9张,没有1,2张的牌就拆2,3张的牌打自己出牌lastcard应该是[]若自己手牌小于5张,先出王炸,炸弹,最大牌再看下家手牌数量和阵营 同阵营出最小单/对 不同阵营出比他多的牌或者大牌
使用也很简单,从命令行进入doudizhu文件夹执行python main.py即可。摸鱼时记得关掉声音或者删除源码中bgm相关代码。
当然想说没有bgm的斗地主是没有灵魂的斗地主,注意:若因上班斗地主被开除,概不负责~
用户评论
Python脚本写游戏厉害!我一直想学习一下Python做个小游戏,这下子有了灵感了!这套代码简洁明了,周末可以试试弄个简单版玩玩。
有8位网友表示赞同!
对呀,工作压力太大,下班后就想要放松一点儿,像这样的项目真是我的菜啊。
有16位网友表示赞同!
我就是喜欢这种命令行界面,复古的感觉! 感觉更专注游戏本身而不是被各种绚丽的画面打扰,而且还能锻炼一下自己的逻辑思维能力。
有10位网友表示赞同!
网上资源越来越多,学习Python真的是越来越方便了,以前想做个类似的游戏可真是难度系数爆炸呢!感谢作者分享这个项目!
有5位网友表示赞同!
我已经玩了几个回合了!感觉比一些网页游戏还好玩,操作简单规则清晰,而且这是一种纯粹的解谜和策略类型的挑战,很考验心理素质。强烈推荐给喜欢下棋打牌的朋友们!
有10位网友表示赞同!
学Python 确实很有用,以后上班摸鱼还能写点有意思的东西出来,嘿嘿嘿。
有15位网友表示赞同!
作者牛逼!这个斗地主程序写的太巧妙了,而且注释也很清晰,完全可以作为一个学习案例! 我已经收藏了,晚上好好研究一下它的代码结构.
有13位网友表示赞同!
好像游戏规则和传统斗地主不太一样啊?感觉有点别扭,希望作者能出个官方教程解释下规则。
有9位网友表示赞同!
这样的网站真是太棒了!以前都不知道可以用 Python 做游戏玩,现在我可以下班后体验一下不同的游戏乐趣了!
有10位网友表示赞同!
我想学习一下Python的编程知识,这个项目看起来很不错,希望能够跟着代码一步步理解,也能写出来类似的游戏。
有16位网友表示赞同!
就别太高兴了吧!这只是个玩弄工具,工作时间应该认真完成任务,不要拿娱乐游戏浪费宝贵的工作时间。
有13位网友表示赞同!
太难了,这个脚本看不懂啊!建议作者能把详细教程一起分享出来,这样更容易上手学习。
有15位网友表示赞同!
这种项目虽然有趣,但对于一个要成为专业的程序员来说,还是需要多接触一些实际应用场景的项目来锻炼。
有5位网友表示赞同!
看起来很有意思呀!我也想试试用Python自己开发一款游戏,希望能够早日实现我的梦想!
有17位网友表示赞同!
这样的编程项目非常适合新手入门学习,操作简单,上手容易,而且还能在玩乐中掌握一些编程知识。
有14位网友表示赞同!
这个命令行斗地主虽然画面简单,但是玩法很有趣,也锻炼了一点逻辑思维能力!
有5位网友表示赞同!
感觉Python做游戏太难了!我尝试修改了一下代码,结果就出问题了,还是乖乖去玩商业游戏吧。
有11位网友表示赞同!
这个项目很棒! 我一直想学习 Python 游戏开发,现在有了很好的资源学习了!
有17位网友表示赞同!