游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1797|回复: 0

J2ME-MIDP1.0游戏完整实现-双人扫雷wxh zt

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2005-8-3 21:28:00 | 显示全部楼层 |阅读模式
主菜单通过不同大小的两种字体来显示选中和未选中的菜单项,用一个int型变量表示当前选中的菜单项,用一个String型的一维数组储存菜单项的内容,在keyPresseed方法中根据菜单选项变量menuIdx来相应的改变游戏的状态,从而使游戏跳转到相应的状态。需添加的源代码如下:

在MiningCanvas.java中添加如下代码
static final Font lowFont = Font.getFont (Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL);
static final Font highFont = Font.getFont (Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
//两种字体,分别是未选中和选中状态的字体
static final int lowColor = 0x000000FF;//未选中状态的颜色static final int highColor = 0x00FF0000;//选中状态的颜色static final int highBGColor = 0x00CCCCCC;//选中状态的背景颜色
static final int MAIN_NEW_GAME = 0;static final int MAIN_SETTINGS = 1;static final int MAIN_HELP = 2;static final int MAIN_ABOUT = 3;static final int MAIN_EXIT = 4;static final int MAIN_MENU_ITEM_COUNT = 5;static String[] mainMenu = new String[MAIN_MENU_ITEM_COUNT];
static int canvasW;//屏幕宽static int canvasH;//屏幕高static int startHeight;//菜单列表的起始高度static int spacing;//菜单项间宽度static int menuIdx;//当前选中的菜单项
public MiningCanvas(MiningMIDlet miningMIDlet){
...
menuIdx = 0;
canvasW=getWidth();canvasH=getHeight();
spacing = highFont.getHeight()/2;
startHeight = (canvasH-(lowFont.getHeight()*mainMenu.length)-(mainMenu.length-1)*spacing)/2;
mainMenu[0] = "New Game";
mainMenu[1] = "Settings";
mainMenu[2] = "Help";
mainMenu[3] = "About";
mainMenu[4] = "Exit";
}
private void paintMenuScreen(Graphics g){
for(int i=0;i < mainMenu.length;i++){
if(i==menuIdx){
g.setColor(highBGColor);
g.fillRect(0,startHeight+i*(lowFont.getHeight()+spacing)-(highFont.getHeight()
-lowFont.getHeight())/2,canvasW,highFont.getHeight());
g.setFont(highFont);
g.setColor(highColor);
g.drawString(mainMenu,(canvasW-highFont.stringWidth(mainMenu))/2,
startHeight+i*(lowFont.getHeight()+spacing)-(highFont.getHeight()-lowFont.getHeight())/2,
Graphics.TOP|Graphics.LEFT);
} else {
g.setFont(lowFont);
g.setColor(lowColor);
g.drawString(mainMenu,(canvasW - lowFont.stringWidth(mainMenu)) / 2,
startHeight + i*(lowFont.getHeight() + spacing),Graphics.TOP|Graphics.LEFT);
}
}
}
在keyPressed方法中的switch结构中添加
case GAMESTATE_MENU:
{
if (getGameAction(keyCode) == FullCanvas.UP && menuIdx - 1 >= 0) {
menuIdx--;
}
else if (getGameAction(keyCode) == FullCanvas.DOWN && menuIdx + 1 < mainMenu.length) {
menuIdx++;
}
else if (getGameAction(keyCode) == FullCanvas.FIRE) {
switch(menuIdx) {//选中后,按照选项值改变游戏状态值,跳转到相应的状态
case MAIN_NEW_GAME:
gamestate=GAMESTATE_GAMEING;
break;
case MAIN_SETTINGS:
gamestate=GAMESTATE_SETTING;
break;
case MAIN_HELP:
gamestate=GAMESTATE_HELP;
break;
case MAIN_about:
gamestate=GAMESTATE_ABOUT;
break;
case MAIN_EXIT:
miningMIDlet.destroyApp(false);
break;
}
}
break;
}
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-26 16:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表