实现斗地主游戏中的做牌、洗牌、发牌,排序

业务需求分析:

斗地主的做牌, 洗牌, 发牌, 排序, 看牌。
业务: 总共有54张牌。
点数: "3","4","5","6","7","8","9","10","J","Q","K","A","2"
花色: "♠", "♥", "♣", "♦"
大小王: "👲" , "🃏"
点数分别要组合4种花色,大小王各一张。
斗地主:发出51张牌,剩下3张作为底牌。
功能:
1.做牌。
2.洗牌。
3.定义3个玩家
4.发牌。
5.排序
  1. 看牌

实现效果

文件结构

代码实现

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());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲍汁茄子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值