gamescreen.java

来自「jxme的一些相关程序,主要是手机上程序开发以及手机和计算机通信的一些程序资料,」· Java 代码 · 共 821 行 · 第 1/3 页

JAVA
821
字号
        BIG_CARD_X = PLAYER_IMAGE_X+PLAYER_IMAGE_WIDTH;
        BIG_CARD_Y = PLAYER_IMAGE_Y;
        BIG_CARD_WIDTH = 31;
        BIG_CARD_HEIGHT = 40;
        BIG_SYM_Y = BIG_CARD_Y + BIG_CARD_HEIGHT+2;
        int numCards = cards.size();
        for(int i = 0; i < numCards; i++)
            {
                BIG_SYM_X = BIG_CARD_X+2;
                BIG_SYM_Y = BIG_CARD_Y;
                Card currentCard = (Card)cards.elementAt(i);
                char currentSuit = currentCard.getSuit();
                bigSuit = Images.getInstance().getImage(currentSuit, true);
                String currentSymbol = currentCard.getSymbol();

                g.drawRoundRect(BIG_CARD_X, BIG_CARD_Y, BIG_CARD_WIDTH, BIG_CARD_HEIGHT, 4, 4);
                g.drawString(currentSymbol, BIG_SYM_X, BIG_SYM_Y,  g.TOP | g.LEFT);
                g.drawImage(bigSuit, BIG_CARD_X+BIG_IMAGE_XOFFSET, BIG_CARD_Y+BIG_IMAGE_YOFFSET, g.TOP | g.LEFT);
                //Now "erase" the right half of the card by drawing filled white rectangle 
                //over it for all but the last card
                if(i != numCards-1)
                    {    
                        g.setColor(colorWhite);
                        g.fillRect(BIG_CARD_X+BIG_CARD_WIDTH/2, BIG_CARD_Y, BIG_CARD_WIDTH, BIG_CARD_HEIGHT);
                        g.setColor(colorBlack);
                    }
            
                BIG_CARD_X += BIG_CARD_WIDTH/2;
            }
        int currentOutcome = currentPlayer.getOutcome();
        int OUTCOME_X = BIG_CARD_X+BIG_CARD_WIDTH/2+2;
        int OUTCOME_Y = BIG_CARD_Y+BIG_CARD_HEIGHT-fontHeight;
        if(currentOutcome != 0)
            {
                if(currentOutcome <= 21)
                    {
                        g.drawString(" "+currentOutcome, OUTCOME_X, OUTCOME_Y,  g.TOP | g.LEFT);
                    }
                else
                    {
                        g.drawString(" "+currentOutcome+Constants.STR_BUST, OUTCOME_X, OUTCOME_Y,  g.TOP | g.LEFT);
                    }
            }//if(currentOutcome != 0)
        
    }//end method

    private void drawOtherPlayers(Graphics g)
    {
        SMALL_SUIT_WIDTH = 10;
        SMALL_SUIT_HEIGHT = 10;
        SMALL_SYM_WIDTH = SMALL_SUIT_WIDTH;
        SMALL_SYM_HEIGHT = SMALL_SUIT_HEIGHT;
        
        NAME_X = LINE_X;
        NAME_Y = BIG_CARD_Y+BIG_CARD_HEIGHT+6;
        //The longest name to display is "You" i.e. thisPlayerName
        Font defaultFont = Font.getDefaultFont();
        int maxNameLength = defaultFont.stringWidth(Constants.thisPlayerName);
        BET_X = NAME_X+maxNameLength+2;
        BET_Y = NAME_Y;

        Vector players = Game.instance.getPlayers();
        int numPlayers = players.size();
        
        //count to numPlayers-1 because the current player is displayed in large
        //figures at the upper part of the screen
        for(Enumeration e = players.elements(); e.hasMoreElements();)
            {
                Player p = (Player)e.nextElement();
                boolean isDealer = (p.getId() == ProtocolConstants.DEALER);
            
                //Check if this player is in turn right now.
                //If he is we don't display him here, because he is displayed
                //above.
                int turn = Game.instance.getTurn();
                Player turnPlayer = Game.instance.getPlayer(turn);
                if(p.equals(turnPlayer))
                    {
                        continue;
                    }
                String label = p.getLabel();
                int bet = p.getBet();
                g.drawString(label+": ", NAME_X, NAME_Y, g.TOP | g.LEFT);
            
                if(!isDealer)
                    {
                        g.drawString("$"+bet, BET_X, BET_Y, g.TOP | g.LEFT);
                    }

                //Determine where the final status will go here, where we know
                //the x coordinate of the first card
                STATUS_X = BET_X;
                SMALL_SUIT_X = BET_X+15;
                SMALL_SUIT_Y = BET_Y+3;
                SMALL_SYM_X = SMALL_SUIT_X+SMALL_SUIT_WIDTH+2;
                SMALL_SYM_Y = BET_Y;

                Vector cards = p.getCards();
                if(isDealer)
                    {
                        drawDealerCards(g, cards);
                    }
                else
                    {
                        drawPlayerCards(g, cards);
                    }
            
                int outcome = p.getOutcome();
                int numCards = cards.size();
                String status = p.getEndStatus();
                if(status != Constants.STATUS_UNDEFINED)
                    {
                        //Put the status on the next line
                        STATUS_Y = SMALL_SYM_Y+defaultFont.getHeight();
                        //Update the location for the next player
                        NAME_Y += defaultFont.getHeight();
                        //Draw twice for bold effect
                        g.drawString(status, STATUS_X, STATUS_Y, g.TOP | g.LEFT);
                        g.drawString(status, STATUS_X+1, STATUS_Y, g.TOP | g.LEFT);
                    }
            
                NAME_Y += SMALL_SUIT_HEIGHT+4;
                BET_Y = NAME_Y;
            }//for ... players
        
    }//end method
    
    /**
       Helper method to simplify drawOthers
    */
    private void drawDealerCards(Graphics g, Vector cards)
    {
        int numCards = cards.size();
        for( int i = 0; i < numCards; i++)
            {
                Card card = (Card)cards.elementAt(i);
                String symbol = card.getSymbol();
                char suit = card.getSuit();
                smallSuit = Images.getInstance().getImage(suit, false);

                if(i == 0)
                    {
                        //draw the first card as an unknown
                        g.fillRect(SMALL_SUIT_X, SMALL_SUIT_Y, 7, 10);
                        g.drawString("?", SMALL_SYM_X, SMALL_SYM_Y, g.TOP | g.LEFT);
                    }
                else
                    {
                        g.drawImage(smallSuit, SMALL_SUIT_X, SMALL_SUIT_Y, g.TOP | g.LEFT);
                        g.drawString(symbol, SMALL_SYM_X, SMALL_SYM_Y, g.TOP | g.LEFT);
                    }
                
                SMALL_SUIT_X = SMALL_SYM_X+SMALL_SYM_WIDTH+4;
                SMALL_SYM_X = SMALL_SUIT_X+SMALL_SUIT_WIDTH+2;
            }//for ... cards
    }

    /**
       Helper method to simplify drawOthers
    */
    private void drawPlayerCards(Graphics g, Vector cards)
    {
        int numCards = cards.size();
        for( int i = 0; i < numCards; i++)
            {
                Card card = (Card)cards.elementAt(i);
                String symbol = card.getSymbol();
                char suit = card.getSuit();
                smallSuit = Images.getInstance().getImage(suit, false);

                g.drawImage(smallSuit, SMALL_SUIT_X, SMALL_SUIT_Y, g.TOP | g.LEFT);
                g.drawString(symbol, SMALL_SYM_X, SMALL_SYM_Y, g.TOP | g.LEFT);
                
                SMALL_SUIT_X = SMALL_SYM_X+SMALL_SYM_WIDTH+4;
                SMALL_SYM_X = SMALL_SUIT_X+SMALL_SUIT_WIDTH+2;
            }//for ... cards
    }
    
    /**
       Maps a suit letter to the appropriate image
    
       @param suit the letter defining the suit
       @param big true if the caller wants the big image
    */
    /*    
          private Image getImage(char suit, boolean big)
          {
          Image img = null;
          if(big)
          {
          switch(suit)
          {
          case 's':
          case 'S':
          img = bigSpade;
          break;

          case 'h':
          case 'H':
          img = bigHeart;
          break;
                    
          case 'd':
          case 'D':
          img = bigDiamond;
          break;
                    
          case 'c':
          case 'C':
          img = bigClub;
          break;
                    
          default:
          img = bigSpade;
          break;
          }
          }
          else
          {
          switch(suit)
          {
          case 's':
          case 'S':
          img = smallSpade;
          break;

          case 'h':
          case 'H':
          img = smallHeart;
          break;
                    
          case 'd':
          case 'D':
          img = smallDiamond;
          break;
                    
          case 'c':
          case 'C':
          img = smallClub;
          break;
                    
          default:
          img = smallSpade;
          break;
          }
          }
        
          return img;
          }//end method


          private void loadImages()
          {
          try
          {
          smallSpade = Image.createImage("/SmallSpade.png");
          smallHeart = Image.createImage("/SmallHeart.png");
          smallDiamond = Image.createImage("/SmallDiamond.png");
          smallClub = Image.createImage("/SmallClub.png");

          bigSpade = Image.createImage("/BigSpade.png");
          bigHeart = Image.createImage("/BigHeart.png");
          bigDiamond = Image.createImage("/BigDiamond.png");
          bigClub = Image.createImage("/BigClub.png");
          }
          catch(IOException e)
          {
          System.out.println("Error loading image\n"+e);
          }
          }//end method
    */
    }//end class

⌨️ 快捷键说明

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