📄 pokerhand.java
字号:
import java.util.Random;
class Card
{
protected String suit;
protected int number;
protected String name;
public Card()
{}
public Card(String suit,int number,String name)
{
this.suit = suit;
this.number = number;
this.name = name;
}
public String toString()
{
return name + " of " + suit;
}
public String getName()
{
return name;
}
public String getSuit()
{
return suit;
}
public int getNumber()
{
return number;
}
}
class Ace extends Card
{
public Ace(String suit)
{
super(suit,14,"Ace");
}
}
class Two extends Card
{
public Two(String suit)
{
super(suit,2,"Two");
}
}
class Three extends Card
{
public Three(String suit)
{
super (suit, 3,"Three");
}
}
class Four extends Card
{
public Four(String suit)
{
super(suit,4,"Four");
}
}
class Five extends Card
{
public Five(String suit)
{
super(suit,5,"Five");
}
}
class Six extends Card
{
public Six(String suit)
{
super(suit,6,"Six");
}
}
class Seven extends Card
{
public Seven(String suit)
{
super(suit,7,"Seven");
}
}
class Eight extends Card
{
public Eight(String suit)
{
super(suit,8,"Eight");
}
}
class Nine extends Card
{
public Nine(String suit)
{
super(suit,9,"Nine");
}
}
class Ten extends Card
{
public Ten(String suit)
{
super(suit,10,"Ten");
}
}
class Jack extends Card
{
public Jack(String suit)
{
super(suit,11,"Jack");
}
}
class Queen extends Card
{
public Queen(String suit)
{
super(suit,12,"Queen");
}
}
class King extends Card
{
public King(String suit)
{
super(suit,13,"King");
}
}
class RoyalFlush extends PokerHand
{
public RoyalFlush(Card[] cards , DeckOfCards deck)
{
super(cards,deck);
}
public PokerHand discard()
{
return this;
}
public int getValue()
{
return 1000000000;
}
}
class Flush extends PokerHand
{
public Flush(Card[] cards , DeckOfCards deck)
{
super(cards,deck);
}
public PokerHand discard()
{
return this;
}
public int getValue()
{
if (CardsOfHand[0].getSuit().equals("Spades"))
{
return 100000*4+CardsOfHand[0].getNumber();
}
else if (CardsOfHand[0].getSuit().equals("Hearts"))
{
return 100000*3+CardsOfHand[0].getNumber();
}
else if (CardsOfHand[0].getSuit().equals("Clubs"))
{
return 100000*2+CardsOfHand[0].getNumber();
}
else if (CardsOfHand[0].getSuit().equals("Diamonds"))
{
return 100000+CardsOfHand[0].getNumber();
}
return 0;
}
}
class Straight extends PokerHand
{
public Straight(Card[] cards , DeckOfCards deck)
{
super(cards,deck);
}
public PokerHand discard()
{
return this;
}
public int getValue()
{
return CardsOfHand[0].getNumber()*10000;
}
}
class StraightFlush extends PokerHand
{
public StraightFlush(Card[] cards , DeckOfCards deck)
{
super(cards,deck);
}
public PokerHand discard()
{
return this;
}
public int getValue()
{
if (CardsOfHand[0].getSuit().equals("Spades"))
{
return 100000000*CardsOfHand[0].getNumber()+4;
}
else if (CardsOfHand[0].getSuit().equals("Hearts"))
{
return 100000000*CardsOfHand[0].getNumber()+3;
}
else if (CardsOfHand[0].getSuit().equals("Clubs"))
{
return 100000000*CardsOfHand[0].getNumber()+2;
}
else if (CardsOfHand[0].getSuit().equals("Diamonds"))
{
return 100000000*CardsOfHand[0].getNumber()+1;
}
return 0;
}
}
class FourOfAKind extends PokerHand
{
public FourOfAKind(Card[] cards , DeckOfCards deck)
{
super(cards,deck);
}
public PokerHand discard()
{
if (CardsOfHand[0].getNumber() == CardsOfHand[3].getNumber())
{
discard(4);
}
else if (CardsOfHand[1].getNumber() == CardsOfHand[4].getNumber())
{
discard(0);
}
return this.categorize();
}
public int getValue()
{
return CardsOfHand[1].getNumber()*10000000;
}
}
class FullHouse extends PokerHand
{
public FullHouse(Card[] cards , DeckOfCards deck)
{
super(cards,deck);
}
public PokerHand discard()
{
return this;
}
public int getValue()
{
if (CardsOfHand[0].getNumber() == CardsOfHand[2].getNumber())
{
return 1000000*CardsOfHand[0].getNumber()+100000*CardsOfHand[3].getNumber();
}
else
{
return 1000000*CardsOfHand[3].getNumber()+100000*CardsOfHand[0].getNumber();
}
}
}
class ThreeOfAKind extends PokerHand
{
public ThreeOfAKind(Card[] cards , DeckOfCards deck)
{
super(cards,deck);
}
public PokerHand discard()
{
if (CardsOfHand[0].getNumber() == CardsOfHand[2].getNumber())
{
discard(3,4);
}
else if (CardsOfHand[1].getNumber() == CardsOfHand[3].getNumber())
{
discard(1,4);
}
return this.categorize();
}
public int getValue()
{
return CardsOfHand[2].getNumber()*1000;
}
}
class TwoPairs extends PokerHand
{
public TwoPairs(Card[] cards , DeckOfCards deck)
{
super(cards,deck);
}
public PokerHand discard()
{
if ( (CardsOfHand[0].getNumber() == CardsOfHand[1].getNumber())
&& (CardsOfHand[2].getNumber() == CardsOfHand[3].getNumber() ) )
{
discard(4);
}
else if ( (CardsOfHand[0].getNumber() == CardsOfHand[1].getNumber())
&& (CardsOfHand[3].getNumber() == CardsOfHand[4].getNumber() ) )
{
discard(2);
}
else if ( (CardsOfHand[1].getNumber() == CardsOfHand[2].getNumber())
&& (CardsOfHand[3].getNumber() == CardsOfHand[4].getNumber() ) )
{
discard(0);
}
return this.categorize();
}
public int getValue()
{
return CardsOfHand[1].getNumber()*100+CardsOfHand[3].getNumber()*10;
}
}
class APair extends PokerHand
{
public APair(Card[] cards , DeckOfCards deck)
{
super(cards,deck);
}
public PokerHand discard()
{
if (CardsOfHand[0].getNumber() == CardsOfHand[1].getNumber())
{
discard(2,3,4);
}
else if (CardsOfHand[1].getNumber() == CardsOfHand[2].getNumber())
{
discard(0,3,4);
}
else if (CardsOfHand[2].getNumber() == CardsOfHand[3].getNumber())
{
discard(0,1,4);
}
else if (CardsOfHand[3].getNumber() == CardsOfHand[4].getNumber())
{
discard(0,1,2);
}
return this.categorize();
}
public int getValue()
{
if (CardsOfHand[0].getNumber() == CardsOfHand[1].getNumber())
{
return CardsOfHand[0].getNumber()*10;
}
else if (CardsOfHand[1].getNumber() == CardsOfHand[2].getNumber())
{
return CardsOfHand[1].getNumber()*10;
}
else if (CardsOfHand[2].getNumber() == CardsOfHand[3].getNumber())
{
return CardsOfHand[2].getNumber()*10;
}
else if (CardsOfHand[3].getNumber() == CardsOfHand[4].getNumber())
{
return CardsOfHand[3].getNumber()*10;
}
return 0;
}
}
class CardHigh extends PokerHand
{
public CardHigh(Card[] cards , DeckOfCards deck)
{
super(cards,deck);
}
public PokerHand discard()
{
discard(2,3,4);
return this.categorize();
}
public int getValue()
{
return CardsOfHand[0].getNumber();
}
}
class DeckOfCards
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -