问题描述
生成一副扑克牌 实现洗牌 生成玩家 给玩家发牌 叫地主 理牌 给各个玩家发牌
代码实现
常用常量类App
public class APP {
public static final String[ ] SUIT = { "红桃" , "黑桃" , "方块" , "梅花" , "" } ;
public static final String[ ] RANK = { "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "J" , "Q" , "K" , "A" , "2" , "大王" , "小王" } ;
}
手牌类Card
public class Card implements Comparable < Card> {
private int suit;
private int rank;
public int getSuit ( ) {
return suit;
}
public void setSuit ( int suit) {
this . suit = suit;
}
public int getRank ( ) {
return rank;
}
public void setRank ( int rank) {
this . rank = rank;
}
public Card ( int suit, int rank) {
super ( ) ;
this . suit = suit;
this . rank = rank;
}
public Card ( ) {
super ( ) ;
}
@Override
public String toString ( ) {
return APP. SUIT[ suit] + APP. RANK[ rank] ;
}
@Override
public int compareTo ( Card o) {
if ( this . rank== o. rank) {
return this . suit- o. suit;
}
return this . rank- o. rank;
}
}
玩家类Player
import java. util. ArrayList;
import java. util. List;
public class Player {
private String name;
private List< Card> cards = new ArrayList < Card> ( ) ;
@Override
public String toString ( ) {
return name+ ":" + cards;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public List< Card> getCards ( ) {
return cards;
}
public void setCards ( List< Card> cards) {
this . cards = cards;
}
public Player ( String name, List< Card> cards) {
super ( ) ;
this . name = name;
this . cards = cards;
}
public Player ( ) {
super ( ) ;
}
public Player ( String name) {
super ( ) ;
this . name = name;
}
}
测试类Test
import java. util. ArrayList;
import java. util. Collections;
import java. util. List;
public class Test {
static List < Card> card;
static List< Player> player;
public static void main ( String[ ] args) {
creatPoker ( ) ;
washPoker ( ) ;
creatPlayers ( ) ;
System. out. println ( "开始发牌" ) ;
playCard ( ) ;
showPoker ( ) ;
System. out. println ( "叫地主" ) ;
landowner ( ) ;
liPoker ( ) ;
System. out. println ( "再次展示个玩家手牌" ) ;
showPoker ( ) ;
}
private static void liPoker ( ) {
for ( Player pl: player) {
List < Card> card = new ArrayList < Card> ( ) ;
card = pl. getCards ( ) ;
Collections. sort ( card) ;
}
}
private static void landowner ( ) {
int num = ( int ) ( Math. floor ( Math. random ( ) * 54 ) + 1 ) ;
if ( num% 3 == 0 ) {
Player player1 = player. get ( 0 ) ;
List < Card> cards1 = player1. getCards ( ) ;
cards1. add ( card. get ( 51 ) ) ;
cards1. add ( card. get ( 52 ) ) ;
cards1. add ( card. get ( 53 ) ) ;
System. out. println ( player1. getName ( ) + ":" + card. get ( 51 ) + " " + card. get ( 52 ) + " " + cards1. get ( 53 ) ) ;
} else if ( num% 3 == 1 ) {
Player player2 = player. get ( 1 ) ;
List < Card> cards2 = player2. getCards ( ) ;
cards2. add ( card. get ( 51 ) ) ;
cards2. add ( card. get ( 52 ) ) ;
cards2. add ( card. get ( 53 ) ) ;
System. out. println ( player2. getName ( ) + ":" + card. get ( 51 ) + " " + card. get ( 52 ) + " " + card. get ( 53 ) ) ;
} else if ( num% 3 == 2 ) {
Player player3 = player. get ( 2 ) ;
List < Card> cards3 = player3. getCards ( ) ;
cards3. add ( card. get ( 51 ) ) ;
cards3. add ( card. get ( 52 ) ) ;
cards3. add ( card. get ( 53 ) ) ;
System. out. println ( player3. getName ( ) + ":" + card. get ( 51 ) + " " + card. get ( 52 ) + " " + card. get ( 53 ) ) ;
}
}
private static void showPoker ( ) {
for ( Player players: player) {
System. out. println ( players) ;
}
}
private static void playCard ( ) {
Player player_ ;
for ( int i = 0 ; i < card. size ( ) - 3 ; ) {
for ( int j = 0 ; j < player. size ( ) ; j++ ) {
player_ = player. get ( j) ;
List< Card> cardss = player_. getCards ( ) ;
cardss. add ( card. get ( i) ) ;
i++ ;
}
}
}
private static void creatPlayers ( ) {
player = new ArrayList < Player> ( ) ;
player. add ( new Player ( "帅帅" ) ) ;
player. add ( new Player ( "美美" ) ) ;
player. add ( new Player ( "真真" ) ) ;
}
private static void washPoker ( ) {
Collections. shuffle ( card) ;
System. out. println ( "开始洗牌:\n" + card) ;
}
private static List< Card> creatPoker ( ) {
card = new ArrayList < Card> ( ) ;
for ( int i = 0 ; i < APP. SUIT. length- 1 ; i++ ) {
for ( int j = 0 ; j < APP. RANK. length- 2 ; j++ ) {
Card cards= new Card ( i, j) ;
card. add ( cards) ;
}
}
card. add ( new Card ( APP. SUIT. length- 1 , APP. RANK. length- 1 ) ) ;
card. add ( new Card ( APP. SUIT. length- 1 , APP. RANK. length- 2 ) ) ;
System. out. println ( "生成一副扑克牌:\n" + card) ;
return card;
}
}
运行结果