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

📄 maincanvas2.java

📁 j2me 小游戏
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.*;

public class MainCanvas2 extends GameCanvas implements Runnable,CommandListener{
    public GameMIDlet game;
    private HPImage hpg;
    private Command back;
    private int dir=0;
    private Graphics g;
    private LayerManager lm;
    private int viewX;
    private int viewY;
    
    public Player player;
    private VolumeControl vc;
	private InputStream is;
  
    private HeroSprite hero1;
    private HeroSprite hero2;
    private Sprite texiao1;
    private Sprite texiao2;
    private Sprite dan;
    private Sprite daniao;
    private BossOne bs;
    private TiledLayer backtl;//back2;
    private int[] backtile={1,1};
    public int weight=0; 
    private Monster[] monster1Array=new Monster[6];
    private Monster2[] monster2Array=new Monster2[6];
 
    public MainCanvas2(GameMIDlet game){
        super(true);
        this.game=game;
        back=new Command("back",Command.BACK,1);
        addCommand(back);
        setCommandListener(this);
        setFullScreenMode(true);
        if(Configure.shero==0){
            hero1=new HeroSprite(ImageTools.creatImage("/juese/mingren/4mingrenchuchang44x53x10.png"),44,53);
            } else{
                hero1=new HeroSprite(ImageTools.creatImage("/juese/xiaoying/2putonggongji54X45X5.png"),54,45);
           }
           bs=new BossOne(ImageTools.creatImage("/juese/boss/3gongji62x51x9.png"),62,51,hero1);
           dan=new Sprite(ImageTools.creatImage("/juese/boss/tiexiao42x40x7.png"),42,40);
           daniao=new Sprite(ImageTools.creatImage("/juese/daduzi.png"),28,22);
           
             Image manster1Img=ImageTools.creatImage("/juese/manster1.png");
            Image manster2Img=ImageTools.creatImage("/juese/monster2.png");
            for(int i=0;i<monster1Array.length;i++){
                monster1Array[i]=new Monster(manster1Img,80,56,hero1);
            }
            for(int i=0;i<monster2Array.length;i++){
                monster2Array[i]=new Monster2(manster2Img,55,51,hero1);
            }
        
        g=getGraphics();
        lm=new LayerManager();
        hero1.setPosition(10,95);
        bs.setPosition(1500,95);
        dan.setPosition(1500,75);
        daniao.setPosition(0,0);
         for(int i=0;i<monster1Array.length;i++){
                monster1Array[i].setPosition(i*200+200,95);
            }
            for(int i=0;i<monster2Array.length;i++){
                monster2Array[i].setPosition(i*200+100,95);
            }
    
        backtl=new TiledLayer(2,1,ImageTools.creatImage("/back/yinghua799x208.png"),799,208);
             for(int i=0;i<2;i++){
            backtl.setCell(i,0,backtile[i]);
        }
        
      
        lm.append(hero1);
        lm.append(bs);
        lm.append(dan);
        lm.append(daniao);
        for(int i=0;i<monster1Array.length;i++){
            lm.append(monster1Array[i]);
        }
        for(int i=0;i<monster2Array.length;i++){
            lm.append(monster2Array[i]);
        }
       
        lm.append(backtl);
        hpg=new HPImage(g);
        new Thread(this).start();//启动线程
    }
    
    public void run(){
    while(true){
        try{
                Thread.sleep(78);
            }catch(Exception e){e.printStackTrace();}
            render();
            gameLogic();
           
         if(hero1.lifenum==0&&hero1.currentHp<=0){//判断主角死亡;
                
                lm.remove(hero1);
                game.show(game.OVER);
                try{
                    Music.player.stop();
		    is = (this.getClass()).getResourceAsStream("/music/over.mid");
			player = Manager.createPlayer(is,"audio/midi");
			player.realize();
			player.prefetch();
		    vc = (VolumeControl)player.getControl("VolumeControl");
            vc.setLevel(Configure.volume);
			player.start();
	
                }catch(Exception e){e.printStackTrace();}
                
                hero1=null;
                break;
               
        }
          if(bs.mhp<=0){
            lm.remove(bs);
            lm.remove(dan);
            dan.setPosition(-100,-100);
            game.show(game.VICTORY);
            Configure.score+=1500;
			bs.mhp=100;
           try{
                    Music.player.stop();
					is = (this.getClass()).getResourceAsStream("/music/win.mid");
			player = Manager.createPlayer(is,"audio/midi");
			player.realize();
			player.prefetch();
		    vc = (VolumeControl)player.getControl("VolumeControl");
            vc.setLevel(Configure.volume);
			player.start();
                }catch(Exception e){e.printStackTrace();}
            break;
            
        }
        
    }
    
    }
    public void render(){
        g.setColor(0xffffff);
        g.fillRect(0,0,getWidth(),getHeight());
        lm.setViewWindow(viewX,viewY,getWidth(),getHeight());
        lm.paint(g,0,0);
        hpg.showHP(hero1);//显示角色的血量和生命数。
        flushGraphics();
    }
    public void gameLogic(){//游戏逻辑
        daniao.move(3,0);
        dan.move(-3,0);
        if(dan.getX()<1350){
            dan.setPosition(1480,80);
        }
        if(hero1.collidesWith(dan,false)){
            hero1.currentHp-=2;
        }
         
        
        if(hero1.currentHp<=0&&hero1.lifenum>=1){//生命与血量的转换;
            hero1.lifenum-=1;
            hero1.currentHp=100;
        }
       
        for(int i=0;i<monster1Array.length;i++){
            if(monster1Array[i]!=null&&monster1Array[i].mhp<=0){
                monster1Array[i].setPosition(-100,-200);
                lm.remove(monster1Array[i]);
                Configure.score+=100;
				monster1Array[i].mhp=60;
               
            }
        }
        for(int i=0;i<monster2Array.length;i++){
            if(monster2Array[i]!=null&&monster2Array[i].mhp<=0){
                lm.remove(monster2Array[i]);
                monster2Array[i].setPosition(-100,-200);
                Configure.score+=100;
				monster2Array[i].mhp=60;
               
            }
        }

     
     
       
        weight=weight+3;
        hero1.move(0,weight);
        int key=getKeyStates();
         if(hero1.getY()>95){//落地
            hero1.move(0,-weight);
            weight=0;
        }
        if(key==0){//不按键状态
            if(hero1.herostate!=hero1.STAND_RIGHT){
                //hero1.setFrameSequence(hero1.stand1);
               hero1.herostate=hero1.STAND_RIGHT;
               if(Configure.shero==0){
                    hero1.setImage(ImageTools.creatImage("/juese/mingren/xiaoying29x51x2.png"),29,51);
               }else{
                    hero1.setImage(ImageTools.creatImage("/juese/xiaoying/zhanli.png"),21,48);
                  
               }
            }
        }
        if((key&GameCanvas.RIGHT_PRESSED)!=0){//往前走
            hero1. rightwalk();
            viewX=viewX+3;
            if(hero1.getX()>(backtl.getWidth()-hero1.getWidth())){
             hero1.move(-3,0);
            } 
            if(viewX>backtl.getWidth()-getWidth()){
                viewX=viewX-3;
            }
            if(hero1.getX()<getWidth()/2-hero1.getWidth()){
                viewX=viewX-3;
            }
    
          
	    }
        
      
          if((key&GameCanvas.LEFT_PRESSED)!=0){//往后走
            hero1.leftwalk();
            viewX=viewX-3;
            if(hero1.getX()<0){
                hero1.move(3,0);
            }
            if(viewX<0){
                viewX=viewX+3;
            }
            if(hero1.getX()>viewX+getWidth()/2){
                viewX=viewX+3;
            }
        }
        if((key&GameCanvas.FIRE_PRESSED)!=0 ){//攻击
           hero1.kit();
          /*  攻击怪物,怪物掉血; */
           for(int i=0;i<monster1Array.length;i++){
            if(hero1.collidesWith(monster1Array[i],false)){
                monster1Array[i].mhp-=6;
            }
        }
        for(int i=0;i<monster2Array.length;i++){
            if(hero1.collidesWith(monster2Array[i],false)){
                monster2Array[i].mhp-=5;
            }
        }
        if(hero1.collidesWith(bs,false)){
            bs.mhp-=5;
        }
      
           
           
        }
         if((key&GameCanvas.UP_PRESSED)!=0){//往上跳。
           hero1.jumpup(weight);
           
            
        } 
        if((key&GameCanvas.UP_PRESSED)!=0&&(key&GameCanvas.RIGHT_PRESSED)!=0){//前斜跳
           hero1.jumpright(weight);
            viewX=viewX+3;
              if(hero1.getX()>(backtl.getWidth()-hero1.getWidth())){
             hero1.move(-3,0);
            } 
            if(viewX>backtl.getWidth()-getWidth()){
                viewX=viewX-3;
            }
            if(hero1.getX()<getWidth()/2-hero1.getWidth()){
                viewX=viewX-3;
            } 
      
        } 
        if((key&GameCanvas.UP_PRESSED)!=0&&(key&GameCanvas.LEFT_PRESSED)!=0){//后跳
        hero1.jumpleft(weight);
         viewX=viewX-3;
            if(hero1.getX()<0){
                hero1.move(3,0);
            }
            if(viewX<0){
                viewX=viewX+3;
            }
            if(hero1.getX()>viewX+getWidth()/2){
                viewX=viewX+3;
            }
        }
        if((key&GameCanvas.GAME_A_PRESSED)!=0){//前跑
            hero1.runright();
            viewX=viewX+7;
              if(hero1.getX()>(backtl.getWidth()-hero1.getWidth())){
             hero1.move(-7,0);
            } 
            if(viewX>backtl.getWidth()-getWidth()){
                viewX=viewX-7;
            }
            if(hero1.getX()<getWidth()/2-hero1.getWidth()){
                viewX=viewX-7;
            } 
            
        }
     /*    if((key&GameCanvas.GAME_B_PRESSED)!=0){
            hero1.die();
            
        }
        if((key&GameCanvas.GAME_C_PRESSED)!=0){
            hero1.beikit();//被打
            
        }
        if((key&GameCanvas.GAME_D_PRESSED)!=0){//技能攻击
            hero1.jineng(weight); 
            lm.append(texiao2);
            texiao2.setPosition(hero1.getX()+33,hero1.getY());
            viewX=viewX+3;
            if(hero1.getX()>(backtl.getWidth()-hero1.getWidth())){
             hero1.move(-3,0);
            } 
            if(viewX>backtl.getWidth()-getWidth()){
                viewX=viewX-3;
            }
            if(hero1.getX()<getWidth()/2-hero1.getWidth()){
                viewX=viewX-3;
            }
        
        }
       //daniao.nextFrame();
         */
        hero1.nextFrame();
        bs.nextFrame();
        dan.nextFrame();
        daniao.nextFrame();
      for(int i=0;i<monster1Array.length;i++){
            monster1Array[i].act();
            monster1Array[i].nextFrame();
        }
        for(int i=0;i<monster2Array.length;i++){
            monster2Array[i].act();
            monster2Array[i].nextFrame();
       
         
        }
    }
    
    public void commandAction(Command c,Displayable d){//软件接口方法
        if(c==back){
        game.show(game.MENU);
        try{
        Music.player.stop();}catch(Exception e){e.printStackTrace();}
        }
    }
   
}

⌨️ 快捷键说明

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