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

📄 gamecanvas.java

📁 一款支持蓝牙传输的游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    
    /**
     * Called when a key is repeated (held down).
     */
    protected  void keyRepeated(int keyCode) {
        
    }
    
    /**
     * Called when the pointer is dragged.
     */
    protected  void pointerDragged(int x, int y) {
    }
    
    /**
     * Called when the pointer is pressed.
     */
    protected  void pointerPressed(int x, int y) {
    }
    
    /**
     * Called when the pointer is released.
     */
    protected  void pointerReleased(int x, int y) {
    }
    
    /**
     * Called when action should be handled
     */
    
    public void run(){
        while( true ){
            if (isPaused)
                continue;
            doTimerStart();
            switch(Stage){
                case STARTING :
                    doStarting();
                    break;
                case CIRCUMGYRATEING :
                    doCircumgyrateing();
                    break;
                case STRETCHING :
                    doStretching();
                    break;
                case BACKING :
                    doBacking();
                    break;
                case CATCHING :
                    doBacking();
                    break;
                case STAGEPASSING :
                    doStagepassing();
                    break;
                case GAMEOVER :
                    doGameover();
                    break;
                case ALLSTATESPASSED :
                    doGameover();
                    break;
            }
        }
    }
    
    private void doStarting(){
        
    }
    
    public void SubSec() {
        LeftTime--;
        if ( LeftTime == 0 ){
            if ( AmountofMoney >= MinMoney[StageNum-1] )
                if ( StageNum == MinMoney.length )
                    Stage = ALLSTATESPASSED;
                else
                    Stage = STAGEPASSING;
            else
                Stage = GAMEOVER;
        }
        repaint();
    }
    
    private void doCircumgyrateing(){
        removeCommand(startCmd);
        addCommand(quitCmd);
        addCommand(pauseCmd);
        if ( hookCirState == true ){
            hook.getHookSprite().nextFrame();
        } else{
            hook.getHookSprite().prevFrame();
        }       
        if ( ( hook.getHookSprite().getFrame()==16 && hookCirState)
                || ( hook.getHookSprite().getFrame()==0 && (!hookCirState) ) )
            hookCirState = !hookCirState;
        repaint();
        try{
            Thread.sleep(200);
        } catch ( InterruptedException e ){}
    }
    
    private void doStretching(){
        hook.extReSetXY();
        if ( hook.getX() > ScreenWidth || hook.getX() <  0
                || hook.getY() < 0 || hook.getY() > ScreenHeight ){
            Stage = BACKING;
        } else{
            if(Checkcollides() == true)
                Stage = CATCHING;
            else{
                try{
                    Thread.sleep(50);
                } catch ( InterruptedException e ){}
                repaint();
            }
        }
    }
    
    private void doBacking(){
        hook.backReSetXY();
        if ( hook.getY() < hook.INIY ){
            hook.getHookSprite().setRefPixelPosition(hook.INIX, hook.INIY);
            hook.setnowSpeed(hook.SPEED);
            hook.getHookSprite().setVisible(true);
            AmountofMoney += MoneyToAdd;
            MoneyToAdd = 0;
            Stage = CIRCUMGYRATEING;
        } else{
            try{
                Thread.sleep(50);
            } catch ( InterruptedException e ){}
            repaint();
        }
    }
    
    private void doStagepassing(){
        try{
            Thread.sleep(2000);
        } catch ( InterruptedException e ){}
        ChangeStage();
    }
    
    private void doGameover(){        
        removeCommand(resumeCmd);
        removeCommand(pauseCmd);
        removeCommand(quitCmd);
        try{
            Thread.sleep(2000);
        } catch ( InterruptedException e ){
            Stage = STARTING;
        }
        Stage = STARTING;
    }
    
    private boolean Checkcollides(){
        for( int i = 0; i < GOLDNUM; i++ ){
            if (hook.getHookSprite().collidesWith(gold[i].getTargetSprite(), true)){
                gold[i].getTargetSprite().setVisible(false);
                hook.getHookSprite().setVisible(false);
                hook.setnowSpeed(hook.SPEED-gold[i].getSize());
                MoneyToAdd = gold[i].getRelValue();
                return true;
            }
        }
        for ( int i = 0; i < STONENUM; i++ ){
            if (hook.getHookSprite().collidesWith(stone[i].getTargetSprite(), true)){
                stone[i].getTargetSprite().setVisible(false);
                hook.getHookSprite().setVisible(false);
                hook.setnowSpeed(hook.SPEED-2*stone[i].getSize());
                MoneyToAdd = stone[i].getRelValue();
                return true;
            }
        }
        for( int i = 0; i < SOMETHINGNUM; i++ ){
            if (hook.getHookSprite().collidesWith(somethings[i].getTargetSprite(), true)){
                somethings[i].getTargetSprite().setVisible(false);
                hook.getHookSprite().setVisible(false);
                hook.setnowSpeed(hook.SPEED-somethings[i].getSize());
                MoneyToAdd = somethings[i].getRelValue();
                return true;
            }
        }
        if ( hasDiamond ){
            if ( hook.getHookSprite().collidesWith(diamond.getTargetSprite(), true) ){
                diamond.getTargetSprite().setVisible(false);
                hook.getHookSprite().setVisible(false);
                hook.setnowSpeed(hook.SPEED-diamond.getSize());
                MoneyToAdd = diamond.getRelValue();
                return true;
            }
        } 
        return false;
    }
    
    /** 启动计时器的方法 */
    private void doTimerStart() {
        //计时器不是null的时候就启动计时器
        if(timer == null) {
            GameTimer gameTimer = new GameTimer(this);
            timer = new Timer();
            timer.schedule(gameTimer, 1000, 1000);
        }
    }
    
    /** 停止计时器的方法 */
    private void doTimerStop() {
        //计时器不是null的时候就停止计时器
        if(timer != null) {
            timer.cancel();
            timer = null;
        }
    }
    
    /** 进行暂停或重新开始的方法 */
    private void doPauseOrResume() {
        if(isPaused) {
            //暂停时
            //重新开始
            isPaused = false;
            doTimerStart();
        }else {
            //不是暂停时
            //进行暂停
            isPaused = true;
            doTimerStop();
        }
        repaint();
    }
    
    public void commandAction(Command c, Displayable s) {
        if(c == startCmd) {//Start指令
            //进行游戏初始化来开始游戏
            Stage = CIRCUMGYRATEING;
            
        }else if(c == exitCmd) {//Exit指令
            //调用出NumberSliderPuzzle的doExit方法来将MIDlet本身结束
            goldminer.doExit();
            
        }else if(c == pauseCmd) {//Pause指令
            //交换Pause与Resume指令,调用Pause、Resume处理方法
            removeCommand(pauseCmd);
            addCommand(resumeCmd);
            doPauseOrResume();
            
        }else if(c == resumeCmd) {//Resume指令
            //交换Resume与Pause指令,调用Pause、Resume处理方法
            removeCommand(resumeCmd);
            addCommand(pauseCmd);
            doPauseOrResume();
            
        }else if(c == quitCmd) {//Quit指令
            //停止计时器
            doTimerStop();
            //删除指令
            removeCommand(pauseCmd);
            removeCommand(resumeCmd);
            removeCommand(quitCmd);
            //显示标题
            Stage = STARTING;
            repaint();
        }
    }
    
}

⌨️ 快捷键说明

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