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

📄 gamecanv.java

📁 是男人就下一百层
💻 JAVA
字号:
package LR;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.*;
import java.util.*;
import java.io.*;


public class gameCanv extends GameCanvas implements Runnable
{
    private String GAME_WELCOME="欢迎使用";
    private String GAME_AUTHOR="Whiphone";
    private String GAME_NAME="的游戏";
    private String GAME_INSTRUCT="软键打开菜单";
    private final static int GAME_LEVEL=1;
    private final static int GAME_SPEED=10;
    private final static int GAME_OBJ_SIZE=5;
    private final static int GAME_OBJ_REFRESH=50;
    private final static int GAME_COUNT=0;
    private final static int GAME_BG_COUNT=-20;
    private int gameLevel=GAME_LEVEL;
    private int gameSpeed=GAME_SPEED;
    private int gameObjSize=GAME_OBJ_SIZE;
    private int gameObjRefresh=GAME_OBJ_REFRESH;
    private int gameCount=GAME_COUNT;
    private int gameBgCount=GAME_BG_COUNT;
    private boolean isOnFlat=false;
    private boolean isOnGame=false;
    private gameCharObj gco=null;
    private gameFlatObj gfo=null;
    private gameFlyObj gfyo=null;
    private Image gameTeeth;
    private Image gameBg;
    private Vector objList;
    private Graphics g;
    private Thread t=null;
    
    protected gameCanv()
    {
        super(true);    
        objList=new Vector();
        g=this.getGraphics();
        try
        {
            gameBg=Image.createImage("/bg.png");
            //System.out.println("Loaded Picture 2");
            gameTeeth=Image.createImage("/teeth.png");
            //System.out.println("Loaded Picture 3");
        }catch(Exception e){/*System.out.println(e);*/}
        this.setFullScreenMode(true);
        g.setColor(0,0,0);
        g.drawString(GAME_WELCOME,88,70,Graphics.HCENTER|Graphics.TOP);
        g.drawString(GAME_AUTHOR+GAME_NAME,88,100,Graphics.HCENTER|Graphics.TOP);
        g.drawString(GAME_INSTRUCT,88,130,Graphics.HCENTER|Graphics.TOP);
        this.flushGraphics();
        System.out.println(System.currentTimeMillis());
        // TODO Auto-generated constructor stub
    }

    public void run() //主线程
    {
        isOnGame=true;
        while(isOnGame)
        {
            gameCount++;
            gameLevelUp(gameCount);
            try
            {
                Thread.sleep(gameSpeed);
            }catch(Exception e1){}
            g.drawImage(gameBg,0,gameBgCount,0);
            addGameObj();
            for(int j=0;j<objList.size();j++) //游戏人物和台阶的处理
            {
                gfo=(gameFlatObj)objList.elementAt(j);
                gfo.up();
                if(gco==null)
                {
                    gco=new gameCharObj(gfo.getX(),gfo.getY());
                }
                if(gfo.collidesWith(gco,false))
                {
                    isOnFlat=true;
                    gfo.doOnChar(gco);
                }
                else
                {
                    gfo.resetTime();
                }
                if(gfo.getProperties()>1)
                {
                    gfo.nextFrame();
                }
                gfo.paint(g); 
            }
            
            if(gfyo!=null)
            {
                if(gfyo.collidesWith(gco,false))
                {
                    gfyo.doOnChar(gco);
                    gfyo=null;
                }
                else
                {
                    gfyo.go();
                    gfyo.nextFrame();
                    gfyo.paint(g);
                    if(gfyo.getIsBottom())
                    {
                        gfyo=null;
                    }
                }
            }
            
            keyPressed();
            if(!isOnFlat)
            {
                gco.go(); 
            }
            isOnFlat=false;
            
            //***************
            if(gameBgCount<0)
            {
                gameBgCount++;
            }
            else
            {
                gameBgCount=-20;
            }            
            //***************
            
            gco.nextFrame(); 
            gco.paint(g);
            
            //***************
            drawMenu(g);
            //***************
            
            g.drawImage(gameTeeth,0,20,0); 
            
            this.flushGraphics();
            chkObjIsTop();
            if(gco.isDead())
            {
                setOnGame(false);
            }
        }
        //***************
        g.setColor(127,0,85);
        g.drawString("Game Over",60,80,0);
        //***************
        this.flushGraphics();
    }
    
    private void drawMenu(Graphics g)
    {
        String str=null;
        g.setColor(0,0,0);
        g.fillRect(0,0,176,20);
        g.setColor(252,255,0);
        g.drawString("No."+Integer.toString(gameLevel),1,1,0);
        g.drawString("Life:",40,1,0);
        g.drawString("Status:",100,1,0);
        switch(gco.getCharStatus())
        {
        case 0:
            str="NOR";
            break;
        case 1:
            str="CON";
            break;
        case 2:
            str="SPU";
            break;
        }
        g.drawString(str,150,1,0);
        g.setColor(120,244,0);
        g.fillRect(70,5,26,10);
        g.setColor(141,0,236);
        for(int i=0;i<gco.getCharLife();i++)
        {
            g.fillRect(72+i*8,7,6,6);
        }
    }
    
    private void chkObjIsTop()
    {
        for(int i=0;i<objList.size();i++)
        {
            gfo=(gameFlatObj)objList.elementAt(i);
            if(gfo.getIsTop())
            {
                objList.removeElementAt(i);
            }
        }
    }
    
    public void addGameObj()
    {
        if((gameCount%gameObjRefresh==0)&&(objList.size()<gameObjSize))
        {
            objList.addElement(new gameFlatObj(false));
        }
    }
    
    public void setOnGame(boolean b) //锟斤拷锟斤拷锟角凤拷锟斤拷戏锟斤拷
    {
        isOnGame=b;
    }
    
    public boolean getIsOnGame() //锟斤拷锟斤拷欠锟斤拷锟较凤拷锟?
    {
        return isOnGame;
    }
    
    public void reStart() //锟斤拷戏锟斤拷始锟斤拷
    {
        try
        {
            if(t!=null)
            {
                    setOnGame(false);
            }
        }
        catch(Exception e)
        {
            //System.out.println(e);
        }
        t=new Thread(this);
        gco=null;
        objList.removeAllElements();
        objList.addElement(new gameFlatObj(true));
        gameLevel=GAME_LEVEL;
        gameSpeed=GAME_SPEED;
        gameObjSize=GAME_OBJ_SIZE;
        gameObjRefresh=GAME_OBJ_REFRESH;
        gameCount=GAME_COUNT;
        gameBgCount=GAME_BG_COUNT;
        isOnFlat=false;
        isOnGame=false;
        t.start();
    }
    
    private void gameLevelUp(int gameCount) //锟斤拷戏锟窖度碉拷锟斤拷
    {
        if(gameCount%220==0)
        {
            if(gfyo==null)
            {
                gfyo=new gameFlyObj();
            }            
            gco.setCharHarm(true);
            gameLevel++;
            if(gameLevel%10==0)
            {
                    
                if(gameObjSize<8)
                {
                    gameObjSize++;
                }                                
                if(gameObjRefresh>20)
                {
                    gameObjRefresh-=5;
                }
            }
        }
    }
      
    private void keyPressed() //锟斤拷锟斤拷锟斤拷应
    {
        int keyState=this.getKeyStates();
        if((keyState&GameCanvas.LEFT_PRESSED)!=0)
        {
            if(gco!=null)
            {
                gco.setCharAct(0,isOnFlat);
                gco.left(isOnFlat);
            }
            return;
        }
        if((keyState&GameCanvas.RIGHT_PRESSED)!=0)
        {
            if(gco!=null)
            {
                gco.setCharAct(1,isOnFlat);
                gco.right(isOnFlat);
            }
            return;
        }
        if(gco!=null)
        {
            gco.setCharAct(2,isOnFlat);
        }
    }
}

⌨️ 快捷键说明

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