最近在考虑斗地主程序的实现,斗地主这个棋牌游戏是众多棋牌游戏中最为有特色的一款,它简单易上手,包含了运气和技巧,经久不衰。

棋牌游戏的分类和区别

麻将类

麻将类一般都是三三成一组,然后对子带几组牌就是胡牌了,里面的操作主要是吃、碰、杠之类,胡牌可以对对胡、清一色、杠上花等,会根据情况有所变化。

扑克类

扑克类就是几种牌,比如说单牌、对子、三带、炸弹这些类型牌,也就是说把牌分类型,然后比大小,一种看分高,一种看跑得快!

关于棋牌的算法和数据结构

棋牌的算法,这里着重研究一下斗地主的算法,斗地主是一种典型的扑克游戏,扑克游戏一般都对牌型进行分类,在不同类型内进行比大小。扑克比大小的传统是很深远的,在小孩子还不会玩扑克牌的时候,他们会玩一种比大小的游戏,根据扑克上数字的大小或者图片内容的大小来决定输赢,在决定完输赢之后,赢的这一方可以得到对方的卡片,这是一种原始的扑克游戏,比大小。比大小是一切扑克的基础。

斗地主游戏的几个特点

斗地主游戏一般每个人分到17张牌,然后剩余3张牌,剩余的三张牌根据抽签情况来决定归属,拿到这三张牌的就是地主,和升级不一样,斗地主的这三张牌是不用埋下去的,只要拿着就行。在完成分牌之后,斗地主就已经完成了一个很大的任务。可以说,分完牌以后,结局已经决定了一半。也就是说,我们在分完牌以后工作完成了一半,但是实际上编程的精彩才刚刚开始而已。
请看斗地主的思路图。

Created with Raphaël 2.1.0斗地主示意图原始牌原始牌随机牌随机牌分堆牌分堆牌拆牌拆牌通过洗牌随机分派,决定地主。各方拆牌
Created with Raphaël 2.1.0分好牌在对手出牌以后洗牌和拆牌是否符合手牌拆牌方式?结束yesno

关于斗地主编程的思考相关推荐

  1. 关于函数式编程的思考(1)

    作者:李英杰,美团金融前端团队成员.欢迎大家一起来探讨FP 题外话:只是单纯地谈谈个人对函数式编程的理解,欢迎大家来一起探讨.也不会提及高阶函数与范畴学的内容,只聊一些很入门的问题.函数式编程的优点这 ...

  2. 从0开始搭建编程框架——思考

    需求来源于问题.(转载请指明出于breaksoftware的csdn博客) 之前有个人做前端开发的同学在群里问"C语言能做什么?能写网页么?",然后大家就开始基于这个问题展开争辩. ...

  3. 关于Matlab编程的思考(待续)

    Matlab编程的规范化思考 1.并行化 2.释放内存 3.需要调参的变量太多,可考虑将变量都放到一个结构体里面. 4.find(y),就是要找到y中那些非零项的指引 5.代码运行出现问题的时候,在命 ...

  4. matlab思考,关于Matlab编程的思考(待续)

    Matlab编程的规范化思考 1.并行化 2.释放内存 3.需要调参的变量太多,可考虑将变量都放到一个结构体里面. 4.find(y),就是要找到y中那些非零项的指引 5.代码运行出现问题的时候,在命 ...

  5. 关于嵌入式编程的思考

    现在的嵌入式编程,代码基本都是在各自为战.每个开发者都会实现自己的底层驱动接口和应用接口,很难想arduino那样形成了一套非常完整的生态体系.正是由于arduino统一的框架和完整的生态,以至于大部 ...

  6. FreeRTOS给予裸机编程的思考

    临界段保护:不允许被打断的代码 在裸机开发中,一般不能被打断的就是:器件的时序初始化(你使用的时候在定时器初始化之前即可).读取器件的数据(时序要求也很敏感,这个最容易忽略出错误).计算一个重要的值( ...

  7. 像鸟一样思考更好的并行编程

    介绍 编写一个应用程序并行运行很困难,对吧?我的意思是,它一定很难,否则我们会看到各处的并行程序.我们所看到的都是平滑的并行应用程序,可以毫不费力地使用每个可用的核心.相反,多线程应用程序是例外而不是 ...

  8. 从0开始搭建编程框架——主框架和源码

    一个良好的结构是"对修改关闭,对扩展开放"的.(转载请指明出于breaksoftware的csdn博客) 这个过程就像搭建积木.框架本身需要有足够的向内扩展能力以使自身有进化能力, ...

  9. 学编程当中最重要的三点,一些很正经的建议

    来源 | 沉默王二(ID:cmower) 今天不聊别的,给大家聊一下我认为学编程当中最重要的三点,尤其是针对新人来说. 热爱 努力 解决问题的能力 先说热爱. 有的同学是一开始就热爱,所以选专业的时候 ...

最新文章

  1. 【c++】0.C++笔记
  2. 基于CSE的微服务工程实践-Native API先行
  3. PaddlePaddle eval后报错terminate all the procs的解决方法
  4. [微信小程序]swiper保持宽高比
  5. [Android] SharedPreferences(轻量级的存储方式)
  6. 【笔记环境】Typora+Joplin+PicGo+Gitee+Onedrive
  7. B站有哪些程序员大牛up主?
  8. 断开现有的网络共享映射_彭世瑜_新浪博客
  9. speechrecognition
  10. 车机安卓+linux成本,你的车机为什么比千元安卓机还难用?
  11. win10 输入法 删除
  12. kafka问题之Listener method could not be invoked with the incoming message
  13. 华为metebook 电脑应用市场应用无法下载
  14. Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests (tsfresh –A Python package)
  15. CAD制图初学入门:CAD机械软件中如何构造孔?
  16. VisionPro基本使用
  17. 数据分析案例之淘宝用户行为分析完整报告
  18. 微信小程序做一个调查问卷(二)
  19. mysql中的强制索引_你如何强制MySQL中的查询使用索引?
  20. NX二次开发-UFUN导入图框UF_PART_import

热门文章

  1. vue设置scrollTop不起作用
  2. idea 亮度 调整_AOC显示器亮度怎么调 冠捷亮度调整方法
  3. 商城后台管理系统学习日志-02
  4. 浙大计算机专业是不是图灵班,浙大图灵班录取条件
  5. TPT Autotester|高效快捷的车辆在环ViL测试工具
  6. 领域驱动设计战术模式:领域事件
  7. 用python123.io编程世界你好_python语言IO编程
  8. My_sum函数进化
  9. C语言中getchar()函数的用法
  10. Python学习基础笔记三十二——正则表达式