📄 mariogamecanvas.java
字号:
switch(gm.menu.whichActive)
{
case LPMenu.MENU_NEW_GAME:
g.setColor(255,0,0);
g.drawString("新游戏",(width-font.stringWidth("新游戏"))/2,
menuOffset+font.getHeight()*0,g.LEFT|g.TOP);
g.setColor(255,255,255);
g.drawString("载入进度",(width-font.stringWidth("载入进度"))/2,
menuOffset+font.getHeight()*1,g.LEFT|g.TOP);
g.setColor(255,255,255);
if(gm.menu.isVolOn)
{
g.drawString("声音开",(width-font.stringWidth("声音开"))/2,
menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
}
else
{
g.drawString("声音关",(width-font.stringWidth("声音关"))/2,
menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
}
g.setColor(255,255,255);
g.drawString("退出",(width-font.stringWidth("退出"))/2,
menuOffset+font.getHeight()*3,g.LEFT|g.TOP);
g.setColor(255,255,255);
g.drawString("关于",(width-font.stringWidth("关于"))/2,
menuOffset+font.getHeight()*4,g.LEFT|g.TOP);
break;
case LPMenu.MENU_LOAD_GAME:
g.setColor(255,255,255);
g.drawString("新游戏",(width-font.stringWidth("新游戏"))/2,
menuOffset+font.getHeight()*0,g.LEFT|g.TOP);
g.setColor(255,0,0);
g.drawString("载入进度",(width-font.stringWidth("载入进度"))/2,
menuOffset+font.getHeight()*1,g.LEFT|g.TOP);
g.setColor(255,255,255);
if(gm.menu.isVolOn)
{
g.drawString("声音开",(width-font.stringWidth("声音开"))/2,
menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
}
else
{
g.drawString("声音关",(width-font.stringWidth("声音关"))/2,
menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
}
g.setColor(255,255,255);
g.drawString("退出",(width-font.stringWidth("退出"))/2,
menuOffset+font.getHeight()*3,g.LEFT|g.TOP);
g.setColor(255,255,255);
g.drawString("关于",(width-font.stringWidth("关于"))/2,
menuOffset+font.getHeight()*4,g.LEFT|g.TOP);
break;
case LPMenu.MENU_VOL:
g.setColor(255,255,255);
g.drawString("新游戏",(width-font.stringWidth("新游戏"))/2,
menuOffset+font.getHeight()*0,g.LEFT|g.TOP);
g.setColor(255,255,255);
g.drawString("载入进度",(width-font.stringWidth("载入进度"))/2,
menuOffset+font.getHeight()*1,g.LEFT|g.TOP);
g.setColor(255,0,0);
if(gm.menu.isVolOn)
{
g.drawString("声音开",(width-font.stringWidth("声音开"))/2,
menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
}
else
{
g.drawString("声音关",(width-font.stringWidth("声音关"))/2,
menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
}
g.setColor(255,255,255);
g.drawString("退出",(width-font.stringWidth("退出"))/2,
menuOffset+font.getHeight()*3,g.LEFT|g.TOP);
g.setColor(255,255,255);
g.drawString("关于",(width-font.stringWidth("关于"))/2,
menuOffset+font.getHeight()*4,g.LEFT|g.TOP);
break;
case LPMenu.MENU_EXIT:
g.setColor(255,255,255);
g.drawString("新游戏",(width-font.stringWidth("新游戏"))/2,
menuOffset+font.getHeight()*0,g.LEFT|g.TOP);
g.setColor(255,255,255);
g.drawString("载入进度",(width-font.stringWidth("载入进度"))/2,
menuOffset+font.getHeight()*1,g.LEFT|g.TOP);
g.setColor(255,255,255);
if(gm.menu.isVolOn)
{
g.drawString("声音开",(width-font.stringWidth("声音开"))/2,
menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
}
else
{
g.drawString("声音关",(width-font.stringWidth("声音关"))/2,
menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
}
g.setColor(255,0,0);
g.drawString("退出",(width-font.stringWidth("退出"))/2,
menuOffset+font.getHeight()*3,g.LEFT|g.TOP);
g.setColor(255,255,255);
g.drawString("关于",(width-font.stringWidth("关于"))/2,
menuOffset+font.getHeight()*4,g.LEFT|g.TOP);
break;
case LPMenu.MENU_ABOUT:
g.setColor(255,255,255);
g.drawString("新游戏",(width-font.stringWidth("新游戏"))/2,
menuOffset+font.getHeight()*0,g.LEFT|g.TOP);
g.setColor(255,255,255);
g.drawString("载入进度",(width-font.stringWidth("载入进度"))/2,
menuOffset+font.getHeight()*1,g.LEFT|g.TOP);
g.setColor(255,255,255);
if(gm.menu.isVolOn)
{
g.drawString("声音开",(width-font.stringWidth("声音开"))/2,
menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
}
else
{
g.drawString("声音关",(width-font.stringWidth("声音关"))/2,
menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
}
g.setColor(255,255,255);
g.drawString("退出",(width-font.stringWidth("退出"))/2,
menuOffset+font.getHeight()*3,g.LEFT|g.TOP);
g.setColor(255,0,0);
g.drawString("关于",(width-font.stringWidth("关于"))/2,
menuOffset+font.getHeight()*4,g.LEFT|g.TOP);
break;
}
}
private void drawPauseScreen(Graphics g)
{
g.setFont(font);
g.setClip(0,0,width,height);
g.setColor(0,0,0);
g.fillRect(0,0,width,height);
g.setColor(255,0,0);
g.drawString("暂停中……",(width-font.stringWidth("暂停中……"))/2,
height/2,g.LEFT|g.TOP);
}
private void drawGameOverScreen(Graphics g)
{
dm.drawMaps(g,this.map);
g.setClip(0,0,width,height);
g.setFont(font);
g.setColor(255,0,0);
g.drawString("游戏结束",(width-font.stringWidth("游戏结束"))/2,
height/2,g.LEFT|g.TOP);
}
public void stop()
{
gameThread=null;
}
public void start()
{
gm.menu.allAction=0;
switch(gm.gameState)
{
case MarioGameManage.GAMESTATE_MENU:
if(gm.menu.isVolOn)
{
gm.bgPlayer.play();
}
break;
case MarioGameManage.GAMESTATE_GAMELOOP:
case MarioGameManage.GAMESTATE_PAUSE:
case MarioGameManage.GAMESTATE_REINIT:
break;
}
gameThread=new Thread(this);
gameThread.start();
}
public boolean isPressStar = false;
protected void keyPressed(int keyCode)
{
if(gm.gameState==MarioGameManage.GAMESTATE_GAMELOOP)
{
if(keyCode==Canvas.KEY_STAR)
{
if(!isPressStar)
{
isPressStar = true;
}
}
}
gm.judgeKeyCode(keyCode,getGameAction(keyCode));
}
protected void keyReleased(int keyCode)
{
gm.freeKey(keyCode,getGameAction(keyCode));
}
public void saveCurrentState()
{
try
{
ByteArrayOutputStream baos=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(baos);
int i,j;
dos.writeInt(gm.goldNum);
dos.writeInt(gm.mainSprite.judgeMap.x);
dos.writeInt(gm.mainSprite.judgeMap.y);
for(i=gm.mainSprite.judgeMap.mapArray.length-1;i>=0;--i)
{
for(j=gm.mainSprite.judgeMap.mapArray[i].length-1;j>=0;--j)
{
dos.writeChar(gm.mainSprite.judgeMap.mapArray[i][j]);
}
}
dos.writeInt(gm.brick.length);
for(i=gm.brick.length-1;i>=0;--i)
{
gm.brick[i].writeData(dos);
}
dos.writeInt(gm.brokenBrick.length);
for(i=gm.brokenBrick.length-1;i>=0;--i)
{
gm.brokenBrick[i].writeData(dos);
}
dos.writeInt(gm.bullet.length);
for(i=gm.bullet.length-1;i>=0;--i)
{
gm.bullet[i].writeData(dos);
}
dos.writeInt(gm.enemy.length);
for(i=gm.enemy.length-1;i>=0;--i)
{
gm.enemy[i].writeData(dos);
}
dos.writeInt(gm.tortoise.length);
for(i=gm.tortoise.length-1;i>=0;--i)
{
gm.tortoise[i].writeData(dos);
}
dos.writeInt(gm.bridge.length);
for(i=gm.bridge.length-1;i>=0;--i)
{
gm.bridge[i].writeData(dos);
}
dos.writeInt(gm.gold.length);
for(i=gm.gold.length-1;i>=0;--i)
{
gm.gold[i].writeData(dos);
}
dos.writeInt(gm.mashRooms.length);
for(i=gm.mashRooms.length-1;i>=0;--i)
{
gm.mashRooms[i].writeData(dos);
}
dos.writeInt(gm.flowers.length);
for(i=gm.flowers.length-1;i>=0;--i)
{
gm.flowers[i].writeData(dos);
}
dos.writeInt(gm.stick.length);
for(i=gm.stick.length-1;i>=0;--i)
{
gm.stick[i].writeData(dos);
}
dos.writeInt(gm.staticGold.length);
for(i=gm.staticGold.length-1;i>=0;--i)
{
gm.staticGold[i].writeData(dos);
}
dos.writeInt(gm.ugGold.length);
for(i=gm.ugGold.length-1;i>=0;--i)
{
gm.ugGold[i].writeData(dos);
}
dos.writeInt(gm.ugBrick.length);
for(i=gm.ugBrick.length-1;i>=0;--i)
{
gm.ugBrick[i].writeData(dos);
}
gm.mainSprite.writeData(dos);
this.record.SetRecord(1,baos.toByteArray());
dos.close();
baos.close();
}
catch(Exception e)
{
System.out.println("Save Data error");
}
}
public MarioMIDlet midlet;
public static int width;
public static int height;
public static Random rand=new Random(System.currentTimeMillis());
public LPSaveRecord record=new LPSaveRecord("lipeng_Mario");
public Command mainMenu=new Command("菜单",Command.OK,1);
public Command back=new Command("返回",Command.BACK,2);
public boolean isSaveState;
public int saveGameState;
public MarioGameManage gm;
public LPMaps map;
public char mapData[][]=null;
//private
private volatile Thread gameThread=null;
private long startTime;
private long endTime;
private LPDrawManage dm;
private Font font=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_BOLD,
Font.SIZE_LARGE);
// image resource
private LPImageManage imMap;
private LPImageManage imMainSmall16;
private LPImageManage imMainNormal32;
private LPImageManage imMainFire32;
private LPImageManage imSprite8;
private LPImageManage imSprite16;
private LPImageManage imEnemy24;
private LPImageManage imSprite48;
//final
private static final int FRAME_TIME=80;
static final char[][] level_1_map=
{
{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0011,0x0013,0x0015,0x0017,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0012,0x0014,0x0016,0x0018,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0f26,0x0f26,0x0f26,0x0000,0x0000,0x0000,0x0000,},
{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0011,0x0013,0x0017,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x0019,0x0019,0x0019,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0012,0x0014,0x0018,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x001a,0x001a,0x001a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0f26,0x0f26,0x0f26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x001a,0x001f,0x001a,0x0000,0x0011,0x0013,0x0015,0x0015,0x0017,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0702,0x0702,0x0702,0x0702,0x0702,0x0702,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x001c,0x001c,0x001c,0x0019,0x0012,0x0014,0x0016,0x0016,0x0018,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x001a,0x001a,0x001a,0x001a,0x001a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x001a,0x001a,0x001a,0x001f,0x001a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x001c,0x001c,0x001c,0x001c,0x001c,0x0019,0x0019,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0f26,0x0f26,0x0f26,0x0f26,0x0f26,},
{0x001d,0x001a,0x001a,0x001a,0x001a,0x001a,0x001a,0x0000,0x0000,0x0000,0x0f26,0x0f26,0x0f26,0x0f26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0f26,0x0f26,0x0000,0x0000,0x0000,0x0f26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x001e,0x001a,0x001a,0x001a,0x001a,0x001a,0x001a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x002b,0x0000,0x0703,0x0705,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x001e,0x001a,0x001a,0x001a,0x001d,0x001a,0x001a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x002c,0x0000,0x0704,0x0706,0x0000,0x0029,0x0029,0x0029,0x0029,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
{0x001e,0x001a,0x001a,0x001a,0x001e,0x001a,0x001a,0x0000,0x0000,0x000d,0x000e,0x000f,0x0010,0x0000,0x002a,0x0000,0x0704,0x0706,0x0000,0x0029,0x0029,0x0029,0x0029,0x0000,0x0000,0x0000,0x0000,0x0027,0x0027,0x0027,0x0027,0x0027,},
{0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0228,0x0228,0x0228,0x0228,0x0228,},
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -