斗地主游戏小结

文章目录

  • 程序简介
  • 程序的实现
    • 程序中使用到的类
        • Card:一副扑克牌。
        • CardGroup:
        • Player:玩家
        • Game:游戏主程序
        • Scene:游戏界面
    • 人工智能部分实现
        • 分析选牌牌型
        • 分析手牌并拆分成有效牌型
        • 出牌/跟牌分析
          • 拆牌原则:

程序简介

程序的实现

程序中使用到的类

Card:一副扑克牌。

接口:洗牌、抹牌及剩余牌数。

CardGroup:

一组牌型,如:单张、对子、顺子、炸弹等等。

属性:包含牌序号集合、对应牌的权值集合、该组牌的类型、权值、牌的数量;
接口:添加/删除序号牌、重置结构内属性、静态序号到权值转换。

Player:玩家

属性:手牌集合、手牌牌型集合、选牌集合、出牌集合、是否不出牌、玩家总分数;
接口:包括分析叫地主分数、分析手牌、选牌、分析是否出牌(或跟牌)等。

Game:游戏主程序

属性:玩家、地主方、当前出牌方、本局基本分、倍率、地主专属牌集合等;
接口:相关控制游戏进行函数,及没个步骤通知界面更新。

Scene:游戏界面

包含游戏界面元素及游戏主界面缓冲去生成及窗口绘制等功能。

人工智能部分实现

分析选牌牌型

  1. 先分析选牌是否为王炸,如不是则进行第二步;
  2. 找出选牌中相同权值的最大数量;
  3. 根据最大数量判断是否为相应的有效牌型。

分析手牌并拆分成有效牌型

  1. 判断牌型集合是否为空,不为空就不需要分析直接返回,否则进行第二步;
  2. 由当前玩家手牌(0-53格式)生成权值牌集合(3-17格式);
  3. 先拆分出权值牌集合中的基本牌型,分析的顺序为:王炸 → 炸弹 → 单顺 → 双顺 → 三顺、三条 → 一对 → 单张;
  4. 然后又基本牌型尝试组合成更复杂的牌型:三带一、四带二、飞机等。

出牌/跟牌分析

  1. 是否需要重新分析手牌,分析完成后进行第2步;

  2. 直接出牌(最后出牌方为自己);

    • 如手牌数为2,则先出王炸、炸弹、数量最多、权值最大的牌;
    • 如下家为我方,其手牌数为一,则出最小单牌;如下家为敌方,其手牌数为一,尽量不出单牌,或出最大单牌;
    • 其他正常出牌顺序为:单牌(A以上的牌尽量不直接出)→对子→双顺→单顺→三条、三带一、飞机
  3. 跟友方牌(最后出牌方为我方)

    • 手牌把数≤2,应出对应牌或炸弹,否则过牌
    • 上家为地主且未跟牌,过牌
    • 有对应牌,且权值小于14,则跟,炸弹不跟;
  4. 跟敌方牌(最后出牌方为敌方)

    • 有对应牌就跟,
    • 没有就拆,
    • 再着用炸弹,否则就过牌
    拆牌原则:
    单牌时:1.拆单顺数量大于5的2.拆三条3.拆对对子时:1.拆三条2.拆三顺数量大于3的单顺:1.拆更长单顺三条或三带一:1.拆三顺(先判断数量大于3的)飞机:1.拆三顺数量大、权值更大的

拆牌后一定要清空牌型集合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

201671010144 2016-2017 《java程序设计》--对象与类!

随着学习的逐渐深入,java语言的独特之处与其他语言的区别慢慢显现了出来。我认为java的独特之处就在于它处理事件的思维,即面向对象,而非面向过程。初次接触到类的概念,比较难懂,后面练习过几次后,有了初步…

springboot导包显示不存在_(一)SpringBoot搭建基本后端应用

boot在计算机术语中是启动的意思,SpringBoot也就是Spring的启动器。稍有经验的JavaWeb程序员对于传统SSM结构的MVC应用,大多数最不好的体验就是搭建一个项目需要进行大量的配置。稍有不慎就可能采坑。更关键的是有些配置基本就不会去进行定制化修改。为了…

为什么需要超出48K的音频采样率,以及PCM到DSD的演进

网上很多观点说,根据采样定理,48K的音频采样率即可无损的表示音频模拟信号(人耳最多可以听到20K的音频),为何还需要96K, 192K等更高的采样率呢?最先我也有这样的疑问,毕竟采样定理是…

171. Excel Sheet Column Number (Easy)

Given a column title as appear in an Excel sheet, return its corresponding column number. For example: A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 思路:1.26进制转化为十进制,ord()函数;2.逐个读入字符串中的每…

f12获取网页文本_8招教你快速搞定网页内容禁止复制粘贴,想怎么复制就怎么复制...

大家平时在搜索资料、浏览网页时,经常会复制一些内容。尤其是文字比较多时,比起一个个字手打,复制能省下不少功夫。可有时候好不容易找到资料了,却发现有些网站上的内容文本复制不了?甚至右键菜单都打不开!…

为什么需要超过48k的采样音频?

最近在看音频的事情,随便拿点东西出来聊一下,如果说的不对,请用棒槌来打我,这样我晚上睡觉就不用数绵羊了。我播放一个20HZ~20KHZ的音频,如下图我使用16K的采样率来采集它是声音信号,获取音频如下图我使用4…

HDU 2859 Phalanx(二维DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid2859 题目大意:对称矩阵是这样的矩阵,它由“左下到右”线对称。 相应位置的元素应该相同。 例如,这里是3 * 3对称矩阵: cbx     cpb     zcc 给出任意的…

Linux io内存存在的意义~

今天是母亲节,首先祝各位读者的母亲节日快乐,祝你们的母亲年轻健康。母亲节是一个亘古的话题,我本来想写个文章,但是想起来这周就一个周末,要花点时间陪下家人,昨天我们老大开会,特别说了&#…

imx6 配置串口波特率_RS232串口多机通信

一、基本原理1、主从多机通信拓扑图2、主从多机通信的具体过程 1)使所有的从机的SM2位置1,以便接收主机发来的地址;2)主机发出一帧地址信息,其中包括8位需要与之通信的从机地址,第9位为1;3)所有从机接收到地址帧后&…

android设置访问internet权限

如果在app中访问网络&#xff0c;提示internet permission denied&#xff0c;即是没有设置访问网络的权限 在AndroidManifest.xml文件中添加如下一行即可 <uses-permission android:name"android.permission.INTERNET" />转载于:https://www.cnblogs.com/Awan…

一个故事讲完CPU的工作原理

上二年级的小明正坐在教室里。现在是数学课&#xff0c;下午第一节&#xff0c;窗外的蝉鸣、缓缓旋转的吊扇让同学们昏昏欲睡。此时&#xff0c;刘老师在黑板上写下一个问题&#xff1a;6324 244675 &#xff1f;小明抬头看了一眼&#xff0c;觉得这两个数字挺眼熟。他昨天翘…

axure弹窗关闭_干货来袭,Axure插入图标的几种办法

前言在日常绘制原型的时候&#xff0c;经常会需要插入相应的图标&#xff08;icon&#xff09;到Axure中&#xff0c;但是看似好像很简单的事情也给蛮多小伙伴造成了困扰。现在很多开发团队都会用一些比较常见的前端框架来搭建后台管理系统&#xff0c;例如常见的Element-UI&am…

用指针实现高低位倒序,疯了吧

昨晚在微信群看到一个读者发的面试题目&#xff0c;从网上截图出来的&#xff0c;我百思不得其解&#xff0c;题目如图。幸好&#xff0c;我学过栈栈&#xff0c;C语言实现然后我写了个小程序第一个方法比较笨&#xff0c;当我写完自己的代码后&#xff0c;看到有同学发了自己的…

部署nexus服务

一、安装和启动 官网下载nexus-2.12安装包&#xff0c;地址&#xff1a;https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.12.0-01-bundle.tar.gz 此版本需要预先安装jdk1.7 解压后&#xff0c;用命令【./bin/nexus start】来启动 nexus有如下一些控制命令&…

天然气表怎么看多少方_上海考大学难度怎么样?看2019上海高考“成绩分布表”和“本科分数线”就知道了!...

参加高考的同学和家长们注意了~上海市教育考试院近日发布本市普通高等学校秋季招生本科各批次录取控制分数线和成绩分布表。艺术类、体育类本科文化控制分数线也同步公布。&#xff08;鲁申君注&#xff1a;上海2019年高考本科总分660&#xff0c;专科总分450&#xff0c;不分文…

关于Linux内核代码不使用typedef的讨论?

C语言关键字 -&#xff08;typedef关键字&#xff09;typedef有点像火隐忍者里面的万花筒写轮眼&#xff0c;用起来非常炫酷有型&#xff0c;使你的代码更加简短&#xff0c;让你穿上你亲妈都认不出你的马甲…比如这样一段代码typedef struct point{int x, y;} Points;Points f…

基于深度学习模型的花卉图像分类代码_华为不止有鸿蒙!教你快速入门华为免编程深度学习神器ModelArts...

引言&#xff1a;本文介绍利用华为ModelArts进行深度学习的图像分类任务&#xff0c;不用一行代码。今年8月9日&#xff0c;在华为史上规模最大的开发者大会上&#xff0c;华为正式发布全球首个基于微内核的全场景分布式OS——鸿蒙操作系统(HarmonyOS)。但你知道吗&#xff1f;…

洛谷P3405 [USACO16DEC]Cities and States省市

P3405 [USACO16DEC]Cities and States省市 题目描述 To keep his cows intellectually stimulated, Farmer John has placed a large map of the USA on the wall of his barn. Since the cows spend many hours in the barn staring at this map, they start to notice severa…

天线的原理

关注、星标公众号&#xff0c;不错过精彩内容来源&#xff1a;中兴文档小时候家里的收音机、电视机&#xff0c;都带着可以灵活转动拉伸的杆子&#xff0c;大家一定对这个可以转来转去的杆子记忆犹新&#xff0c;或许也好奇的发现这个杆子的长度与方向和收音机、电视的接收效果…

2d 蓝图_“蓝图”卷积--对深度可分离卷积的再思考

论文&#xff1a;Rethinking Depthwise Separable Convolutions: How Intra-Kernel Correlations Lead to Improved MobileNetshttps://arxiv.org/pdf/2003.13549.pdf​arxiv.org代码地址&#xff1a;zeiss-microscopy/BSConv​github.com一、背景一些轻量级的网络&#xff0c;…