📄 miningmidlet.java
字号:
//应用程序类:MiningMIDlet.java
package com.imy.yinowl.miningscroll;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
public class MiningMIDlet extends MIDlet {
MiningCanvas miningCanvas;
//定义游戏界面的FullCanvas类MiningCanvas的对象miningCanvas
public MiningMIDlet() {
display=Display.getDisplay(this);
miningCanvas=new MiningCanvas(this);
//生成MiningCanvas类的对象miningCanvas
}
protected void startApp(){
MiningMIDlet.display.setCurrent(miningCanvas);
//在屏幕上绘出游戏见面miningCanvas
}
protected void pauseApp(){
}
protected void destroyApp(boolean arg0){
notifyDestroyed();
}
}
//Bomb.java
package com.imy.yinowl.miningscroll;
public class Bomb {
int bombaround;
boolean isPlayer1;
boolean hasFound;
boolean isBomb;
public Bomb(){
bombaround=0;
isBomb=false;
hasFound=false;
isPlayer1=true;
}
}
//MiningCanvas.java
package com.imy.yinowl.miningscroll;
import java.io.IOException;
import java.util.Random;
import java.util.Vector;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.Image;import com.nokia.mid.ui.FullCanvas;
public class MiningCanvas extends FullCanvas implements Runnable{
MiningMIDlet miningMIDlet;
int gamestate;
static final int GAMESTATE_SPLASH=0;
static final int GAMESTATE_MENU=1;
static final int GAMESTATE_GAMEING=2;
static final int GAMESTATE_HELP=3;
static final int GAMESTATE_SETTING=4;
static final int GAMESTATE_ABOUT=5;
static final int GAMESTATE_GAMEMENU=6;
static final int GAMESTATE_COUNT=7;
public MiningCanvas(MiningMIDlet miningMIDlet){
super();
this.miningMIDlet=miningMIDlet;
gamestate=0;//游戏加载时默认界面为启动界面
}
protected void paint(Graphics g) {
g.setColor(0x00FFFFFF);
g.fillRect(0,0,canvasW,canvasH);
switch(gamestate){
case GAMESTATE_SPLASH:
paintSplashScreen(g);//绘制游戏启动界面
break;
case GAMESTATE_MENU:
paintMenuScreen(g);//绘制游戏主菜单
break;
case GAMESTATE_HELP:
paintHelpScreen(g);//绘制帮助界面
break;
case GAMESTATE_GAMEING:
paintGameScreen(g);//绘制游戏界面
break;
case GAMESTATE_GAMEMENU:
paintGameMenuScreen(g);//绘制游戏时菜单界面
break;
default:
paintMenuScreen(g);//绘制游戏主菜单
break;
}
public void run() {
}
protected synchronized void keyPressed(int keyCode) {
int action = getGameAction(keyCode);
switch(gamestate){
}
}
}
//启动画面
Thread thread;
Image splashImage;
int splashDelayTime;
public MiningCanvas(MiningMIDlet miningMIDlet){
...
splashDelayTime=3000;
try{
splashImage=Image.createImage("/occo.png");
}catch(IOException e){}
thread=new Thread(this);
thread.start();
}
private void paintSplashScreen(Graphics g){
g.setColor(0x00000000);
g.drawImage(splashImage,getWidth()/2,getHeight()/2-5,Graphics.HCENTER|Graphics.VCENTER);
}
public void run() {
try{
Thread.sleep(splashDelayTime);
}catch(InterruptedException e){}
gamestate=GAMESTATE_MENU;//在启动动画停留3秒后,改变游戏状态变量值,跳转到主菜单状态
repaint();
}
//游戏主菜单界面
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[i],(canvasW-highFont.stringWidth(mainMenu[i]))/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[i],(canvasW - lowFont.stringWidth(mainMenu[i])) / 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;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -