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 + -
显示快捷键?