这个代码实现的是J来家游戏,规则是这样的:

两个玩家随机平分一副扑克牌中的纸牌,然后从最上面出牌,名牌摆出,如果玩家出的牌是J,则将已经落地的名牌全部收归自己,放到自己牌的最下方,再出一张牌;如果出的牌在摆出的牌中存在了,则将刚出的牌和相同的牌之间的所有扑克牌归为自己;如果出的牌不满足上述两种条件,则对方出牌,规则同上。

这里的规则其实很简单,要注意的一点就是需要使用递归编程,因为玩家出牌不是一人只出一手牌,而是当你出了J或者底牌中存在的扑克牌时候,在收回底落地的名牌之后,需要再次出一张牌。代码如下所示:

import random
import timedef cards_init():source_cards = [ ['3',4],['4',4],['5',4],['6',4],['7',4],['8',4],['9',4],['10',4],['J',4],['Q',4],['K',4],['A',4],['2',4]] #除去大小王的扑克牌player_1 = []   #抓牌前玩家palyer_1手牌player_2 = []   #抓牌前玩家palyer_2手牌indexs = [ i for i in range(52) ]   #对52张牌进行索引index_player_1 = []  #玩家palyer_1手牌索引index_player_2 = []  #玩家palyer_1手牌索引for i in range(26):index = random.choice(indexs)   #为玩家player_1随机分配扑克牌index_player_1.append( index )  #为玩家player_1随机分配扑克牌indexs.remove(index)            #牌已经被抓走,则在底牌中删除这张牌index = random.choice(indexs)index_player_2.append(index)indexs.remove(index)for i in index_player_1:   #将分配到的牌放到手里player_1.append( source_cards[ i//4 ][0] )for i in index_player_2:player_2.append( source_cards[ i//4 ][0] )return player_1, player_2player_1, player_2 = cards_init()  #游戏的初始化
print(player_1)
print(player_2)
lover = input('希望谁为获胜者?player1 or player2 or impartial: ')    #加了一个玩赖的设置
if lover=='player1':while 'J' in player_2:player_2.remove('J')if lover=='player2':while 'J' in player_1:player_1.remove('J')
print(player_1)
print(player_2)land_cards = []    #打出的扑克牌
is_end = False     #游戏是否结束的标志'''
push_card(players)是游戏的逻辑设置,使用了递归。如果玩家的底牌数量为零,则游戏结束;如果出的牌在底牌中不存在并且不是J,则下一个玩家出牌;如果出的牌在底牌中存在,
则将出的牌和相同的牌之间的所有牌归为自己,再重新出牌;如果出的牌为J,则将所有的底牌都归为自己。
'''
def push_card(players):if len(players)<5:  #检测玩家是否还有底牌print('game over')is_end=True      #将游戏的结束标志设置为Truereturn -1temp_card = players[0]    #获得玩家的出牌信息if temp_card not in land_cards and temp_card != 'J':    #出的牌再底牌中不存在,并且不是Jprint('玩家手牌为:', players)print('底牌为:', land_cards)print('出牌为:', temp_card)print('不能收牌')print()time.sleep(1)land_cards.append(temp_card)    #将玩家的出牌追加到底牌的末尾del players[0]    #在玩家手牌中删除已经出过的牌return -2elif temp_card in land_cards:    #出的牌在底牌中存在print('玩家手牌为:', players)print('底牌为:', land_cards)print('出牌为:', temp_card)print('收牌')time.sleep(1)cut = land_cards[land_cards.index(temp_card):]    #截取底牌中与玩家出牌相同的纸牌之间的所有纸牌for i in range( land_cards.index(temp_card), len(land_cards) ):    #将截取后的牌在底牌中删除del land_cards[-1]players.extend(cut)    #将截取到的纸牌追加到玩家手牌的末尾players.append(temp_card)  #将玩家打出的纸牌收归到末尾del players[0]    #删除刚刚出手的纸牌print('收牌后为:',players)print()push_card(players)    #递归调用elif temp_card=='J':    #如果玩家的出牌为Jprint('玩家手牌为:', players)print('J来家')print('底牌为:', land_cards)print('出牌为:', temp_card)time.sleep(1)players.extend(land_cards)    #将所有底牌收回来players.append(temp_card)for i in range(len(land_cards)):    #将底牌列表中的所有牌删除del land_cards[-1]del players[0]print('收牌后为:', players)print()push_card(players)while not is_end:    #游戏循环push_card(player_1)push_card(player_2)

这个代码也可以到github上下载,地址为:https://github.com/t20134297/simple-poker-game

在最开始编写代码的时候本想做一个可视化的过程,可是后来太懒了,再加上作可视化,需要解决一下Python当中那个伪线程的问题,就没有实现它,不过可以fork我的代码,备不住哪天心血来潮了就补充一下这个内容。

python模拟简单的扑克牌游戏相关推荐

  1. python纸牌游戏_python模拟简单的扑克牌游戏

    这个代码实现的是J来家游戏,规则是这样的: 两个玩家随机平分一副扑克牌中的纸牌,然后从最上面出牌,名牌摆出,如果玩家出的牌是J,则将已经落地的名牌全部收归自己,放到自己牌的最下方,再出一张牌:如果出的 ...

  2. 一个简单的扑克牌游戏(一)

    用C#开发一个简单的扑克牌游戏 一.概述 ///这是一个简单的游戏(也许简单的不能再简单啦),用C#语言编写,运行在windouws控制台环境中. ///开发日期:2008年8月30日始 ///项目名 ...

  3. 使用Python模拟蒙蒂霍尔悖论游戏

    假设你正参加一个有奖游戏节目,并且有3道门可选:其中一个后面是汽车,另外两个后面是山羊.你选择一个门,比如说1号门,主持人当然知道每个门后面是什么并且打开了另一个门,比如说3号门,后面是一只山羊.然后 ...

  4. 用Java编写简单的扑克牌游戏

    昨天我帮助一位朋友解决了这个问题,今天我即兴想写一篇详细的关于用Java编写扑克牌游戏的文章. 当然我这里只是实现一些简单的功能. 关于扑克牌游戏的特征,想必大家都有所接触过,有扑克牌,玩扑克牌游戏的 ...

  5. Python实现21点扑克牌游戏

    "21点扑克牌游戏"又名黑杰克(Blackjack),是一种流行的扑克游戏.该游戏由两到六个人玩,使用除大小王之外的52张牌,游戏者的目标是使手中的牌的点数之和不超过21点且尽量大 ...

  6. python制作简单拼图小游戏

    开发工具 **Python版本:**3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 关注公众号:Python学习指南,回复"拼图"即可获取源码 环境搭建 ...

  7. python写游戏脚本-python实现简单贪吃蛇游戏

    本文实例为大家分享了python实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 代码: from turtle import * from random import randrange from ...

  8. python 基础简单猜数游戏

    4.1 python 猜数游戏 代码 import random number=random.randint(1,5) guess=int(input("请输入一个1-5之间的数字:&quo ...

  9. 用Python制作简单的小游戏

    朋友们大家好,相信大部分人都喜欢玩游戏,无论是在工作间隙还是下班回家的路上,可能都会拿起手机玩游戏打发时间,亦或是在游戏中寻找乐趣,放松自己.上 我跟大家分享的内容主要是用Python的Pygame ...

最新文章

  1. java 16 -12 静态导入
  2. 【深度学习】深入理解Batch Normalization批标准化
  3. SAP 电商云 Spartacus UI quick order 搜索结果的索引设置实现
  4. vue 过滤器 filter
  5. Mysql指定编码导入导出数据
  6. 网络流量监测IP雷达 4.0
  7. MySQL数据库授权与索引
  8. 文华财经多个非常实用的期货指标公式,文华财经支撑压力自动画线公式
  9. Oracle AutoVue介绍
  10. c35是什么意思_什么是C35混凝土?
  11. 能安装Chrome扩展和油猴脚本的手机浏览器
  12. 如何读书:实用性阅读指南
  13. iOS-打开本地或下载的Excel文件
  14. MYSQL的REPEATABLE-READ解决不可重复读和幻读
  15. HTML期末学生大作业-电影网站html+css+javascript
  16. 入门级用户福音,阿里云推轻量应用服务器新流量包套餐,成本最高可降50%
  17. 有色金属行业数字化之路探析
  18. 如此悲伤,如此愉悦,如此独特
  19. FME在三维数字城市建设中的应用初探
  20. php讲师主要做什么,PHP高级讲师岗位职责

热门文章

  1. linux复现数据库,基于嵌入式Linux系统平台并可应用于监控组态软件实时数据库的设计方案详解...
  2. WM通信信息管理类软件评测
  3. 如何自动校正系统时间
  4. java语言与www技术形成性考核册_电大Java语言与WWW技术形成性考核填空题
  5. cesium 切换瓦片地图的加载方式
  6. 【附源码】计算机毕业设计SSM食堂外卖系统
  7. ASEMI整流桥KBP307和KBP310有何不同
  8. C++仿照string类,写一个my_string类并实现相关功能
  9. python二级证书含金量排名_全国计算机二级证书含金量有多高?
  10. 归档|2022年12月香港转机回国