业务需求分析:
斗地主的做牌, 洗牌, 发牌, 排序, 看牌。
业务: 总共有54张牌。
点数: "3","4","5","6","7","8","9","10","J","Q","K","A","2"
花色: "♠", "♥", "♣", "♦"
大小王: "👲" , "🃏"
点数分别要组合4种花色,大小王各一张。
斗地主:发出51张牌,剩下3张作为底牌。
功能:
1.做牌。
2.洗牌。
3.定义3个玩家
4.发牌。
5.排序
看牌
实现效果
文件结构
代码实现
Card.java
package com.tty.entity;
/**
* @ClassName
* @Author mao
* @Description TODO
* @Date 2023/2/19 23:54
*/
public class Card {
private String point;
private String color;
private int size;
public Card() {
}
public Card(String point, String color) {
this.point = point;
this.color = color;
}
public Card(String point, String color, int size) {
this.point = point;
this.color = color;
this.size = size;
}
public String getPoint() {
return point;
}
public void setPoint(String point) {
this.point = point;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
@Override
public String toString() {
return point + color;
}
}
CardGame.java
package com.tty.entity;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* @ClassName
* @Author mao
* @Description TODO
* @Date 2023/2/19 23:54
*/
public class CardGame {
public static List<Card> cards;
private List<Card> player1;
private List<Card> player2;
private List<Card> player3;
private List<Card> lastThreeCards;
public static List<Card> getCards() {
return cards;
}
public static void setCards(List<Card> cards) {
CardGame.cards = cards;
}
public List<Card> getPlayer1() {
return player1;
}
public void setPlayer1(List<Card> player1) {
this.player1 = player1;
}
public List<Card> getPlayer2() {
return player2;
}
public void setPlayer2(List<Card> player2) {
this.player2 = player2;
}
public List<Card> getPlayer3() {
return player3;
}
public void setPlayer3(List<Card> player3) {
this.player3 = player3;
}
public List<Card> getLastThreeCards() {
return lastThreeCards;
}
public void setLastThreeCards(List<Card> lastThreeCards) {
this.lastThreeCards = lastThreeCards;
}
public CardGame() {
player1 = new ArrayList<>(17);
player2 = new ArrayList<>(17);
player3 = new ArrayList<>(17);
lastThreeCards = new ArrayList<>(3);
}
//做牌
static {
int size = 0;
cards = new ArrayList<>(54);
String[] points = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
String[] colors = {"♠", "♥", "♣", "♦"};
for (String point : points) {
size++;
for (String color : colors) {
Card card = new Card(point,color,size);
cards.add(card);
}
}
//大王
Card card1 = new Card("","👲",++size);
//小王
Card card2 = new Card("","🃏",++size);
cards.add(card1);
cards.add(card2);
}
//洗牌
public void shuffleCards(){
Collections.shuffle(cards);
}
//发牌
public void deal(){
for (int i = 0; i < cards.size() - 3; i++) {
switch (i % 3){
case 0:
player1.add(cards.get(i));
break;
case 1:
player2.add(cards.get(i));
break;
case 2:
player3.add(cards.get(i));
break;
}
}
lastThreeCards = cards.subList(cards.size() - 3, cards.size());
}
//排序
public void sort(List<Card> player){
Collections.sort(player, new Comparator<Card>() {
@Override
public int compare(Card o1, Card o2) {
return o2.getSize() - o1.getSize();
}
});
}
}
TestCardGame.java
package com.tty.test;
import com.tty.entity.CardGame;
/**
* @ClassName
* @Author mao
* @Description TODO
* @Date 2023/2/19 23:55
*/
public class TestCardGame {
public static void main(String[] args) {
CardGame cardGame = new CardGame();
System.out.println("欢迎来到斗地主游戏");
cardGame.shuffleCards();
System.out.println("全部扑克牌:" + CardGame.cards);
cardGame.deal();
cardGame.sort(cardGame.getPlayer1());
cardGame.sort(cardGame.getPlayer2());
cardGame.sort(cardGame.getPlayer3());
System.out.println("玩家一的牌:" + cardGame.getPlayer1());
System.out.println("玩家二的牌:" + cardGame.getPlayer2());
System.out.println("玩家三的牌:" + cardGame.getPlayer3());
System.out.println("底牌:" + cardGame.getLastThreeCards());
}
}