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

📄 gamescreen.java

📁 学习j2me写的,虽然在碰撞上处理的不好!但其中的技巧还是可以学习的1
💻 JAVA
字号:
package Snowball;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import Creature.*;

public class GameScreen extends GameCanvas implements Runnable , CommandListener
{
    private final static int Rate = 50; //屏幕刷新速率
    private MIDlet GameMIDlet;
    private Graphics g; //图形对象
    private GameStatus gs; //游戏状态
    private GameRender gr; //渲染游戏画面
    private GameUpdate gu; //游戏世界更新
    private GameImage gi; //游戏图片资源
    private GameInput gn; //游戏输入处理
    private ObjectManage om; //游戏对象管理器
    
    //添加数据库
    private Display display;  //显示
    
    private Form f;           //表单(帮助、关于、输入)
    private TextField tf;     //文本框
    //*======定义菜单命令======*//
    private Command menuOk;     //确认
    
    //数据排行
    protected  ScoreData sd;  //分数记录库
    protected int finalScore;//最后得分
    
    /** Creates a new instance of GameScreen */
    public GameScreen(MIDlet GameMIDlet ,Display display)
    {
        super(false);
        
        //设置成全屏模式
        this.setFullScreenMode(true);
        //初始化数据
        this.GameMIDlet = GameMIDlet;
        this.display = display;
        
        g = this.getGraphics();    
        om = new ObjectManage();
        gs = new GameStatus();
        gi = new GameImage();
        gu = new GameUpdate(gs, om ,gi);
        gn = new GameInput(gs, this);
        gr = new GameRender(g, this, gs, gi, om);
       
        f = new Form("");    //实例化表单
	tf=new TextField("请输入姓名", "", 20, TextField.ANY);
        menuOk = new Command("确认", Command.OK, 1);
    }

    //开始运行游戏
    public void Start()
    {
        Thread t = new Thread(this); //创建游戏线程
        
        t.start();
    }

    //游戏处理循环
    public void run()
    {
        long st = 0; //开始渲染时间
        long et = 0; //结束渲染时间
        
        while(gs.Continue)
        {
            st = System.currentTimeMillis();
            gn.Process();
            gu.Process();
            gr.Process(); 
                       
            //游戏结束进入游戏排行榜
            if(gs.gameState == 4){            //游戏排行
                finalScore = gs.gp.Scores;  
                doScore();                              
            }
            
            //首页进入游戏排行榜
            if(gs.gameState == 7){            
                sd = new ScoreData(finalScore);   //new记录仓库                             
            }
            
            
            //显示排行榜
            if(gs.drawState == gs.SHOW_SCORE){
                sd.showCompet(g);
                flushGraphics();                     
            }   
            
            et = System.currentTimeMillis();
            if((et - st) < Rate)
            {
                try
                {
                    Thread.sleep(Rate - (et - st));
                }
                catch(Exception exp)
                {
                }
            }
        }
        //结束游戏
        GameMIDlet.notifyDestroyed();
    }
    
    //键盘按下
    protected void keyPressed(int keycode)
    {
        switch(keycode)
        {
            case -7:
                //INDEX or GAME
                if(1 == gs.gameState || 2 == gs.gameState ){
                    gs.Continue = false;
                    gs.gMusic.stop();
                }
                
                //HELP or ABOUT
                if( 5 == gs.gameState || 6 == gs.gameState || 4 == gs.gameState || 7 == gs.gameState ){
                   gs.gameState = 1;
                }
                                
                break;
            default:
                break;
        }
    }
  
 
        /**==============================**
	 **            记录仓库
	 **==============================**/
	private void doScore(){
            //gs.drawState = gs.SHOW_SCORE;
            sd = new ScoreData(finalScore);    //new记录仓库
            boolean biger = sd.compareScore();   //对比 
            if( biger || sd.endId < 6 ){
                inputName();  //输入名字
            }else{
                showScore();  //显示排名
            }
        }
      
        /**==============================**
	 **          填写姓名
	 **==============================**/    
        protected void inputName(){  //Form
           f.setCommandListener(this);
           delForm();  //清除
           f.addCommand(menuOk);
           f.append(tf);
           f.append("你的得分: "+finalScore+" 上榜了!");
           display.setCurrent(f);
        }
       
        //======显示排名======
        private void showScore(){  //Canvas
            gs.drawState = gs.SHOW_SCORE;
            display.setCurrent(this);
    }
      
        /**==============================**
         **          清空Form
         **==============================**/
        private void delForm(){
            for(int i=0;i<f.size();i++){
                f.delete(i);
            }
            for(int i=0;i<f.size();i++){
                f.delete(i);
            }
        }
  
        /**==============================** 
         **          实现命令监听 
         **==============================**/
        public void commandAction(Command c, Displayable s)
        {
            if (c == menuOk)
            {   
                if( gs.gameState == 3 ){//游戏结束写入数据
                    sd.writeToDate(tf.getString());  //将记录写入仓库		
                    showScore();  //显示排行榜              
                }		
            }	
        }
}

⌨️ 快捷键说明

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