📄 scorecanvas.java
字号:
package com.skybright.pig;
import javax.microedition.lcdui.*;
public class ScoreCanvas extends Canvas implements CommandListener
{
private Command cmdContinue; //继续,在一局没有结束
private Command cmdNextGame; //一局结束后,再开一局
private Command exitCommand;
private Duel duel;
public ScoreCanvas(Duel d)
{
cmdContinue = new Command("\u7EE7\u7EED", 4, 1);
cmdNextGame = new Command("\u518d\u62f1\u4e00\u5c40", Command.SCREEN, 1);
exitCommand = new Command("\u9000\u51fa", Command.EXIT, 1);
duel = d;
addCommand(cmdContinue);
addCommand(exitCommand);
setCommandListener(this);
}
public void show()
{
PigMiDlet.display.setCurrent(this);
}
public void paint(Graphics g)
{
g.setColor(Config.BACKGROUND[0], Config.BACKGROUND[1],
Config.BACKGROUND[2]);
g.fillRect(0, 0, getWidth(), getHeight());
if (duel == null)
{
return;
}
if (duel.getStatus() != Config.STATUS_GAMEOVER)
{
return;
}else
{
drawTitle(g);
// play1 win all
if (duel.getPlayer1().getScore() == 26)
{
CardHand h = duel.getPlayer1();
drawScore(g, h, Config.SCORE1[0], Config.SCORE1[1], 0);
h = duel.getPlayer2();
drawScore(g, h, Config.SCORE2[0], Config.SCORE2[1], 26);
h = duel.getPlayer3();
drawScore(g, h, Config.SCORE3[0], Config.SCORE3[1], 26);
h = duel.getPlayer4();
drawScore(g, h, Config.SCORE4[0], Config.SCORE4[1], 26);
return;
}
//play2 win all
if (duel.getPlayer2().getScore() == 26)
{
CardHand h = duel.getPlayer1();
drawScore(g, h, Config.SCORE1[0], Config.SCORE1[1], 26);
h = duel.getPlayer2();
drawScore(g, h, Config.SCORE2[0], Config.SCORE2[1], 0);
h = duel.getPlayer3();
drawScore(g, h, Config.SCORE3[0], Config.SCORE3[1], 26);
h = duel.getPlayer4();
drawScore(g, h, Config.SCORE4[0], Config.SCORE4[1], 26);
return;
}
//play3 win all
if (duel.getPlayer3().getScore() == 26)
{
CardHand h = duel.getPlayer1();
drawScore(g, h, Config.SCORE1[0], Config.SCORE1[1], 26);
h = duel.getPlayer2();
drawScore(g, h, Config.SCORE2[0], Config.SCORE2[1], 26);
h = duel.getPlayer3();
drawScore(g, h, Config.SCORE3[0], Config.SCORE3[1], 0);
h = duel.getPlayer4();
drawScore(g, h, Config.SCORE4[0], Config.SCORE4[1], 26);
return;
}
//play4 win all
if (duel.getPlayer4().getScore() == 26)
{
CardHand h = duel.getPlayer1();
drawScore(g, h, Config.SCORE1[0], Config.SCORE1[1], 26);
h = duel.getPlayer2();
drawScore(g, h, Config.SCORE2[0], Config.SCORE2[1], 26);
h = duel.getPlayer3();
drawScore(g, h, Config.SCORE3[0], Config.SCORE3[1], 26);
h = duel.getPlayer4();
drawScore(g, h, Config.SCORE4[0], Config.SCORE4[1], 0);
return;
}
CardHand h = duel.getPlayer1();
drawScore(g, h, Config.SCORE1[0], Config.SCORE1[1]);
h = duel.getPlayer2();
drawScore(g, h, Config.SCORE2[0], Config.SCORE2[1]);
h = duel.getPlayer3();
drawScore(g, h, Config.SCORE3[0], Config.SCORE3[1]);
h = duel.getPlayer4();
drawScore(g, h, Config.SCORE4[0], Config.SCORE4[1]);
return;
}
}
private void drawTitle(Graphics g)
{
String t = "\u5f97\u5206: \u672c\u5c45\u5f97\u5206/\u603b\u5206";
String n = duel.getScore().whoOver();
if (n == null)
{
g.setColor(Config.FONT_COLOR);
g.drawString(t, 20, 3, 20);
return;
}else
{
g.setColor(Config.FONT_COLOR);
t = String.valueOf(String.valueOf(n))
.concat("\u5931\u8D25\uFF0C\u6E38\u620F\u7ED3\u675F\uFF01");
g.drawString(t, 20, 3, 20);
//更换标签按钮
addCommand(cmdNextGame);
removeCommand(cmdContinue);
setCommandListener(this);
return;
}
}
/**
* 原来程序中CardHand getScore没有考虑到全收后,应该显示0,而不是26
* @param g
* @param h
* @param x1
* @param y1
* @param curScore 实际的分数
*/
private void drawScore(Graphics g, CardHand h, int x1, int y1, int curScore)
{
g.setColor(Config.FONT_COLOR);
//add pic
g.drawString(String.valueOf(String.valueOf(h.getName())).concat(":"),
x1, y1, 20);
// g.drawImage(h.getHeader(), x1, y1, 20);
Card[] cards = h.getScoreCards();
int x = x1 + 30;
int y = y1;
for (int i = 0; i < cards.length; i++)
{
if (cards[i] != null)
{
g.drawImage(cards[i].getImage(), x, y, 20);
x += 8;
}
}
// int i=h.getScore();
g.setColor(255, 255, 255);
g.drawString(String.valueOf(String.valueOf((new StringBuffer("")).append(
curScore)
.append("/")
.append(duel.getScore(
h.getName())))),
x + 7, y, 20);
}
private void drawScore(Graphics g, CardHand h, int x1, int y1)
{
g.setColor(Config.FONT_COLOR);
//add pic
g.drawString(String.valueOf(String.valueOf(h.getName())).concat(":"),
x1, y1, 20);
// g.drawImage(h.getHeader(), x1, y1, 20);
/* Card[] cards = h.getScoreCards();
int x = x1 + 30;
int y = y1;
for (int i = 0; i < cards.length; i++)
{
if (cards[i] != null)
{
g.drawImage(cards[i].getImage(), x, y, 20);
x += 8;
}
}
*/
g.setColor(Config.FONT_COLOR);
g.drawString(String.valueOf(String.valueOf((new StringBuffer("")).append(
h.getScore())
.append("/")
.append(duel.getScore(
h.getName())))),
x1 + 30, y1, 20);
}
public void commandAction(Command c, Displayable p)
{
// String n = duel.getScore().whoOver();
// if (n == null) //如果一局没有结束
// {
if (c == cmdContinue)
{
duel.nextMatch();
}else if (c == cmdNextGame)
{
//add cmdContinue
addCommand(cmdContinue);
//remove next game cmd
removeCommand(cmdNextGame);
setCommandListener(this);
duel.nextMatch();
}else if (c == exitCommand)
{
duel.quit();
// PigMiDlet.display.setCurrent(null);
}
// }else //如果结束了
// {
// }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -