📄 helpaboutcanvas.java
字号:
import com.nokia.mid.ui.FullCanvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Font;
import java.util.Vector;
public class HelpAboutCanvas extends FullCanvas {
//菜单的索引值
private int selectedIndex = 0;
private int page = 0;
//菜单状态值
private int canvasFlg = 0;
//帮助菜单
private String[] helpMenu = {
"故事介绍",
"游戏规则",
"按键响应",
"客户服务"
};
private String[][] help = null;
private static final String _fldgoto[] = {
"发行:数字鱼移动娱乐", "www.digifun.cn", "", "制作:伊雄数码", "www.ebds.cn"
};
/**
* 帮助内容
* [0] : 游戏故事文字
* [1] : 游戏规则
* [2] : 按键响应
* [3] : 客户服务
*/
private static final String[] helpContents = {
"一年一度的世界武术大赛在中国开战。来自世界各地的8位武术家汇" +
"集嵩山为争夺龙魂的称号展开殊死搏杀...\n\n" +
"人物介绍\n陈龙 \n男 中国少林俗家弟子\n\n权向珍\n" +
"女 韩国跆拳道高手\n\n冯\n男 德国拳王\n\n" +
"迪奥\n男 美国街头冠军\n\n简方\n女 中国南拳手\n\n" +
"克拉克\n男 智利游侠\n\n山川\n男 日本相扑手\n\n" +
"巴多夫\n男 俄国大力士",
"根据设置选择的回合数,游戏时间,游戏难度,进行游戏。\n" +
"每回合游戏中,根据击中对手的招数(拳打脚踢绝招)减少对手的生" +
"命值。在规定时间内哪一方生命值先减为0就被判负。\n" +
"如果生命值都没有减为0则为超时,超时则增加一个的回合,直至分出输赢。" + "" +
"哪一方赢得所设置的回合数(1回3回或5回)即赢得比赛胜利。\n" +
"训练模式中,没有时间和生命值的限制。\n" +
"对战模式中,可以直接选择挑战任何一位选手。\n" +
"在故事模式中,将其他7位选手都击败,则赢得龙魂称号。\n" +
"生存模式中,玩家以一定的生命值接受其他7位选手的车轮挑战。",
"[方向左和按键4]向左移动或蓄力\n[方向右和按键6]向右移动或蓄力\n[方向下和按键8]向下移动或防守\n" +
"[方向上和按键2]向上移动或跳跃\n[按键1]勾拳\n[按键2]跳跃\n[按键3]直拳\n" +
"[按键5](当蓄力完全后玩家的血槽下方会有一个闪动的铁拳时)绝招波动拳\n" +
"[按键7]扫堂腿\n[按键8]防守\n[按键9]回旋踢\n" +
"[*键]声音开关\n" +
"[功能右键]返回\n[功能左键]返回主菜单",
"客服电话:\n0755-26978118\n客服邮件:\nhelp@digifun.cn"
};
/**
* 设定菜单状态
* @param i1 int,菜单状态值
*/
public void setMenuState(int i1) {
canvasFlg = i1;
selectedIndex = 0;
page = 0;
}
/**
* 显示游戏画面
*/
protected void showNotify() {
DragonSoul.inc.loadLights();
}
/**
* 按键响应函数
* @param keyCode 按键响应代码
*/
protected void keyPressed(int keyCode) {
if (canvasFlg > 1 ) { //help canvas
if ( keyCode == -1) { //up and 2 key
page = page <= 0 ? page : page - 1;
repaint();
} else if ( keyCode == -2) { //down and 8 key
//int lines = 60/Font.getFont(64, 1, 8).getHeight();
page = page >= help.length - 1 ? page : page + 1;
repaint();
}
} else if (canvasFlg == 0) {//help menu canvas
if ( keyCode == -1) { //up and 2 key
selectedIndex = selectedIndex <= 0 ? selectedIndex : selectedIndex - 1;
repaint();
} else if ( keyCode == -2) { //down and 8 key
selectedIndex = selectedIndex >= helpMenu.length - 1 ? selectedIndex : selectedIndex + 1;
repaint();
} else if (keyCode == 53 || keyCode == -6 || keyCode == getKeyCode(8)) {
// System.out.println("-- = " + ValueClass.helpContents[selectedIndex]);
String[] temp = format(helpContents[selectedIndex], getWidth() - 10);
int lines = (getHeight() - 65)/Font.getFont(64, 1, 8).getHeight();
int i = 0;
page = 0;
help = new String[(temp.length - 1)/lines + 1][lines];
while (i < temp.length) {
if (page < (temp.length - 1)/lines) {
System.arraycopy(temp, i, help[page++], 0, lines);
i += lines;
} else {
System.arraycopy(temp, i, help[page++], 0, temp.length - i);
i += temp.length - i;
}
// System.out.println("--pauseGame = " + pauseGame);
}
page = 0;
canvasFlg = 2 + selectedIndex;
repaint();
}
}
if (keyCode == -7) { //soft2([back] button)
if (canvasFlg < 2) {
if (DragonSoul.inc.bGameHelp)
DragonSoul.inc.backToGame();
else
DragonSoul.inc.backToMenu();
} else {
canvasFlg = 0;
repaint();
}
}
}
/**
* 绘制帮助信息画面
* @param g1 Graphics
*/
protected void paint(Graphics g1)
{
for(int i1 = 0; i1 < (getWidth() - 1) / DragonSoul.inc.menuBk.getWidth() + 1; i1++)
g1.drawImage(DragonSoul.inc.menuBk, i1 * DragonSoul.inc.menuBk.getWidth(), 0, 0x10 | 0x4);
if (canvasFlg == 0) {
g1.setFont(Font.getFont(64, 1, 8));
for(int j1 = 0; j1 < helpMenu.length; j1++) {
if (j1 == selectedIndex) {
g1.drawImage(DragonSoul.inc.fistImage, getWidth() / 3 - 21, 36 + j1 * (g1.getFont().getHeight() + 3), 0);
}
g1.setColor(0);
g1.drawString(helpMenu[j1], getWidth() / 3 - 3, 35 + j1 * (g1.getFont().getHeight() + 4), 0);
g1.setColor(0x993300);
g1.drawString(helpMenu[j1], getWidth() / 3 - 3, 34 + j1 * (g1.getFont().getHeight() + 4), 0);
}
} else if(canvasFlg > 1) {
g1.setFont(Font.getFont(64, 1, 0));
g1.setColor(0);
g1.drawString(helpMenu[selectedIndex], getWidth() / 2 + 1, 5, 0x10 | 0x1);
g1.setColor(0xffff00);
g1.drawString(helpMenu[selectedIndex], getWidth() / 2, 4, 0x10 | 0x1);
g1.setFont(Font.getFont(64, 1, 8));
if(page > 0)
{
g1.setColor(0);
g1.drawString("上一页", getWidth() / 2 + 1, 24, 0x10 | 0x1);
g1.setColor(0xffff00);
g1.drawString("上一页", getWidth() / 2, 23, 0x10 | 0x1);
}
// int lines = 60/Font.getFont(64, 1, 8).getHeight();
//System.out.println("help.length:"+help.length);
//System.out.println("page:"+page);
//System.out.println("lines:"+lines);
if(page < help.length - 1)
{
g1.setColor(0);
g1.drawString("下一页", getWidth() / 2 + 1, getHeight() - 26, 0x10 | 0x1);
g1.setColor(0xffff00);
g1.drawString("下一页", getWidth() / 2, getHeight() - 25, 0x10 | 0x1);
}
for(int j1 = 0; j1 < help[page].length && help[page][j1] != null; j1++) {
//g1.setColor(0);
//g1.drawString(help[page][j1], getWidth() / 2 + 1, 39 + j1 * g1.getFont().getHeight(), 0x10 | 0x1);
g1.setColor(0x993300);
g1.drawString(help[page][j1], getWidth() / 2, 38 + j1 * g1.getFont().getHeight(), 0x10 | 0x1);
}
} else if(canvasFlg == 1) {
g1.setFont(Font.getFont(64, 1, 8));
g1.setColor(0x993300);
for(int k1 = 0; k1 < _fldgoto.length; k1++)
{
//g1.setColor(0);
//g1.drawString(_fldgoto[k1], getWidth() / 2 + 1, 40 + g1.getFont().getHeight() * k1 + 1, 0x10 | 0x1);
g1.drawString(_fldgoto[k1], getWidth() / 2, 40 + (g1.getFont().getHeight() + 2) * k1, 0x10 | 0x1);
}
}
// g1.setClip(0, 0, getWidth(), getHeight());
// if (canvasFlg > 1) {
// g1.drawImage(DragonSoul.inc._fldchar, 0, getHeight(), 0);
// }
// g1.drawImage(DragonSoul.inc._fldif, getWidth(), getHeight(), 0x20 | 0x8);
}
/**
* 格式化显示的文本
* @param text String,每行的文本
* @param maxWidth int,限制的最大宽度
* @return result String[],格式化后的文本
*/
private String[] format(String text, int maxWidth) {
Font textFont = Font.getFont(64, 1, 8);
/* return string array */
String[] result = null;
/* temp string array */
Vector tempR = new Vector();
int lines = 0;
int len = text.length();
int index0 = 0;
int index1 = 0;
boolean wrap;
while (true) {
int widthes = 0;
wrap = false;
for(index0 = index1; index1 < len; index1++) {
if (text.charAt(index1) == '\n') {
index1++;
wrap = true;
break;
}
widthes = textFont.stringWidth("" + text.charAt(index1)) +
widthes;
if (widthes > maxWidth) {
break;
}
}
lines++;
if (wrap) {
tempR.addElement(text.substring(index0, index1 - 1));
} else {
tempR.addElement(text.substring(index0, index1));
}
if (index1 >= len) {
break;
}
}
result = new String[lines];
tempR.copyInto(result);
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -