⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamecanvas.java

📁 这是一款益智类经典游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*
 * GameCanvas.java
 *
 * Created on 2005年12月13日, 上午10:06
 */

import javax.microedition.lcdui.*;
import com.nokia.mid.ui.FullCanvas;

/**
 *
 * @author  YBGame
 * @version
 */
public class GameCanvas extends FullCanvas implements Runnable {
    /*
     *
     *游戏中的变量
     *
     */
    private boolean gameStart=false;
    private Image bgImg=null;
    private Image[] numberImg=null;
    private String[] numberPng={"/res/0.png","/res/1.png","/res/2.png","/res/3.png","/res/4.png","/res/5.png","/res/6.png","/res/7.png","/res/8.png","/res/9.png"};
    public static int curx=0,cury=0;
    private Image gridSelImg=null;
    Grids grids=null;
    public static int totalCursor=0;
    private Image pupMenuImg=null;
    private Image pupMenu2Img=null;
    private Image pupSelImg=null;
    private HighScoreRms highScoreRms=null;
    private Image gameOverImg=null;
    private int playerListNum=0;
    ///////////////////////////////////////////////////////////////////////////
    /*
     *
     *帮助
     */
    private String howplayString=null;
    /*
     *
     *主菜单中的变量
     *
     */
    private Image mainMenuImg=null;
    private Image cursorImg=null;
    private int[] cursorX1={20,22,23,24,35};
    private int[] cursorX2={87,86,84,81,70};
    private int[] cursorY={58,70,82,94,106};
    ////////////////////////////////////////////////////////////////////////////
    /*
     *
     *存档时用到的变量
     */
    private Image saveBgImg=null;
    private Image[] saveImg=null;
    private Image saveSelImg=null;
    //////////////////////////////////////////////////////////////////////////////
    /*
     *
     *排行榜用到的变量
     */
    private Image highScoreImg=null;
    ////////////////////////////////////////////////////////////////////////////
    static boolean playPause=false;	//游戏暂停标志
    public static int screenWidth=128;
    public static int screenHeight=128;
    /**
     * constructor
     */
    public GameCanvas() {
        //setFullScreenMode(true);
        gameStart=false;
        start();
    }
    /**
     * start
     */
    public void start() {
        Thread t=new Thread(this);
        t.start();
    }
    boolean conti;	//游戏运行标志
    public static int rate=100;//每帧播放时间为1/10秒
    public static long startTime=0;//记录开始游戏经过的时间
    public void run(){
        conti=true;
        long st=0;
        long et=0;
        while(conti) {
            if (!playPause){
                st=System.currentTimeMillis();
                startTime++;
                if (!playPause){
                    control();
                    repaint();
                    serviceRepaints();
                }
                //if (startTime%10==0) System.gc();
                et=System.currentTimeMillis();
                if (rate>(et-st)) {
                    try{
                        Thread.sleep(rate-(et-st));
                    }catch(Exception exp){}
                }
            }
        }
        exit();
    }
    /**
     * control
     */
    private int status=0;
    private int sta=0;
    private int g_status=0;
    private int g_sta=0;
    private int p_status=0;
    private int m_status=0;
    private int n_status=0;
    private int i_status=0;
    private int j_status=0;
    private int linesHeight=0;
    public void control() {
        switch(status){
            case 0://开机画面
                status=1;
                break;
            case 1://主菜单
                switch(g_status){
                    case 0://装载图片
                        if (mainMenuImg==null){
                            try{
                                mainMenuImg=Image.createImage("/res/mainMenu.png");
                            }catch(Exception e){
                                System.out.println("error at 5s465fs6");
                            }
                        }
                        if (cursorImg==null){
                            try{
                                cursorImg=Image.createImage("/res/cursor.png");
                            }catch(Exception e){
                                System.out.println("error at 5s465fs6");
                            }
                        }
                        g_status=1;
                        m_status=0;
                        break;
                    case 1://显示主菜单
                        if (keyPre && key_GameCode==Canvas.UP){
                            m_status--;
                            if (m_status<0){
                                m_status=4;
                            }
                        } else if (keyPre && key_GameCode==Canvas.DOWN){
                            m_status++;
                            if (m_status>4){
                                m_status=0;
                            }
                        }else if(keyPre && key_GameCode==Canvas.FIRE){
                            mainMenuImg=null;
                            cursorImg=null;
                            switch(m_status){
                                case 0:
                                    totalCursor=0;
                                    status=2;
                                    g_status=0;
                                    break;
                                case 1:
                                    status=3;
                                    g_status=0;
                                    break;
                                case 2://?装载存档
                                    status=4;
                                    g_status=0;
                                    break;
                                case 3:
                                    sta=1;
                                    g_sta=0;
                                    status=5;
                                    g_status=-1;
                                    break;
                                case 4:
                                    conti=false;
                                    break;
                            }
                        }
                        break;
                }
                break;
            case 2://游戏中
                switch(g_status){
                    case 0://装载
                        grids=new Grids();
                        loadGame();
                        grids.passWaitTime=0;
                        System.gc();
                        g_status=1;
                        break;
                    case 1://正在玩
                        if (keyPre && key_GameCode==Canvas.UP){
                            if (cury>0) cury--;
                        } else if(keyPre && key_GameCode==Canvas.DOWN){
                            if (cury<grids.gridW-1) cury++;
                        } else if(keyPre && key_GameCode==Canvas.LEFT){
                            if (curx>0) curx--;
                        } else if(keyPre && key_GameCode==Canvas.RIGHT){
                            if (curx<grids.gridW-1) curx++;
                        } else if(keyPre && key_GameCode==Canvas.FIRE){
                            grids.turn(curx+cury*grids.gridW);
                            grids.changeColor();
                        }
                        grids.cycle();
                        grids.changeColor();
                        if (grids.passWaitTime>=grids.totalWaitTime){//时间到,GameOver
                            bgImg=null;
                            grids=null;
                            gridSelImg=null;
                            numberImg=null;
                            pupMenuImg=null;
                            pupSelImg=null;
                            g_status=5;
                            p_status=0;
                        }
                        if (keyPre && key_Code==-6){
                            if(pupMenuImg==null){
                                try{
                                    pupMenuImg=Image.createImage("/res/pupMenu.png");
                                }catch(Exception e){
                                    System.out.println("sfdsfdsfsd99");
                                }
                            }
                            if(pupSelImg==null){
                                try{
                                    pupSelImg=Image.createImage("/res/pupSel.png");
                                }catch(Exception e){
                                    System.out.println("sfdsfdsfsd99");
                                }
                            }
                            i_status=-45;
                            g_status=2;
                        }
                        break;
                    case 2://按左软键弹出菜单时
                        i_status+=5;
                        if (i_status>=5){
                            i_status=5;
                            m_status=0;
                            g_status=3;
                        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -