当前位置:首页 > 话题广场 > 攻略专题 > 最新攻略

【21点玩法】专题打扑克嘛?Python教你“经典纸牌游戏21点”玩法

昨天不是星期天吗?

你们在家放松的话一般做什么?

周末购物,出去看电影。这是你们的周末。

程序员的周末就是在家躺尸唐诗躺尸,偶尔加班加班加班,或者跟着几个朋友在家消遣时间打打麻将,扑克牌玩一下!

​​尤其是放长假【ps:也没啥假,长假就是过年】在老家的时候,亲戚尤其多,七大姑八大姨的一年好不容易聚一次,打打麻将跟扑克这是常有的事儿,联络下感情这是最快的方式~

​​说起打扑克,我们经常就是玩儿的二百四、炸金花、三个打一个那就是叫啥名字来着,容我想想......

​话说真词穷,我们那都是方言撒,我翻译不过来普通话是叫什么了,我估计240你们也没听懂是啥,23333~

​​今天的话小编是带大家做一款21点的扑克游戏!

有大佬可优化一下这个代码,做一个精致豪华的界面就好了~~

正文

游戏规则:21点又名黑杰克,该游戏由2到6个人玩,使用除大小王之外的52张牌,游戏者的目标是使手中的牌的点数之和不超过21点且尽量大。当使用1副牌时,以下每种牌各一张(没有大小王):

(1)初始化玩家数:

<span style="color:#333333"><span style="background-color:#ffffff"><span style="background-color:#f8f8f8">def iniGame(): global playerCount, cards while(True): try: playerCount = int(input('输入玩家数:')) except ValueError: print('无效输入!') continue if playerCount < 2: print('玩家必须大于1!') continue else: break try: decks = int(input('输入牌副数:(默认等于玩家数)')) except ValueError: print('已使用默认值!') decks = playerCount print('玩家数:', playerCount, ',牌副数:', decks) cards = getCards(decks) # 洗牌</span></span></span>

(2)建立了玩家列表,电脑跟玩家对战。

<span style="color:#333333"><span style="background-color:#ffffff"><span style="background-color:#f8f8f8">def createPlayerList(): global playerList playerList = [] for i in range(playerCount): playerList += [{'id': '', 'cards': [], 'score': 0}].copy() playerList[i]['id'] = '电脑' + str(i+1) playerList[playerCount-1]['id'] = '玩家' random.shuffle(playerList) # 为各玩家随机排序</span></span></span>

(3)开始会设置2张明牌玩法都可以看到点数。

<span style="color:#333333"><span style="background-color:#ffffff"><span style="background-color:#f8f8f8">def gameStart(): print('为各玩家分2张明牌:') for i in range(playerCount): # 为每个玩家分2张明牌 deal(playerList[i]['cards'], cards, 2) playerList[i]['score'] = getScore(playerList[i]['cards']) # 计算初始得分 print(playerList[i]['id'], ' ', getCardName(playerList[i]['cards']), ' 得分 ', playerList[i]['score']) )</span></span></span>

(4)游戏为电脑跟玩家依次分发第三张暗牌,这是别人看不到的。

<span style="color:#333333"><span style="background-color:#ffffff"><span style="background-color:#f8f8f8">def gamePlay(): for i in range(playerCount): print('当前', playerList[i]['id']) if playerList[i]['id'] == '玩家': # 玩家 while(True): print('当前手牌:', getCardName(playerList[i]['cards'])) _isDeal = input('是否要牌?(y/n)') if _isDeal == 'y': deal(playerList[i]['cards'], cards) print('新牌:', getCardName(playerList[i]['cards'][-1])) # 重新计算得分: playerList[i]['score'] = getScore(playerList[i]['cards']) elif _isDeal == 'n': break else: print('请重新输入!') else: # 电脑 while(True): if isDeal(playerList[i]['score']) == 1: # 为电脑玩家判断是否要牌 deal(playerList[i]['cards'], cards) print('要牌。') # 重新计算得分: playerList[i]['score'] = getScore(playerList[i]['cards']) else: print('不要了。') break )</span></span></span>

(5)随机洗牌:

<span style="color:#333333"><span style="background-color:#ffffff"><span style="background-color:#f8f8f8">def getCards(decksNum): cardsList = ['Aa', 'Ab', 'Ac', 'Ad', 'Ka', 'Kb', 'Kc', 'Kd', 'Qa', 'Qb', 'Qc', 'Qd', 'Ja', 'Jb', 'Jc', 'Jd', '0a', '0b', '0c', '0d', '9a', '9b', '9c', '9d', '8a', '8b', '8c', '8d', '7a', '7b', '7c', '7d', '6a', '6b', '6c', '6d', '5a', '5b', '5c', '5d', '4a', '4b', '4c', '4d', '3a', '3b', '3c', '3d', '2a', '2b', '2c', '2d'] cardsList *= decksNum # 牌副数 random.shuffle(cardsList) # 随机洗牌 return cardsList</span></span></span>

(6)​设置牌名字典:

<span style="color:#333333"><span style="background-color:#ffffff"><span style="background-color:#f8f8f8">cardNameDict = {'Aa': '黑桃A', 'Ab': '红桃A', 'Ac': '梅花A', 'Ad': '方片A', 'Ka': '黑桃K', 'Kb': '红桃K', 'Kc': '梅花K', 'Kd': '方片K', 'Qa': '黑桃Q', 'Qb': '红桃Q', 'Qc': '梅花Q', 'Qd': '方片Q', 'Ja': '黑桃J', 'Jb': '红桃J', 'Jc': '梅花J', 'Jd': '方片J', '0a': '黑桃10', '0b': '红桃10', '0c': '梅花10', '0d': '方片10', '9a': '黑桃9', '9b': '红桃9', '9c': '梅花9', '9d': '方片9', '8a': '黑桃8', '8b': '红桃8', '8c': '梅花8', '8d': '方片8', '7a': '黑桃7', '7b': '红桃7', '7c': '梅花7', '7d': '方片7', '6a': '黑桃6', '6b': '红桃6', '6c': '梅花6', '6d': '方片6', '5a': '黑桃5', '5b': '红桃5', '5c': '梅花5', '5d': '方片5', '4a': '黑桃4', '4b': '红桃4', '4c': '梅花4', '4d': '方片4', '3a': '黑桃3', '3b': '红桃3', '3c': '梅花3', '3d': '方片3', '2a': '黑桃2', '2b': '红桃2', '2c': '梅花2', '2d': '方片2'}</span></span></span>

​(7)判断胜负:

<span style="color:#333333"><span style="background-color:#ffffff"><span style="background-color:#f8f8f8">def showWinAndLose(): loserList = [] # [['id', score], ['id', score], ...] winnerList = [] # [['id', score], ['id', score], ...] winnerCount = 0 loserCount = 0 for i in range(playerCount): if playerList[i]['score'] > 21: # 爆牌直接进入败者列表 lo([playerList[i]['id'], playerList[i]['score']]) else: # 临时胜者列表 winnerLi([playerList[i]['id'], playerList[i]['score']]) if len(winnerList) == 0: # 极端情况:全部爆牌 print('全部玩家爆牌:') for i in range(len(loserList)): print(loserList[i][0], loserList[i][1]) elif len(loserList) == 0: # 特殊情况:无人爆牌 winnerLi(key=lambda x: x[1], reverse=True) # 根据分数值排序胜者列表 for i in range(len(winnerList)): # 计算最低分玩家数量 if i != len(winnerList)-1: if winnerList[-i-1][1] == winnerList[-i-2][1]: loserCount = (i+2) else: if loserCount == 0: loserCount = 1 break else: loserCount = len(loserList) if loserCount == 1: lo()) else: while(len(loserList) != loserCount): lo()) for i in range(len(winnerList)): # 计算最高分玩家数量 if i != len(winnerList)-1: if winnerList[i][1] == winnerList[i+1][1]: winnerCount = (i+2) else: if winnerCount == 0: winnerCount = 1 break else: winnerCount = len(winnerList) while(len(winnerList) != winnerCount): winnerLi() print('获胜:') for i in range(len(winnerList)): print(winnerList[i][0], winnerList[i][1]) print('失败:') for i in range(len(loserList)): print(loserList[i][0], loserList[i][1]) else: # 一般情况:有人爆牌 winnerLi(key=lambda x: x[1], reverse=True) # 根据分数值排序胜者列表 for i in range(len(winnerList)): # 计算最高分玩家数量 if i != len(winnerList)-1: if winnerList[i][1] == winnerList[i+1][1]: winnerCount = (i+2) else: if winnerCount == 0: winnerCount = 1 break else: winnerCount = len(winnerList) while(len(winnerList) != winnerCount): winnerLi() print('获胜:') for i in range(len(winnerList)): print(winnerList[i][0], winnerList[i][1]) print('失败:') for i in range(len(loserList)): print(loserList[i][0], loserList[i][1])</span></span></span>

​游戏效果:咳咳咳.......感觉这游戏看运气也看胆量!!

​总结​

​​哈哈哈!小编玩游戏比较废,你们要来试试嘛?无聊的时候可以摸摸鱼,打打酱油~

制作不易,记得一键三连哦!! 如果需要本文完整的代码+图片素材。

Python新手安装包、免费激活码、等等更多Python资料 【私信小编06】即可免费领取哦!!

1.《【21点玩法】专题打扑克嘛?Python教你“经典纸牌游戏21点”玩法》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《【21点玩法】专题打扑克嘛?Python教你“经典纸牌游戏21点”玩法》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2076647.html

上一篇

lol2016全明星赛12.9视频:LCK vs LPL笨鸡救世盲僧

下一篇

DNF:21年夏日套该不该买?礼包道具优缺点解析,全民白字纹章

关于21点玩法我想说光遇:跑图不如捡垃圾?原地坐收25根蜡烛,间歇泉玩法大揭秘

关于21点玩法我想说光遇:跑图不如捡垃圾?原地坐收25根蜡烛,间歇泉玩法大揭秘

21点玩法相关介绍,轻度相遇:跑步比捡垃圾好吗?原地收到25支蜡烛,大曝光间歇泉游戏 前言: 大家好,我是阿尧。每天发布游戏领域的最新信息。 自从大蜡烛活动结束后,玩家们就对跑图失去了兴趣,一个半小时20根,谁也不想跑全...

【21点玩法】专题他利用数学纵横赌场,通过数据玩21点赢千万,被列入赌场黑名单

【21点玩法】专题他利用数学纵横赌场,通过数据玩21点赢千万,被列入赌场黑名单

21点玩法相关介绍,俗话说,学好数理化,走遍天下也不怕。 可此言的寓意是,数理化这些学科是来自于日常生活的科学知识,能够指导一个人如何面对生活中的日常难题。但一位麻省理工的学生却利用数学之时参与赌博,赢得千万奖金之后被赌...

【21点玩法】专题体验生化7电疗般21点,就来魔兽世界MG电子游戏

【21点玩法】专题体验生化7电疗般21点,就来魔兽世界MG电子游戏

21点玩法相关介绍,21点可以说是MG电子游戏里很经典很流行的玩法, 在世界上大部分的堵场都能看到,并跟随着互联网从实体发展到网络,而生化危机7的开发者卡普空则将这一玩法搬到了单机游戏里,并加入很多的随机元素,将传统的2...

关于21点玩法我想说打扑克嘛?Python教你“经典纸牌游戏21点”玩法

  • 关于21点玩法我想说打扑克嘛?Python教你“经典纸牌游戏21点”玩法
  • 关于21点玩法我想说打扑克嘛?Python教你“经典纸牌游戏21点”玩法
  • 关于21点玩法我想说打扑克嘛?Python教你“经典纸牌游戏21点”玩法
21点玩法,干货看这篇!死或生沙滩排球3赌场21点赚钱心得分享

21点玩法,干货看这篇!死或生沙滩排球3赌场21点赚钱心得分享

21点玩法相关介绍,轮盘没有一个钱来得最快,但代价是无尽的S/L大法。赚不到钱就要盖保管,赚钱就要快速备份,不停地退出游戏真的很烦 21点买保险,又想赚钱,当然需要S/L 但是没必要那么频繁。因为相对容易评估风险。 其实...

21点玩法看这里!叫牌还是不叫牌?这是个问题:《决斗21点》

21点玩法看这里!叫牌还是不叫牌?这是个问题:《决斗21点》

21点玩法相关介绍,对一些喜欢打牌的朋友来说,“21点”可以说是最基本的游戏。那个游戏简单,不难,而且一局21点花的时间也很少,节奏也很快,因此受到了一些初学者的喜爱。 而这样的一种玩法似乎在传统的电子游戏中还是比较少见...

21点玩法看这里!拉斯维加斯的“21点”与华尔街的抵押债券

21点玩法看这里!拉斯维加斯的“21点”与华尔街的抵押债券

21点玩法相关介绍,20世纪70年代末,美联储突然提高住房抵押贷款的利率,使住房抵押债券迅速贬值,储蓄贷款协会持有的贷款价值迅速减少。为了避免破产,储蓄贷款协会总经理们只能疯狂出售手中的贷款,当时能够帮助更换债券的前市长...

【21点玩法】专题扑克牌玩法科技百科

【21点玩法】专题扑克牌玩法科技百科

21点玩法相关介绍,扑克[P-K圆] 基础意义 本项目是多义词,共有5个议项 展开 扑克(英语:Poker)有两个意思。一个是“playing cards”(卡)的意思。第二种是指用纸牌这个游戏道具玩的游戏。据说是像德州...