生活随笔
收集整理的這篇文章主要介紹了
使用Java集合实现麻将(准备牌、洗牌、发牌、看牌)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
ArrayList簡單實(shí)現(xiàn)麻將且排序
- 背景
- 實(shí)現(xiàn)業(yè)務(wù)邏輯
- 案例代碼
背景
完成麻將1-9 的**洗牌發(fā)牌操作**(不包括:東西南北風(fēng)、中發(fā)白)
麻將牌型科普:
1、條子:1-9每個(gè)數(shù)字*4 = 36張
2、萬子:1-9每個(gè)數(shù)字*4 = 36張
3、筒子:1-9每個(gè)數(shù)字*4 = 36張
總計(jì):36+36+36 = 108張
要求:每人發(fā)13張隨即牌,**考慮排序問題**
實(shí)現(xiàn)業(yè)務(wù)邏輯
1、歡迎用戶,且讓用戶執(zhí)行洗牌操作指令
2、洗牌
3、發(fā)牌
4、將發(fā)到每位玩家手中的麻將進(jìn)行排序
5、將每位玩家手中的牌進(jìn)行遍歷
案例代碼
package com
.rxx
.day12_27
;
import java
.util
.Objects
;public class Majiang implements Comparable<Majiang>{private String color
;private String num
;private Integer index
;public Majiang() {}public Majiang(String color
, String num
,Integer index
) {this.color
= color
;this.num
= num
;this.index
= index
;}@Overridepublic int compareTo(Majiang o
) {return this.index
- o
.index
;}public String
getColor() {return color
;}public void setColor(String color
) {this.color
= color
;}public String
getNum() {return num
;}public void setNum(String num
) {this.num
= num
;}public Integer
getIndex() {return index
;}public void setIndex(Integer index
) {this.index
= index
;}@Overridepublic boolean equals(Object o
) {if (this == o
) return true;if (o
== null
|| getClass() != o
.getClass()) return false;Majiang majiang
= (Majiang
) o
;return Objects
.equals(color
, majiang
.color
) &&Objects
.equals(num
, majiang
.num
) &&Objects
.equals(index
, majiang
.index
);}@Overridepublic int hashCode() {return Objects
.hash(color
, num
, index
);}@Overridepublic String
toString() {return num
+ "-" + color
;}
}
package com
.rxx
.day12_27
;import java
.util
.*
;public class MajiangDemo {public static Scanner sc
= new Scanner(System
.in
);public static List
<Majiang> list_one
,list_two
,list_three
,list_four
;public static void main(String
[] args
) {welcome();String xp
= sc
.nextLine();if ("xp".equalsIgnoreCase(xp
)) {List
<Majiang> cardList
= shuffleCards();System
.out
.println(cardList
);playingMaJiang(cardList
);maJiangCollection();printAllMJ();}}public static void printAllMJ(){System
.out
.println("東號(hào)玩家牌型為:" + list_one
);System
.out
.println("南號(hào)玩家牌型為:" + list_two
);System
.out
.println("西號(hào)玩家牌型為:" + list_three
);System
.out
.println("北號(hào)玩家牌型為:" + list_four
);}public static void maJiangCollection(){Collections
.sort(list_one
);Collections
.sort(list_two
);Collections
.sort(list_three
);Collections
.sort(list_four
);}public static void playingMaJiang(List
<Majiang> cardList
){list_one
= cardList
.subList(0, 13);list_two
= cardList
.subList(13, 26);list_three
= cardList
.subList(26, 39);list_four
= cardList
.subList(39, 52);}public static void welcome(){System
.out
.println("歡迎來到歡樂菠菜娛樂中心");System
.out
.println("請(qǐng)選擇您的方位:1-東方;2-南方;3-西方;4-北方");int direction
= Integer
.parseInt(sc
.nextLine());System
.out
.println("祝您今天財(cái)源廣進(jìn)---->");System
.out
.println("請(qǐng)輸入'xp'后,按回車開始進(jìn)行洗牌發(fā)牌操作...");}public static List
<Majiang> shuffleCards(){List
<Majiang> list
= new ArrayList<>();String
[] color
= {"條","筒","萬"};String
[] num
= {"一", "二", "三", "四", "五", "六", "七", "八","九"};int index
=0;Random r
= new Random();for(int i
=0;i
<color
.length
;i
++){for(int j
=0;j
<num
.length
;j
++){list
.add(new Majiang(color
[i
],num
[j
],index
++));list
.add(new Majiang(color
[i
],num
[j
],index
++));list
.add(new Majiang(color
[i
],num
[j
],index
++));list
.add(new Majiang(color
[i
],num
[j
],index
++));}}Collections
.shuffle(list
);return list
;}
}
謝謝大家閱讀,若有誤之處,歡迎大家指正……
總結(jié)
以上是生活随笔為你收集整理的使用Java集合实现麻将(准备牌、洗牌、发牌、看牌)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。