⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hand.java

📁 扑克牌的发牌:按一定的规则四人玩牌;谁赢了先给谁发牌 (默认先给主人公控制的人发牌)2.扑克牌的出牌:谁拿了红桃4,谁先出;出牌规则
💻 JAVA
字号:
import java.awt.*;/** * Contains cards in players hand *  * @author Sam Cavenagh * @version 12/11/02 *  * Website: http://home.pacific.net.au/~cavenagh/SH/ * Email: cavenaghweb@hotmail.com */public class Hand{    Card hand[] = new Card[52];    Card facedown[] = new Card[3];    Card faceup[] = new Card[3];    Point ontable[] = new Point[3];    //click detection box for cards in hand    Rectangle cardBox[] = new Rectangle[52];    //click detection box for cards on table    Rectangle tableBox[] = new Rectangle[3];    SHinterface sh;    Image back;    Graphics g;    public Hand(SHinterface sh, Image back, Graphics g){    this.sh = sh;    this.back = back;    this.g = g;    ontable[0] = new Point(103, 350);    ontable[1] = new Point(188, 350);    ontable[2] = new Point(276, 350);    tableBox[0] = new Rectangle(103, 350, 71, 96);    tableBox[1] = new Rectangle(188, 350, 71, 96);    tableBox[2] = new Rectangle(276, 350, 71, 96);    }    public Hand()    {}    //is there any cards facing up ?    public boolean isFaceUp()    {    if(faceup[0] != null || faceup[1] != null || faceup[2] != null)        return true;    return false;    }    //is there any cards facing down ? or only 1 card facing down    public boolean isFaceDown()    {    if(facedown[0] == null && facedown[1] == null && facedown[2] == null)        return false;    if(facedown[1] == null && facedown[2] == null)        return false;    if(facedown[0] == null && facedown[2] == null)        return false;    if(facedown[0] == null && facedown[1] == null)        return false;    return true;    }    public void swap(Card[] inhand, Card[] ontable)    {    for(int n = 0; n < 3; n++){        hand[n] = inhand[n];        faceup[n] = ontable[n];    }    }    public int mouseClick(int mouseX, int mouseY)    {    //counting number of cards in hand    int cardCount = length();    if(cardCount == 1){        for(int n = 0; n < 3; n++)            if(tableBox[n].contains(mouseX, mouseY))                if(selectionValid(n))                    return n;    }    //Checking for click inside card    for(int n = 0; n < cardCount - 1; n++)    if(cardBox[n].contains(mouseX, mouseY)){        return n;    }    return -1;    }        public boolean selectionValid(int selection)    {    if(isFaceUp()){        if(faceup[selection] == null)            return false;    }else{        if(facedown[selection] == null)            return false;    }    return true;    }    //Draw Cards in hand on screen    public void showHand()    {    //counting number of cards in hand    int cardCount = length();    int xfactor;    if(cardCount <= 20)        xfactor = 450 / cardCount;    else        xfactor = 450 / 21;    int shiftfactor = 38;    if(xfactor - shiftfactor < 0)    shiftfactor = xfactor;    //Drawing the cards    for(int n = 0; n < 52; n++){        if(hand[n] == null)            break;        int x = (int)(xfactor * (n + 1) - shiftfactor);        int y = 453;        if(n > 20){            x = (int)(xfactor * (n - 20) - shiftfactor);            y = 485;        }        if(n > 41){            x = (int)(xfactor * (n - 41) - shiftfactor);            y = 515;        }        hand[n].drawCard2(x, y);        //creating cardBox                //setting card height        int height = 96;//default height        if(cardCount > 22){//if more than 22 card there must be an over lay            //cardCount = total number of cards            //n = where this card is in the hand, ie 0 is first            if( n < 21 && cardCount - n - 20 > 0)                height = 32;            if( cardCount > 43 && n < 42)//if more than 43 card must over lay 3 times                height = 30;        }          int n2 = n;        if(n2 > 21)            n2 = 22;        int width = (xfactor * (n2 + 2) - shiftfactor) - x;        if(n > 20)            width = (int)(xfactor * (n - 19) - shiftfactor) - x;        if(n > 41)            width = (int)(xfactor * (n - 40) - shiftfactor) - x;        if( width > 71)            width = 71;        if(n + 2 == cardCount || n == 21 || n == 42)            width = 71;        cardBox[n] = new Rectangle(x, y, width, height);    }    for(int n = 0; n < 3; n++)        if(faceup[n] != null)            faceup[n].drawCard(ontable[n]);        else if(facedown[n] != null)            g.drawImage(back, (int)ontable[n].getX(), (int)ontable[n].getY(), sh);    }    //Add cards during dealing, this adds cards to facedown then faceup then hand    public void deal(Card card)    {    boolean added = false;    for(int n = 0; n < 3; n++)        if(facedown[n] == null){            facedown[n] = card;            added = true;            break;        }    if(!added)    for(int n = 0; n < 3; n++)        if(faceup[n] == null){            faceup[n] = card;            added = true;            break;        }    if(!added)    addCard(card);    }    //Adds card to hand, card is added to correct position     public void addCard(Card card)    {    for(int n = 0; n < hand.length; n++){        if(hand[n] == null){            hand[n] = card;            break;        }else if(hand[n].getValue() >= card.getValue()){            Card temp = hand[n];            hand[n] = card;            for(int s = length(); s >= n + 1 ; s--)                if(s + 1 < 52)                    hand[s + 1] = hand[s];            hand[n + 1] = temp;            break;        }    }    }    //Removing card from hand then reordering hand    public void removeCard(int cardno)    {    for(int n = cardno; n < length(); n++){        if(hand[n] == null)            break;        if(n + 1 < 52)        hand[n] = hand[n + 1];    }    hand[length() -1] = null;    }    public void removeAll()    {    for(int n = 0; n < 3; n++){        faceup[n] = null;        facedown[n] = null;    }    for(int n = 0; n < 52; n++)        hand[n] = null;            }    public Card getCard(int cardno)    {    return hand[cardno];    }    public Card getFaceUp(int cardno)    {    return faceup[cardno];    }    public void removeFaceUp(int cardno)    {    faceup[cardno] = null;    }    public void removeFaceDown(int cardno)    {    facedown[cardno] = null;    }    public Card getFaceDown(int cardno)    {    return facedown[cardno];    }    public int length()    {    int cardCount = 1;    for(int n = 0; n < 52; n++){        if(hand[n] == null)            break;        cardCount++;    }    return cardCount;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -