百度首页 | 百度空间
 
查看文章
 
J2ME-项目《推箱子》源码 (新会议冷原创)
2008年04月24日 星期四 22:23


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专版)下载


类别:java-j2me编程 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu