*实现功能点
实现麻将的准备牌、洗牌、发牌、看牌
知识点
集合知识
项目思路
思路介绍
Icon
麻将的功能需求分析
a:具体规则:
- 组装136张麻将
条、筒、万加到一起的数目是108张
东、西、南、北风、红中、白皮、发财是28张,总共136张 - 将136张牌顺序打乱
- 四个玩家参与游戏,四人交替摸牌,每次4张,3次,之后庄家摸2张,两张之间个索引相差4,其他人再摸一张,即庄家14张,其他每人13张,剩下的留作底牌。
- 查看四人各自手中的牌(按照牌的大小排序)、底牌*
import java.util.*;
/**
* Description: 条strip 筒canister 万 ten thousand
*
* @Author Fann
* @Data 2018/11/14
*/
public class Mahjong {
//牌插入时候的序号,从1开始
int n = 1;
//插入的花色类型
int[] num = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
String[] typeOne = new String[]{"筒", "万", "条"};
String[] typeTwo = new String[]{"东风", "西风", "南风", "北风", "红中", "白板", "发财"};
LinkedList<Integer> idMahjong; //存储牌的顺序,利用牌的Integer可以通过hashmap查询到花色.
HashMap<Integer, String> idWithValue; //key:牌的序号,value:花色
ArrayList<ArrayList<Integer>> player; //存储四位玩家的ArrayList,默认第一位庄
/**
* 默认构造方法
*/
public Mahjong() {
this.idMahjong = new LinkedList<Integer>();
this.idWithValue = new HashMap<Integer, String>();
this.player = new ArrayList<ArrayList<Integer>>( 4 );
for (int i = 0; i < 4; i++) {
player.add( new ArrayList<Integer>() );
}
}
/**
* 整理麻将,共136张 并且打乱.
*/
public void arrangeMahjong() {
//加入筒,万,条
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < typeOne.length; j++) {
String s = num[i] + typeOne[j];
f