java斗地主发牌_程序员:Java斗地主部分功能实现:创建牌、发牌并按牌id对其排序...

Java斗地主部分功能实现

本文来自于一个斗地主程序编写的小练习,斗地主中,需要将牌打乱后将牌发给玩家,再按照从大到小的顺序发给各个玩家。考虑到卡牌的花色的数字并不能代表其在游戏规则中的大小,因此引入一个名为id的成员变量,用于标示牌的大小。

思路

创建一副牌:共54张,包括花色和数字;

打乱牌:Collections类中的shuffle方法;

发牌:count%3;

排序:Compare类与Collections.sort方法

代码

首先创建一个Card类用于生成Card对象

//编写一个Card类

public class Card implements Comparable {//实现一个Comparable类

private String card;

private int id;

static private int count=0;

public String getCard() {

return card;

}

public void setCard(String card) {

this.card = card;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public Card() {

super();

count++;

}

public Card(String card) {

super();

count++;

this.card = card;

this.id = count;

}

@Override//重写compareTo方法

public int compareTo(Card card) {

return this.id-card.id;

}

}

主程序

import java.util.ArrayList;

import java.util.Collection;

import java.util.Collections;

import java.util.Iterator;

import java.util.List;

public class LandLordSort{

public static void main(String[] args) {

//创建54张牌

Collection cardList=new ArrayList<>();

Card cardBig=new Card("大王");

cardList.add(cardBig);

Card cardSmall=new Card("小王");

cardList.add(cardSmall);

Collection huase=new ArrayList<>();

String[] hua= {"","","",""};

String[] shu= {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};

for(String i:shu) {

for(String j:hua) {

cardList.add(new Card(i+j));

}

}

printCard(cardList);

//洗牌

Collections.shuffle((List>) cardList);

printCard(cardList);

//发牌

Collection player1=new ArrayList<>();

Collection player2=new ArrayList<>();

Collection player3=new ArrayList<>();

Collection last=new ArrayList<>();

int count=0;

for (Card i:cardList) {

if (count%3==0&&count<51) {

player1.add(i);

}else if (count%3==1&&count<51) {

player2.add(i);

}else if (count%3==2&&count<51) {

player3.add(i);

}else {

last.add(i);

}

count++;

}

//排序并输出

Collections.sort((List) player1);

printCard(player1);

Collections.sort((List) player2);

printCard(player2);

Collections.sort((List) player3);

printCard(player3);

printCard(last);

}

//printCard方法,用于打印输出Collection

public static void printCard(Collection coll) {

for(Card i:coll) {

System.out.print(i.getCard()+",");

}

System.out.println("");

}

}

最后输出结果为:

小王,A,K,J,J,J,10,10,9,9,8,8,7,5,4,4,3,

大王,2,2,K,Q,Q,10,8,8,7,6,6,6,5,5,5,3,

2,2,A,A,A,K,K,Q,J,9,9,7,7,4,4,3,3,

6,Q,10,

246642da4d41ac6dcb09cd8abfa3c246.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值