J2ME项目《推箱子》游戏全部功能:
1.两屏LOGO,音效设置,来电暂停,高分记录保存,低级界面下可输入英文大小写字母保存姓名。
2.实现游戏RUN状态菜单,游戏退步,游戏接力,重新开始,关卡记时。
3.游戏记录读取,游戏记录自动保存。
4.通过流在外部文件中读取地图数据,方便快洁修改,添加数据关卡。
游戏主类的代码:
package src;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.midlet.MIDletStateChangeException;
public class PushMain extends GameCanvas implements Runnable{
Graphics g;
static int statetmp;
int mtmp;
final static int GAME_LOGO = 0;
final static int GAME_MENU = 1;
final static int GAME_RUN = 2;
final static int GAME_RUNMENU = 3;
final static int GAME_OVER = 4;
final static int GAME_PAUSE = 5;
final static int GAME_GAOSHOU = 6;
static boolean ISU,ISD,ISL,ISR,ISF,ISLEFT,ISRIGHT,gaofen;
static boolean K1,K2,K3,K4,K5,K6,K7,K8,K9;
static int gameState;
static int w,h;
PushLogo logo;
PushMeun meun;
PushSprite sprite;
PushMap map;
PushMidlet midlet;
PushGaofen pushGaofen;
protected PushMain(PushMidlet midlet) {
super(false);
setFullScreenMode(true);
g=getGraphics();
w=176;
h=206;
this.midlet=midlet;
pushGaofen=new PushGaofen(midlet);
map=new PushMap();
logo= new PushLogo();
meun =new PushMeun(midlet,map);
sprite=new PushSprite(map);
gameState=GAME_LOGO;
new Thread(this).start();
}
void logic(){
switch (gameState) {
case GAME_LOGO:
logo.logic();
break;
case GAME_MENU:
meun.logic();
break;
case GAME_RUNMENU:
case GAME_RUN:
gaofen=true;
sprite.logic();
break;
case GAME_GAOSHOU:
pushGaofen.logic();
break;
case GAME_PAUSE:
break;
case GAME_OVER:
try {
midlet.destroyApp(true);
} catch (MIDletStateChangeException e) {
}
break;
}
if(gaofen&&gameState!=GAME_RUN&&gameState!=GAME_RUNMENU&&PushMap.lv>PushMidlet.lvtmp){
System.out.println(PushMap.lv);
System.out.println(PushMidlet.lvtmp);
gaofen=false;
statetmp=gameState;
gameState=GAME_GAOSHOU;
System.out.println(gameState);
System.out.println(gameState);
}
}
void print(){
g.setColor(1);
g.fillRect(0, 0, w, h);
g.setColor(-1);
switch (gameState) {
case GAME_LOGO:
logo.print(g);
break;
case GAME_MENU:
meun.print(g);
break;
case GAME_RUN:
map.print(g);
sprite.print(g);
break;
case GAME_RUNMENU:
map.print(g);
sprite.print(g);
sprite.meunprint(g);
break;
case GAME_PAUSE:
g.drawString("游戏暂停", 55, 111, 0);
break;
case GAME_GAOSHOU:
pushGaofen.print(g);
break;
case GAME_OVER:
break;
default:
break;
}
flushGraphics();
}
public void keyPressed(int code){
switch (getGameAction(code)) {
case UP:
if(code!=50)
ISU=true;
break;
case DOWN:
if(code!=56)
ISD=true;
break;
case LEFT:
if(code!=52)
ISL=true;
break;
case RIGHT:
if(code!=54)
ISR=true;
break;
case FIRE:
if(code!=53)
ISF=true;
break;
}
if(code==-6){
ISLEFT=true;
}else if(code==-7){
ISRIGHT=true;
}
if(gameState==GAME_PAUSE){
PushMusic.volume=mtmp;
PushMusic.setvolumemax();
PushMusic.setvolumemin();
System.out.println(PushMusic.volume);
gameState=statetmp;
}
switch (code) {
case KEY_NUM1:
K1=true;
break;
case KEY_NUM2:
K2=true;
break;
case KEY_NUM3:
K3=true;
break;
case KEY_NUM4:
K4=true;
break;
case KEY_NUM5:
K5=true;
break;
case KEY_NUM6:
K6=true;
break;
case KEY_NUM7:
K7=true;
break;
case KEY_NUM8:
K8=true;
break;
case KEY_NUM9:
K9=true;
break;
}
}
// public void keyPressed(int code){
// switch (code) {
// case -1:
// ISU=true;
// break;
// case -6:
// ISD=true;
// break;
// case -2:
// ISL=true;
// break;
// case -5:
// ISR=true;
// break;
// case -20:
// ISF=true;
// break;
// }
// if(code==-21){
// ISLEFT=true;
// }else if(code==-22){
// ISRIGHT=true;
// }
// if(gameState==GAME_PAUSE){
// PushMusic.volume+=100;
// PushMusic.setvolumemax();
// gameState=statetmp;
// }
// }
protected void hideNotify() {
mtmp=PushMusic.volume;
PushMusic.volume-=100;
PushMusic.setvolumemin();
statetmp=gameState;
gameState=GAME_PAUSE;
System.out.println(PushMusic.volume);
}
public void run() {
while (true) {
try {
logic();
print();
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
}
}
游戏原程序下载
推箱子.Jar(MOTO l7专版)下载