疯狂拼图完整源代码

                        CrazyPuzzle的完整源代码,整个架构已经基本打好,但因为某些原因,部分功能尚未实现,在此一并贴出来.如果各位朋友有兴趣,可自行完善相应功能.

// ------------------------------
// MyGameCanvas.java
// ------------------------------

package  src;

import  javax.microedition.lcdui.game. * ;
import  javax.microedition.lcdui. * ;
import  javax.microedition.media. * ; // 西门子C65不支持,故无法以此方法播放声音,在此不插入
import  java.util. * ;
import  java.io. * ;

public   class  MyGameCanvas  extends  GameCanvas  implements  CommandListener 
... {

    /** *//** 代表标题显示状态的常量 */
    private static final short    STAGE_TITLE            = 0;
    /** *//** 代表关卡开始显示状态的常量 */
    private static final short    STAGE_START            = 1;
    /** *//** 代表关卡显示状态的常量 */
    private static final short    STAGE_PLAYING        = 2;
    /** *//** 代表游戏中显示完整图案的常量 */
    private static final short    STAGE_PLAYING_SEE_PERFECT_PIC        = 3;
    /** *//** 代表关卡结束显示状态的常数 */
    private static final short    STAGE_OVER            = 5;
    /** *//** 代表过关显示状态的常量 */
    private static final short    STAGE_CLEAR            = 7;
    /** *//** 代表全关卡过关显示状态的常量 */
    private static final short    ALL_STAGE_CLEAR        = 9;
    /** *//** 代表游戏结束的常量 */
    private static final short    GAME_END        = 10;
    /** *//** 最大关卡数 */
    private static final short    MAX_STAGE            = 5;
    /** *//** 正常模式常量 */
    public static final short    MODE_NORMAL            = 1;
    /** *//** 极限模式常量 */
    public static final short    MODE_UTMOST            = 2;
    
    /** *//** 储存现在之显示状态的变量 */
    private short                gameState;
    
    /** *//** 储存游戏模式的变量 */
    private short                gameMode;
    
    /** *//** 储存目前的关卡 */    
    private short                 stageNum;    
    
    /** *//** 储存已过关的关卡 */    
    private short                 stagePassedNum;    
    
    /** *//** 储存剩余的时间 */    
    private long                 lastTime;
    
    /** *//** 储存损耗的时间,普通模式用到 */    
    private long                 usedTime;
    
    /** *//** 储存单关通过的最短时间 */    
    private long                 quicklyPassOneStageTime;
    
    /** *//** 游戏过程暂停状态所用的标志 */
    private boolean                isGamePaused;
    
    /** *//** 储存显示的对象 */
    private Display             display;
    
    /** *//** 储存音乐的对象 */
    private Player              player;//西门子C65不支持
    
    /** *//** 储存主类的对象,方便进行退出之类的操作 */
    private CrazyPuzzleMIDlet    mainMIDlet;
    
    /** *//**层管理*/
    private LayerManager lm;
    
    /** *//**背景*/
    private TiledLayer puzzlePic;
    
    /** *//**建一个画图对象*/
    private Graphics g;
    
    /** *//**时间倒计时,类为继承*/
    private TimeCounterTask timeCounter;
    
    /** *//** 储存各关卡谜题资讯的变量 */
    private static final short[][] PUZZLE_MAP    = new short[][] ...{
        ...{    //关卡1的谜题
             1,  5,  9, 13,
             2,  6, 10, 14,
             3,  7, 11, 15,
             4,  8, 12,  0
        }
,
        ...{    //关卡2的谜题
             4,  3,  2,  1,
             8,  7,  6,  5,
            12, 11, 10,  9,
            15, 13, 14,  0
        }
,
        ...{    //关卡3的谜题
            12,  8,  4,  1,
            15,  9,  5,  2,
            13, 10,  6,  3,
            14, 11,  7,  0
        }
,
        ...{    //关卡4的谜题
            14, 15, 12, 13,
             8,  9, 10, 11,
             4,  5,  6,  7,
             1,  2,  3,  0
        }
,
        ...{    //关卡5的谜题
            14, 12, 15, 13,
            11, 10,  9,  8,
             7,  6,  5,  4,
             3,  2,  1,  0
        }

    }
;
    
    //norains:*构造函数*
    public MyGameCanvas(Display disp,CrazyPuzzleMIDlet m,short mode)
    ...{
        super(false);
        this.display=disp;
        this.mainMIDlet=m;
        this.gameMode=mode;
        stageNum=1;
        stagePassedNum=0;
        lastTime=0;
        usedTime=0;
        quicklyPassOneStageTime=0;
        isGamePaused=false;
        g=this.getGraphics();
        gameState=STAGE_TITLE;
        this.setFullScreenMode(true);//全屏幕
        //增加命令
        //this.addCommand(new Command("重新开始",Command.OK,1));
        this.addCommand(new Command("取消",Command.BACK,1));
        this.addCommand(new Command("返回列表",Command.BACK,1));
        this.addCommand(new Command("退出游戏",Command.EXIT,1));
        this.setCommandListener(this);
        render();
    }

    
    public void commandAction(Command command, Displayable arg1)
    ...{
        // TODO Auto-generated method stub
        String cmd=command.getLabel();
        if(cmd.equals("重新开始"))
        ...{
            //不知为何,下面这段代码无法正常关闭音乐流,无论在模拟器还是在实体机上
            //造成的后果是两首音乐一起播放,以致于系统变慢,无法正常游戏
            //估计产生原因是上一首歌还没退出来,下一首就播放了
            //关闭本节声音播放,以方便下一关播放新音乐
            gameState=STAGE_TITLE;
            try
            ...{
                player.stop();
            }

            catch(Exception exp)
            ...{}
                
    

            render();
            
        }

        else if(cmd.equals("返回列表"))
        ...{
            if(player!=null)
            ...{
                //关闭本节声音播放
                try
                ...{
                    player.stop();
         &

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值