简单麻将功能实现

麻将程序源码 一个简单的麻将程序源码,可以局域网对战,喜欢的朋友可以下载研究下 立即下载

麻将游戏实现:
实现功能点: 实现麻将的准备牌,洗牌,发牌,看牌 (集合知识) 麻将功能需求分析 a:具体规则:
1.组装136张麻将,条,筒,万加在一起的数目是108张 东,南,西,北风,红中,发财,白板是28张,总共136张
2.将136张牌顺序打乱
3.四个玩家参与游戏,四个人交替摸牌,每次4张,先摸3次,之后庄家摸2张(2张之间索引差4),其他人再摸一张,庄家14张,其余人13张牌,剩下的留作底牌。
4.查看四人手中的牌(按照牌的大小排序),底牌

代码的实现:

 public class Mahjong {
    public static void main(String[] args) {
        //定义三个数组,用来组合麻将牌
        int[] num = new int[]{1,2,3,4,5,6,7,8,9};
        String[] name = new String[]{"条","筒","万"};
        String[] tablet = new String[]{"东","南","西","北","中","白板","发财"};
        //记录牌的编号
        int k = 0;
        //用来存放牌
        HashMap<Integer,String> hashMap = new HashMap<>();
        //用来记录麻将存放个数,和次序
        List<Integer> number = new ArrayList<>();
        //定义四个存放玩家牌的数组
        List<Integer> player1 = new ArrayList<>();
        List<Integer> player2 = new ArrayList<>();
        List<Integer> player3 = new ArrayList<>();
        List<Integer> player4 = new ArrayList<>();
        //用来存放底牌
        List<Integer> base = new ArrayList<>();
        //准备牌,for循环添加条,筒,万
        for(int i =0;i<num.length;i++) {
            for(int j=0;j < name.length ;j++) {
                String s = num[i] + name[j];
                for(int l=0;l<4;l++) {
                    hashMap.put(k++, s);
                    //将牌的编号加入number中
                    number.add(k);
                }
            }
        }
        //for循环添加东南西北中白板发财
        for(int i=0;i<tablet.length;i++) {
            for(int j=1;j <= 4;j++) {
                hashMap.put(k++,tablet[i]);
                number.add(k);
            }
        }
        System.out.println(hashMap.size());

        System.out.println("看牌: ");
        //用迭代器来遍历
        Iterator<Map.Entry<Integer, String>> iterator = hashMap.entrySet().iterator();
        while(iterator.hasNext()) {
            System.out.print("(" + iterator.next() + ")" + " ");
        }
        System.out.println();
        System.out.println("将牌打乱顺序: ");
        //集合提供方法,将一个整形数组打乱
        Collections.shuffle(number);
        for(int i =0;i< number.size(); i++) {
            System.out.print("(" + i + ":" + hashMap.get(number.get(i)) + ")" + " ");
        }
        System.out.println();
        //发牌
        //定义属性n,记录摸牌的位置
        Integer n = 0;

        //总共发三次,每一次每人摸四张牌,
        for(int i=0;i<3;i++) {
            for(int j=0;j<4;j++) {
                player1.add(number.get(n++));
                player2.add(number.get(n++));
                player3.add(number.get(n++));
                player4.add(number.get(n++));
            }
        }
        //庄家摸两次牌,其他人摸一张(玩家1是庄家)
        player1.add(number.get(n));
        //需要跳牌(庄家第一次和第二次摸的位置索引值差4)
        n = n + 4;
        player1.add(number.get(n));
        //回到庄家第一次摸牌的位置的下一个
        n = n - 3;
        player2.add(number.get(n));
        player3.add(number.get(n));
        player4.add(number.get(n));
        //剩下的底牌
        for(int i=n;i<number.size();i++) {
            base.add(number.get(i));
        }
        System.out.println();

        //对玩家手里的牌进行排序,集合提供排序方法
        Collections.sort(player1);
        Collections.sort(player2);
        Collections.sort(player3);
        Collections.sort(player4);

        //看牌 ,  4个for循环遍历
        System.out.println("看牌 :");
        System.out.print("player1 : ");
        for(int i=0;i<player1.size();i++) {
            System.out.print(hashMap.get(player1.get(i)) + " ");
        }
        System.out.println();
        System.out.print("player2 : ");
        for(int i=0;i<player2.size();i++) {
            System.out.print(hashMap.get(player2.get(i)) + " ");
        }
        System.out.println();
        System.out.print("player3 : ");
        for(int i=0;i<player3.size();i++) {
            System.out.print(hashMap.get(player3.get(i)) + " ");
        }
        System.out.println();
        System.out.print("player4 : ");
        for(int i=0;i<player4.size();i++) {
            System.out.print(hashMap.get(player4.get(i)) + " ");
        }
        System.out.println();
        System.out.print("底牌 : ");
        for(int i=0;i<base.size();i++) {
            System.out.print(hashMap.get(base.get(i)) + " ");
        }
        System.out.println();
}

看牌的代码块可以封装起来,会显得简洁明了;

 //封装后的函数
        looking("1号",player1,hashMap);
        looking("2号",player2,hashMap);
        looking("3号",player3,hashMap);
        looking("4号",player4,hashMap);
        looking("底牌",base,hashMap);
    }
     /**
     * 输入想看的玩家的名字,传入该玩家的List数组,传入存放麻将牌的集合
     * @param name
     * @param player
     * @param hashMap
     */
    private static void looking(String name,List<Integer> player, HashMap<Integer,String> hashMap) {
        System.out.print(name + ": ");
        for(int i=0;i<player.size();i++) {
            System.out.print(hashMap.get(player.get(i)) + " ");
        }
        System.out.println();
    }
Majiang:可在HTML5 + JavaScript上运行的麻将应用程序“ Cyber​​麻将” 可在HTML5 + JavaScript上运行的麻将应用程序“ Cyber​​麻将” 演示 执照 作者 npm脚本 命令 描述 release 为发布而构建。 build 为调试而构建。 build:js 仅构建用于调试JavaScript。 build:css 仅构建CSS。 build:html 仅构建HTML。 test 执行单元测试。 test:cover 使用覆盖率报告执行单元测试。 文档 程序结构 数据结构,例如Tehai 网络麻将的分数格式 通道数计算 查找听众数量的程序(Chitoitsu,Kokushi Musou) 查找听众人数的程序(普通手版(重新)) 查找听众人数的程序(普通手版(重新)) 程序以查找侦听器的数量(修改后的版本) 完成点计算 程序计算麻将的胜利分数 麻将取胜点的计算-列出情况角色和抽奖角色 查找中奖表格(特殊表格)的程序 查找中奖 立即下载

相关推荐

Java实现麻将算法

自己根据其他资源,加上自己的优化,实现136张麻将牌的算法

麻将服务器功能JAVA实现-胡牌的算法

胡牌的算法 麻将是一款在中国很火的游戏,越来越多的棋牌公司都视他为必上的游戏,那么下面我就给大家讲解一下麻将的基本实现。 麻将胡牌的算法: 创建麻将的实体类: 麻将胡牌基本算法是:123 或者111 在加上一对将牌 就形成了它的胡牌。 假设现在有一副牌: 1万 , 2万 , 3万 , 4万 ,4万,4万 , 6筒 ,7筒 , 8筒 , 2条 , 2条...

rzkgogo的博客 2561

flex麻将和牌源代码

NULL 博文链接:https://fykyx521.iteye.com/blog/409109

java麻将算法_Java实现的麻将胡牌算法

胡牌:平胡:1对将及4副(顺子/刻子)对对胡:4副刻子+1对将组成的胡牌七小对:全部牌都是1对门清:全部牌都是自己摸的,没有碰和暗杠全求人:全部碰或明杠,手上只剩一张牌,并且是点炮胡,不能自摸清一色:全部都是一色的平胡(包含万、条、筒、字)七大对:有4张一样的牌且没杠,其余牌都是对子豪华大七对:有至少两个4张一样的牌,其余牌都是对子定义麻将牌:public class MajiangCard ex...

weixin_36269724的博客 2111

麻将游戏Java源码

麻将游戏Java源码,含麻将,麻将学院,麻将中国龙三个游戏源码

东方马达步进电机AZM66AK-HS100+AZD-KD调试经验记录

东方马达步进电机AZM66AK-HS100+AZD-KD调试经验记录(20170803YC) 本次总结主要实现的功能如下:用MEXE02软件在步进电机驱动器中设置好控制动作,每个控制动作有一个特定的编号。之后通过PC和驱动器之间的485通讯,发送相关指令,使步进电机按照一定编号的控制动作运转。 参考资料:东方马达步进电机AZM66AK-HS100+AZD-KD的产品手册,可在官网下载。 A....

dahailuoa6的博客 1万+

java麻将算法_原创干货!麻将平胡算法

/** * 手牌 * *@authorzkpursuit */public classHandCards{/** * 获取牌号最左边的一位数,如果牌为筒、条、万,则返回值为牌类型数值 * *@paramcard 牌号 *@return牌号从左至右第一位数(十位数) */ publicfinalstaticintgetCardLeftValue(intc...

weixin_42358733的博客 549

1 FFmpeg从入门到精通-FFmpeg简介

1.FFmpeg简介 1.1 FFmpeg的定义 1.2 FFmpeg的历史 1.3 FFmpeg的基本组成 1.4 FFmpeg的编解码工具ffmpeg 1.5 FFmpeg的播放器ffplay 1.6 FFmpeg的多媒体分析器ffprobe 1.7 FFmpeg编译(1)FFmpeg之Windows平台编译(2)FFmpeg之Linux平台编译(3)FFmpeg之OS X平台编译 1.8 FFmpeg编码支持与定制(1)FFmpeg的编码器支持(2)FFmpe

migu123的专栏 3697

Python实现武汉麻将(带癞子)

Python简单实现单癞子的麻将计算,复制粘贴可直接运行

ckckjsws的博客 1247

IFRS 9与CECL对比解析:跨国企业财务必须掌握的两种信用损失模型

本文深度解析IFRS 9与CECL两种信用损失模型的差异,帮助跨国企业应对财务合规挑战。从基础架构、数据治理到监管策略,详细对比三阶段模型与单一阶段模型的核心区别,并提供实施双轨制的实务建议,助力企业优化资本管理和税务筹划。

3c4x5z6v7b的博客 669

共聚焦显微镜的光源、工作原理与选型

共聚焦显微镜作为科研与工业领域中重要的微观成像工具,凭借光源的精准适配性、光学切片技术的三维成像能力,以及对不同工业场景的定制化适配潜力,为半导体检测、工业部件分析、智能制造升级提供了关键技术支撑。深入理解其光源特性、工作原理与选型逻辑,能帮助工程师与技术人员精准匹配设备与生产需求,既保障微观检测的精度与效率,又为产业优化、技术创新筑牢微观观测的基础。

PhotonixBay的博客 1540

麻将胡牌算法的Java实现

最近一个棋牌游戏项目中涉及对麻将胡牌的判定,网上搜了搜虽然看到一些算法,但是感觉都不尽如人意,一般麻将的胡牌为1对和4组三张牌的连牌,所以在网上搜到的算法往往都死死的为了这个目的来实现,而且多数没有考虑到对百塔牌的支持,下面贴上代码: /*  * To change this license header, choose License Headers in Project Properties...

嘿嘿 2951

以太网物理层协议整理(2)-万兆以太网

在万兆以太网标准化过程中,IEEE和10GEA(万兆以太网联盟)是两个最重要的组织。 万兆以太网标准和规范都比较繁多,在标准方面,首先有2002年的IEEE 802.3ae,后来也不断有新的万兆以太网规范推出,如2006年的IEEE 802.3an标准(10GBase-T)就推出了基于双绞铜线的万兆以太网规范,同样的IEEE 802.3aq标准推出了基于光纤的10GBase-LRM;2007年的

NowOrNever 3万+

实现简单的麻将游戏

实现简单的麻将游戏 描述:实现功能点 实现麻将的准备牌、洗牌、发牌、看牌 知识点 集合知识 项目思路 思路介绍 Icon 麻将的功能需求分析 具体规则: 组装136张麻将 条、筒、万加到一起的数目是108张 东、西、南、北风、红中、白皮、发财是28张,总共136张 将136张牌顺序打乱 4.将136张牌顺序打乱 四个玩家参与游戏,四人交替摸牌,每次4张,3次,之后庄家摸2张,两张之间个索引相...

weixin_42262357的博客 3370

delphi fmx android 自动更新(一)

所以,如果是http 则,manifest.xml application 下,https无需添加。增加android:usesCleartextTraffic="true",不然无法使用http下载东西。1,REQUEST_INSTALL_PACKAGES 权限。4,WRITE_EXTERNAL_STORAGE 权限。3,READ_EXTERNAL_STORAGE 权限。一般是从http下载安装包 apk。2,INTERNET 权限。sFile为apk包路径。

全粘工程师 550

龙腾CMS downloadFile接口任意文件读取漏洞复现 [附POC]

大连网龙网络科技有限公司专注于在信息科技领域中向客户提供商业解决方案,是专业的互联网服务解决方案提供商和网络营销服务专家,为用户提供一体化的网络营销整体解决方案,龙腾CMS downloadFile接口存在任意文件读取漏洞。

薛定谔嘚喵博客 720

java 麻将_JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样...

zzzzZZZZ1.開始还想贴图的 实在太懒了…… 这是一张麻将package com.lovo;import java.awt.Graphics;import java.awt.Image;/*** 类 : 麻将牌* @author Abe 属性:花色 点数 图片*/public class Mahjong {private Suits suits;private int face;privat...

weixin_36205101的博客 701

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C语言实现简单的ai麻将对局(较大工程,持续更新ing)

一个(还远远不是)立直麻将的c语言麻将环境程序,后面打算深度学习生成麻将ai

qq_45861290的博客 4814

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Dos下C++麻将游戏

#include "class_head.h" void set_pai(); //初始化赋值函数 void print_screen(); //初始化屏幕语句函数 char std_input_handle(); void rand_pai(); //随机分配函数 void jiemian(); //菜单 extern player,p_win,pp; void mai...

weixin_33767813的博客 295

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

实现麻将回放功能

1.服务器记录玩家对战信息,把数据返回给客户端 2.通过返回的数据加载: 数据文件:res/20160921173000.json //加载JSON文件 cc.loader.loadJson("res/20160921173000.json", function (error, data) { //cc.log(data); //data is the json object

Cleve_baby的博客 5685

【原创】日式麻将与中国麻将哪个比较难?——雀魂麻将MahjongSoul

进入听牌状态后,自己打过的牌中含有自己听的牌,那这之后只能自摸。

具身机器人和通用AI 2089

超简单的麻将算法

麻将的算法---提高篇   1.先说说,数值的构成。   类型字 0:东南西北中发白 --》1,2,3,4,5,6,7 类型万 1:1万2万3万4万5万6万7万8万9万--》11,12,13,14,15,16,17,18,19 类型条 2:1条2条3条4条5条6条7条8条9条--》21,22,23,24,25,26,27,28,29 类型饼 3:1饼2饼3饼4饼5饼6饼7饼8饼9饼-

ogre2014的专栏 1万+

【实战】AI 怎么打麻将?

说起打麻将我一直是处于比较业余并且不思进取的水平,各个地方的麻将规则不一,繁琐的规则也懒得放脑袋里记忆了,于是每次跟朋友打麻将都是现场临时约定规则,怎么简单怎么来,周边也有不少年轻的小伙伴我一样。 年前回家前跟朋友聚会又打了几圈麻将,几个人又经历了一遍边上网查算番规则边打牌,生怕少算番多亏了五毛钱的过程,于是萌生做个麻将算番APP的想法,解决我们几个懒人的打牌需求。 当时趁着那几天想法热乎,花了一周多撸了一个iOS App 取名叫【小番】就给弄上架了(第一次写swift,发现居然有双感叹号!!这样的运算符,

cv君的博客 3万+
上一篇: HashMap介绍
下一篇: LinkedHashMap介绍(特点,优势,和其他比较)
Java-fly
博客等级 码龄9年 13粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值