玩家模块的规范:

用一个长度为2的字符串表示一张牌:(D,C,H,S) + (A,2,3,4,5,6,7,8,9,0,J,Q,K)   用"jk"、"JK"分别表示小王、大王
游戏顺序是逆时针方向
角色用一个字符串表示,("banker","banker_opposite","banker_left","banker_right")分别表示庄家、庄家的对家、庄家的左边、庄家的右边
不考虑甩牌
使用python进行设计player模块设计:设计函数:
def add_card_and_is_snatch(current_card):
表示玩家摸到一张牌curernt_card,并选择是否抢庄。
current_card表示一张牌(长度为2的字符串)
如果抢庄,返回相应的牌的字符串,否则返回''设计函数:
def add_left_cards(left_cards):
只需要庄家才会用到,表示底牌是left_cards,left_cards是一个长度为2的字符串的list
需要返回玩家准备埋到底牌的牌,返回值也是一个长度为2的字符串的list设计函数:
def finish_one_round(current_turn_out_cards):
表示这一轮出牌结束,玩家被告知这一轮的出牌信息,
current_turn_out_cards表示一个三元组(order,role,card)的list,
每一个三元组表示这一轮你出牌之前的某一个人出的牌的信息,
order是一个整数,表示出牌顺序(1,2,3,4)
role是一个字符串,表示角色("banker","banker_opposite","banker_left","banker_right")
card是一张牌设计函数:
def set_main_value(main_value):
玩家被告知主面值是什么,main_value是一个字符(A,2,3,4,5,6,7,8,9,0,J,Q,K)表示主面值设计函数:
def set_main_color(main_color):
玩家被告知主花色是什么,main_color是一个字符(D,C,H,S)表示主花色设计函数:
def player_init():
表示现在开始一局新的游戏,并初始化相关变量设计函数:
def set_role(role):
玩家被告知自己的角色是什么,role是一个字符串("banker","banker_opposite","banker_left","banker_right")设计函数:
def play_out_cards(turn, current_turn_out_cards):
turn表示当前是第几轮出牌,current_turn_out_cards表示一个三元组(order,role,card)的list,
每一个三元组表示这一轮你出牌之前的某一个人出的牌的信息,
order是一个整数,表示出牌顺序(1,2,3,4)
role是一个字符串,表示角色("banker","banker_opposite","banker_left","banker_right")
card是一张牌
函数需要返回决定出的一张牌设计函数:
def show_cards():
需要返回当前玩家的手牌(长度为2的字符串的list)

UI说明:

import UI

在游戏初始化模块添加代码:

# Initialize pygamepygame.init()setting = UI.Setting()SCREEN_WIDTH, SCREEN_HEIGHT = setting.SCREEN_WIDTH, setting.SCREEN_HEIGHTx, y = 150, 60os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (x,y)screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))pygame.display.set_caption("升级")background = UI.Background(screen, setting)

使用接口说明:

initial(self):

每轮游戏初始化函数,重置卡组等功能;

add_card(self, card, turn):

发牌阶段,turn为目的发牌玩家的位置0-3,card为所发牌值;

add_cards_over(self, inputs, outputs, main_color, master):

发牌阶段结束后调用此函数;input为发给庄家的6张底牌,output为庄家压底的6张牌;mian_color为此局的主色,master是庄家玩家的位置0-3;

push_cards(self, cards, turn):

打牌阶段,函数意义是turn玩家打出cards,cards为card列表,即所有打出的牌值;

turn_over(self):

一轮牌结束阶段;清空四位玩家打出的所有牌;

update_point (self, point, level1, level2):

一轮牌结束阶段,更新当前得分和级数;point为当前得分,level1为东西位置玩家当前的级数,level2为南北玩家当前的级数

传递变量说明:

card:

(D,C,H,S) + (A,2,3,4,5,6,7,8,9,0,J,Q,K)   用"jk"、"JK"分别表示小王、大王

黑桃-spade 红桃-heart 方快-diamond 草花-club

黑桃3 : card = ‘s3’

turn:

整数0-3

(0, 1, 2, 3) 等价于 ('East', 'North', 'West', 'South')

参考demo: judge为裁判模块,myPlayer为AI玩家,运行judge.py

运行截图:

很多人找我要资源,划重点:

附件:上传至CSDN下载,传送门:https://download.csdn.net/download/weixin_37922777/10839701

《升级》扑克牌游戏——Python实现相关推荐

  1. python纸牌游戏_《升级》扑克牌游戏——Python实现

    [实例简介] <升级>扑克牌游戏--Python实现,包括UI界面,AI玩家,裁判监督三大模块. [实例截图] [核心代码] UI └── UI ├── Readme.pdf ├── UI ...

  2. Python 抽扑克牌游戏

    ''' Python 抽扑克牌游戏 by 郑瑞国 ''' import random puke=[x for x in range(1,55)] pukes={} #print(puke)types ...

  3. python做一个打怪升级的游戏

    可以使用 Python 开发一个类似 "打怪升级" 的游戏,可以使用 Python 的基本语法和面向对象编程思想来实现. 首先,需要定义一个角色类,包含角色的属性(如生命值,攻击力 ...

  4. 4.5 python 实战之扑克牌游戏 2021-06-20

    前面我们讲了python的爬虫,其实python也可以制作游戏,又好玩又有趣,这一章带大家来做一个小游戏来体验一下: 下面我们在代码中来了解更多细节: 游戏规则: 一副扑克牌52张(除了大小王), 4 ...

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

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

  6. PHP将108扑克牌发给6个人,6人扑克牌游戏

    这是一篇关于个.扑克.6 人.人扑克牌游戏和六个人两副牌玩什么.扑克牌六张游戏规则.6人玩的纸牌游戏叫啥的文章.会让你对"打勾鸡扑克6人游戏"的问题有更深一步的了解. 六个人2.闯 ...

  7. 24点游戏python版

    24点游戏python版 问题描述与规则 24点游戏是经典的纸牌益智游戏.常见游戏规则:从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表 ...

  8. 扑克牌游戏程序——人机对抗

    编写扑克牌游戏程序,初步设定玩家是人机对抗,每人各抓12张牌,游戏规则是每次只能出一张牌,投骰子决定谁先出牌.点数大的管住点数小的.如果管不住对方时就不出牌,让对方出牌.先出完牌的一方为赢.权值大小规 ...

  9. 弹球游戏python代码含记分模式_python编写弹球游戏的实现代码

    用Blender制作一个兵乓球小游戏,要编写Python代码需要安装pygame 包没有面对困难的勇气,也就没有享受快乐的权利. python 怎么写双人弹球游戏最难过的事不是别人又得罪你了,而是你自 ...

最新文章

  1. 虚拟化--015 配置VMware View Event database失败:
  2. Three.js中自定义控制几何体的点和面的属性
  3. Android Volley框架的使用(二)
  4. 发布在即!.NET Core 1.0 RC2已准备就绪
  5. 结束 txt进程_Python多进程抓取拉钩网十万数据
  6. 对于网络爬虫的提问?
  7. Kali学习笔记5:被动信息收集工具集
  8. mysqlslap 压力测试工具
  9. Python实现基于HDFS的云盘系统
  10. 后置递增运算符(JS)
  11. oracle11.2.0.4使用impdp导入时报错:ORA-39083 ORA-00439
  12. Chrome浏览器离线安装包下载方法
  13. Python实现简单的excel对比工具
  14. Java开发企业微信功能
  15. centos7查看进程ps_查看进程之ps命令
  16. 6取余11c语言,中国剩余定理“大衍求一术”手算方法及四个习题
  17. 处理器排行_2019年度PC处理器性能排行榜:AMD反超Intel
  18. 快递查询接口-快递鸟对接方案
  19. 《AlignedReID: Surpassing Human-Level Performance in Person Re-Identification》论文解读
  20. 红外对管信号处理电路(滞回比较器)

热门文章

  1. explorer.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉
  2. 刚进互联网公司做 JAVA 后端开发,基本上什么都不会该怎么办?我来告诉你
  3. C++程序设计分析 (基于谭书第三版)
  4. 空战小游戏(控制台应用) c/c++实现
  5. 网站推荐及个性化桌面软件推荐
  6. 17. 监测 web 网站的可用性
  7. 树莓派4B——操作系统的安装
  8. Windows 10 安装VMware16
  9. 服务器上运行Geant4例子XQuartz的问题
  10. 2019款奔驰E级:三次改款上市,奔驰到底在做什么?